From 671b1cd470fb8fee1b48e7d715db9a45b3aa4257 Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Mon, 16 Mar 2026 14:35:51 +0100 Subject: [PATCH 01/41] chore(ci): Pin GitHub Actions to commit SHAs Pin GitHub Actions references to full commit SHAs instead of version tags to reduce supply chain risk from tag retargeting. Update actions/checkout to v6.0.2, actions/setup-python to v6.2.0, actions/setup-node to v6.3.0, actions/stale to v10.2.0, and dessant/lock-threads to v6.0.0. --- .github/workflows/ci.yml | 8 ++++---- .github/workflows/claude-code-review.yml | 2 +- .github/workflows/claude.yml | 2 +- .github/workflows/close-incomplete-issues.yml | 2 +- .github/workflows/close-stale-issues.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/lock-threads.yml | 2 +- .github/workflows/update-translation-strings.yml | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b5ddfc724..e51de2e8c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,7 @@ jobs: steps: - name: Check out repo - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Check Python linting & PEP8 compliance uses: astral-sh/ruff-action@4919ec5cf1f49eff0871dbcea0da843445b837e6 # v3.6.1 @@ -63,12 +63,12 @@ jobs: src: "netbox/" - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.python-version }} - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: ${{ matrix.node-version }} @@ -76,7 +76,7 @@ jobs: run: npm install -g yarn - name: Setup Node.js with Yarn Caching - uses: actions/setup-node@v4 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: ${{ matrix.node-version }} cache: yarn diff --git a/.github/workflows/claude-code-review.yml b/.github/workflows/claude-code-review.yml index 410360a53..5ddb3c00a 100644 --- a/.github/workflows/claude-code-review.yml +++ b/.github/workflows/claude-code-review.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 1 diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml index 235de3d36..ca8b8ce97 100644 --- a/.github/workflows/claude.yml +++ b/.github/workflows/claude.yml @@ -26,7 +26,7 @@ jobs: actions: read # Required for Claude to read CI results on PRs steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 1 diff --git a/.github/workflows/close-incomplete-issues.yml b/.github/workflows/close-incomplete-issues.yml index 1b3adf901..f597c5036 100644 --- a/.github/workflows/close-incomplete-issues.yml +++ b/.github/workflows/close-incomplete-issues.yml @@ -15,7 +15,7 @@ jobs: if: github.repository == 'netbox-community/netbox' runs-on: ubuntu-latest steps: - - uses: actions/stale@v9 + - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 with: close-issue-message: > This issue is being closed as no further information has been provided. If diff --git a/.github/workflows/close-stale-issues.yml b/.github/workflows/close-stale-issues.yml index 723fd6241..215de2641 100644 --- a/.github/workflows/close-stale-issues.yml +++ b/.github/workflows/close-stale-issues.yml @@ -16,7 +16,7 @@ jobs: if: github.repository == 'netbox-community/netbox' runs-on: ubuntu-latest steps: - - uses: actions/stale@v9 + - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 with: # General parameters operations-per-run: 200 diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 8d5a91cff..7c6b5f1ee 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -27,7 +27,7 @@ jobs: build-mode: none steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Initialize CodeQL uses: github/codeql-action/init@v4 diff --git a/.github/workflows/lock-threads.yml b/.github/workflows/lock-threads.yml index 9a3460767..e88b82097 100644 --- a/.github/workflows/lock-threads.yml +++ b/.github/workflows/lock-threads.yml @@ -19,6 +19,6 @@ jobs: if: github.repository == 'netbox-community/netbox' runs-on: ubuntu-latest steps: - - uses: dessant/lock-threads@v6.0.0 + - uses: dessant/lock-threads@7266a7ce5c1df01b1c6db85bf8cd86c737dadbe7 # v6.0.0 with: discussion-inactive-days: 180 diff --git a/.github/workflows/update-translation-strings.yml b/.github/workflows/update-translation-strings.yml index 303a36d4a..f38b518fc 100644 --- a/.github/workflows/update-translation-strings.yml +++ b/.github/workflows/update-translation-strings.yml @@ -27,12 +27,12 @@ jobs: private-key: ${{ secrets.HOUSEKEEPING_SECRET_KEY }} - name: Check out repo - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: token: ${{ steps.app-token.outputs.token }} - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: 3.12 From 268ef4f59ff3473e38e5a2868d599a95c83483ff Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Mon, 16 Mar 2026 15:14:23 +0100 Subject: [PATCH 02/41] chore(ci): Pin CodeQL action to commit SHA Pin GitHub/codeql-action references to full commit SHA v4.33.0 instead of version tag to reduce supply chain risk from tag retargeting. --- .github/workflows/codeql.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 7c6b5f1ee..ff6969108 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -30,13 +30,13 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Initialize CodeQL - uses: github/codeql-action/init@v4 + uses: github/codeql-action/init@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} config-file: .github/codeql/codeql-config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v4 + uses: github/codeql-action/analyze@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0 with: category: "/language:${{matrix.language}}" From 9f1673426634cdf23ac3cb909805cc56aa6ccfac Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Fri, 20 Mar 2026 13:40:40 +0100 Subject: [PATCH 03/41] fix(utilities): Allow single-digit port numbers in URL validator Change port number regex from `\d{2,5}` to `\d{1,5}` to permit valid single-digit ports (1-9). This aligns with RFC 3986 and fixes validation for URLs using ports like :8 or :9. Fixes #21698 --- netbox/utilities/validators.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/utilities/validators.py b/netbox/utilities/validators.py index 4b7529472..966bdf40f 100644 --- a/netbox/utilities/validators.py +++ b/netbox/utilities/validators.py @@ -34,7 +34,7 @@ class EnhancedURLValidator(URLValidator): r'^(?:[a-z0-9\.\-\+]*)://' # Scheme (enforced separately) r'(?:\S+(?::\S*)?@)?' # HTTP basic authentication r'(?:' + '|'.join(host_res) + ')' # IPv4, IPv6, FQDN, or hostname - r'(?::\d{2,5})?' # Port number + r'(?::\d{1,5})?' # Port number r'(?:[/?#][^\s]*)?' # Path r'\Z', re.IGNORECASE) schemes = None From 3ab061370874f032fac344f4da1d7d8d5d786256 Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Tue, 24 Mar 2026 00:07:20 +0100 Subject: [PATCH 04/41] fix(circuits): Add ProviderAccount fieldsets (#21708) --- netbox/circuits/forms/model_forms.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/netbox/circuits/forms/model_forms.py b/netbox/circuits/forms/model_forms.py index 63f6a4364..5a48455d8 100644 --- a/netbox/circuits/forms/model_forms.py +++ b/netbox/circuits/forms/model_forms.py @@ -68,10 +68,14 @@ class ProviderAccountForm(PrimaryModelForm): quick_add=True ) + fieldsets = ( + FieldSet('provider', 'account', 'name', 'description', 'tags'), + ) + class Meta: model = ProviderAccount fields = [ - 'provider', 'name', 'account', 'description', 'owner', 'comments', 'tags', + 'provider', 'account', 'name', 'description', 'owner', 'comments', 'tags', ] From e44c0a211900f41dcb9354bece6a458f87f25995 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 24 Mar 2026 05:27:47 +0000 Subject: [PATCH 05/41] Update source translation strings --- netbox/translations/en/LC_MESSAGES/django.po | 52 ++++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index 95903e9da..f12b2d4aa 100644 --- a/netbox/translations/en/LC_MESSAGES/django.po +++ b/netbox/translations/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-18 05:28+0000\n" +"POT-Creation-Date: 2026-03-24 05:27+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -322,9 +322,9 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:232 #: netbox/circuits/forms/filtersets.py:259 #: netbox/circuits/forms/filtersets.py:306 -#: netbox/circuits/forms/model_forms.py:139 -#: netbox/circuits/forms/model_forms.py:162 -#: netbox/circuits/forms/model_forms.py:260 +#: netbox/circuits/forms/model_forms.py:143 +#: netbox/circuits/forms/model_forms.py:166 +#: netbox/circuits/forms/model_forms.py:264 #: netbox/circuits/tables/circuits.py:103 #: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 #: netbox/templates/circuits/circuit.html:15 @@ -387,8 +387,8 @@ msgstr "" #: netbox/circuits/forms/bulk_import.py:248 #: netbox/circuits/forms/filtersets.py:384 #: netbox/circuits/forms/filtersets.py:390 -#: netbox/circuits/forms/model_forms.py:338 -#: netbox/circuits/forms/model_forms.py:353 +#: netbox/circuits/forms/model_forms.py:342 +#: netbox/circuits/forms/model_forms.py:357 #: netbox/circuits/tables/virtual_circuits.py:84 #: netbox/templates/circuits/virtualcircuit.html:20 #: netbox/templates/circuits/virtualcircuittermination.html:38 @@ -429,8 +429,8 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:385 #: netbox/circuits/forms/filtersets.py:408 #: netbox/circuits/forms/model_forms.py:65 -#: netbox/circuits/forms/model_forms.py:80 -#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:84 +#: netbox/circuits/forms/model_forms.py:115 #: netbox/circuits/tables/circuits.py:56 netbox/circuits/tables/circuits.py:107 #: netbox/circuits/tables/circuits.py:192 #: netbox/circuits/tables/providers.py:67 @@ -548,8 +548,8 @@ msgstr "" #: netbox/circuits/forms/bulk_import.py:213 #: netbox/circuits/forms/filtersets.py:159 #: netbox/circuits/forms/filtersets.py:357 -#: netbox/circuits/forms/model_forms.py:117 -#: netbox/circuits/forms/model_forms.py:326 +#: netbox/circuits/forms/model_forms.py:121 +#: netbox/circuits/forms/model_forms.py:330 #: netbox/templates/circuits/virtualcircuit.html:31 #: netbox/templates/circuits/virtualcircuittermination.html:34 msgid "Provider account" @@ -715,7 +715,7 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:159 #: netbox/circuits/forms/filtersets.py:217 -#: netbox/circuits/forms/model_forms.py:136 +#: netbox/circuits/forms/model_forms.py:140 #: netbox/templates/circuits/circuit.html:38 #: netbox/wireless/forms/bulk_edit.py:121 #: netbox/wireless/forms/filtersets.py:137 @@ -735,7 +735,7 @@ msgid "Distance unit" msgstr "" #: netbox/circuits/forms/bulk_edit.py:173 -#: netbox/circuits/forms/model_forms.py:141 +#: netbox/circuits/forms/model_forms.py:145 msgid "Service Parameters" msgstr "" @@ -784,9 +784,9 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:175 #: netbox/circuits/forms/bulk_edit.py:317 -#: netbox/circuits/forms/model_forms.py:142 -#: netbox/circuits/forms/model_forms.py:238 -#: netbox/circuits/forms/model_forms.py:340 +#: netbox/circuits/forms/model_forms.py:146 +#: netbox/circuits/forms/model_forms.py:242 +#: netbox/circuits/forms/model_forms.py:344 #: netbox/dcim/forms/model_forms.py:157 netbox/dcim/forms/model_forms.py:198 #: netbox/dcim/forms/model_forms.py:285 netbox/dcim/forms/model_forms.py:342 #: netbox/dcim/forms/model_forms.py:883 netbox/dcim/forms/model_forms.py:1897 @@ -894,7 +894,7 @@ msgid "Description" msgstr "" #: netbox/circuits/forms/bulk_edit.py:192 -#: netbox/circuits/forms/model_forms.py:170 +#: netbox/circuits/forms/model_forms.py:174 #: netbox/dcim/forms/bulk_import.py:1419 netbox/dcim/forms/bulk_import.py:1444 msgid "Termination type" msgstr "" @@ -902,7 +902,7 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:195 #: netbox/circuits/forms/bulk_import.py:133 #: netbox/circuits/forms/filtersets.py:234 -#: netbox/circuits/forms/model_forms.py:173 +#: netbox/circuits/forms/model_forms.py:177 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/dcim/cable.html:72 netbox/templates/dcim/cable.html:76 #: netbox/vpn/forms/bulk_import.py:99 netbox/vpn/forms/filtersets.py:87 @@ -926,7 +926,7 @@ msgid "Mark connected" msgstr "" #: netbox/circuits/forms/bulk_edit.py:220 -#: netbox/circuits/forms/model_forms.py:184 +#: netbox/circuits/forms/model_forms.py:188 #: netbox/templates/circuits/inc/circuit_termination_fields.html:55 #: netbox/templates/dcim/frontport.html:118 #: netbox/templates/dcim/interface.html:268 @@ -935,7 +935,7 @@ msgid "Circuit Termination" msgstr "" #: netbox/circuits/forms/bulk_edit.py:222 -#: netbox/circuits/forms/model_forms.py:186 +#: netbox/circuits/forms/model_forms.py:190 msgid "Termination Details" msgstr "" @@ -959,7 +959,7 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:272 #: netbox/circuits/forms/filtersets.py:365 #: netbox/circuits/forms/filtersets.py:403 -#: netbox/circuits/forms/model_forms.py:321 +#: netbox/circuits/forms/model_forms.py:325 #: netbox/circuits/tables/virtual_circuits.py:51 #: netbox/circuits/tables/virtual_circuits.py:95 msgid "Provider network" @@ -968,7 +968,7 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:326 #: netbox/circuits/forms/bulk_import.py:253 #: netbox/circuits/forms/filtersets.py:393 -#: netbox/circuits/forms/model_forms.py:360 netbox/dcim/forms/bulk_edit.py:351 +#: netbox/circuits/forms/model_forms.py:364 netbox/dcim/forms/bulk_edit.py:351 #: netbox/dcim/forms/bulk_edit.py:1245 netbox/dcim/forms/bulk_edit.py:1681 #: netbox/dcim/forms/bulk_import.py:270 netbox/dcim/forms/bulk_import.py:1199 #: netbox/dcim/forms/filtersets.py:404 netbox/dcim/forms/filtersets.py:879 @@ -1089,7 +1089,7 @@ msgid "Operational role" msgstr "" #: netbox/circuits/forms/bulk_import.py:258 -#: netbox/circuits/forms/model_forms.py:363 +#: netbox/circuits/forms/model_forms.py:367 #: netbox/circuits/tables/virtual_circuits.py:108 #: netbox/dcim/forms/bulk_import.py:1330 netbox/dcim/forms/model_forms.py:1308 #: netbox/dcim/forms/model_forms.py:1577 netbox/dcim/forms/model_forms.py:1758 @@ -1308,7 +1308,7 @@ msgid "Assignment" msgstr "" #: netbox/circuits/forms/filtersets.py:311 -#: netbox/circuits/forms/model_forms.py:250 +#: netbox/circuits/forms/model_forms.py:254 #: netbox/circuits/tables/circuits.py:187 netbox/dcim/forms/bulk_edit.py:118 #: netbox/dcim/forms/bulk_import.py:115 netbox/dcim/forms/model_forms.py:135 #: netbox/dcim/tables/sites.py:69 netbox/extras/forms/filtersets.py:600 @@ -1344,16 +1344,16 @@ msgstr "" msgid "Group" msgstr "" -#: netbox/circuits/forms/model_forms.py:237 +#: netbox/circuits/forms/model_forms.py:241 #: netbox/templates/circuits/circuitgroup.html:25 msgid "Circuit Group" msgstr "" -#: netbox/circuits/forms/model_forms.py:257 +#: netbox/circuits/forms/model_forms.py:261 msgid "Circuit type" msgstr "" -#: netbox/circuits/forms/model_forms.py:268 +#: netbox/circuits/forms/model_forms.py:272 msgid "Group Assignment" msgstr "" From 4e479c547fbbbab3828a8246ea5824bcf4f01111 Mon Sep 17 00:00:00 2001 From: pobradovic08 Date: Tue, 24 Mar 2026 10:51:26 +0100 Subject: [PATCH 06/41] Closes #21480: Add 1.6T Ethernet interface types (#21723) Add support for IEEE 802.3dj 1.6T fixed interface types and published 1.6T pluggable form factors. This adds 1.6TBASE-CR8, 1.6TBASE-KR8, 1.6TBASE-DR8, and 1.6TBASE-DR8-2, plus OSFP1600, OSFP1600-RHS, and QSFP-DD1600 transceiver types. --- netbox/dcim/choices.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index d4f5a7310..84b22119a 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -1003,6 +1003,11 @@ class InterfaceTypeChoices(ChoiceSet): TYPE_800GE_SR8 = '800gbase-sr8' TYPE_800GE_VR8 = '800gbase-vr8' + # 1.6 Tbps Ethernet + TYPE_1TE_CR8 = '1.6tbase-cr8' + TYPE_1TE_DR8 = '1.6tbase-dr8' + TYPE_1TE_DR8_2 = '1.6tbase-dr8-2' + # Ethernet (modular) TYPE_100ME_SFP = '100base-x-sfp' TYPE_1GE_GBIC = '1000base-x-gbic' @@ -1036,6 +1041,9 @@ class InterfaceTypeChoices(ChoiceSet): TYPE_400GE_CFP8 = '400gbase-x-cfp8' TYPE_800GE_QSFP_DD = '800gbase-x-qsfpdd' TYPE_800GE_OSFP = '800gbase-x-osfp' + TYPE_1TE_OSFP1600 = '1.6tbase-x-osfp1600' + TYPE_1TE_OSFP1600_RHS = '1.6tbase-x-osfp1600-rhs' + TYPE_1TE_QSFP_DD1600 = '1.6tbase-x-qsfpdd1600' # Backplane Ethernet TYPE_1GE_KX = '1000base-kx' @@ -1049,6 +1057,7 @@ class InterfaceTypeChoices(ChoiceSet): TYPE_100GE_KP4 = '100gbase-kp4' TYPE_100GE_KR2 = '100gbase-kr2' TYPE_100GE_KR4 = '100gbase-kr4' + TYPE_1TE_KR8 = '1.6tbase-kr8' # Wireless TYPE_80211A = 'ieee802.11a' @@ -1298,6 +1307,14 @@ class InterfaceTypeChoices(ChoiceSet): (TYPE_800GE_VR8, '800GBASE-VR8 (800GE)'), ) ), + ( + _('1.6 Tbps Ethernet'), + ( + (TYPE_1TE_CR8, '1.6TBASE-CR8 (1.6TE)'), + (TYPE_1TE_DR8, '1.6TBASE-DR8 (1.6TE)'), + (TYPE_1TE_DR8_2, '1.6TBASE-DR8-2 (1.6TE)'), + ) + ), ( _('Pluggable transceivers'), ( @@ -1333,6 +1350,9 @@ class InterfaceTypeChoices(ChoiceSet): (TYPE_400GE_OSFP_RHS, 'OSFP-RHS (400GE)'), (TYPE_800GE_OSFP, 'OSFP (800GE)'), (TYPE_800GE_QSFP_DD, 'QSFP-DD (800GE)'), + (TYPE_1TE_OSFP1600, 'OSFP1600 (1.6TE)'), + (TYPE_1TE_OSFP1600_RHS, 'OSFP1600-RHS (1.6TE)'), + (TYPE_1TE_QSFP_DD1600, 'QSFP-DD1600 (1.6TE)'), ) ), ( @@ -1349,6 +1369,7 @@ class InterfaceTypeChoices(ChoiceSet): (TYPE_100GE_KP4, '100GBASE-KP4 (100GE)'), (TYPE_100GE_KR2, '100GBASE-KR2 (100GE)'), (TYPE_100GE_KR4, '100GBASE-KR4 (100GE)'), + (TYPE_1TE_KR8, '1.6TBASE-KR8 (1.6TE)'), ) ), ( From e04986617c67f16e02d5723b36808c65b386685f Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 25 Mar 2026 05:28:00 +0000 Subject: [PATCH 07/41] Update source translation strings --- netbox/translations/en/LC_MESSAGES/django.po | 204 ++++++++++--------- 1 file changed, 104 insertions(+), 100 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index f12b2d4aa..65f4a6371 100644 --- a/netbox/translations/en/LC_MESSAGES/django.po +++ b/netbox/translations/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-24 05:27+0000\n" +"POT-Creation-Date: 2026-03-25 05:27+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -41,9 +41,9 @@ msgstr "" #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 #: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204 -#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1933 -#: netbox/dcim/choices.py:1991 netbox/dcim/choices.py:2058 -#: netbox/dcim/choices.py:2080 netbox/virtualization/choices.py:20 +#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1954 +#: netbox/dcim/choices.py:2012 netbox/dcim/choices.py:2079 +#: netbox/dcim/choices.py:2101 netbox/virtualization/choices.py:20 #: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18 #: netbox/vpn/choices.py:281 msgid "Planned" @@ -57,8 +57,8 @@ msgstr "" #: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22 #: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155 #: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256 -#: netbox/dcim/choices.py:1990 netbox/dcim/choices.py:2057 -#: netbox/dcim/choices.py:2079 netbox/extras/tables/tables.py:642 +#: netbox/dcim/choices.py:2011 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:2100 netbox/extras/tables/tables.py:642 #: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49 #: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154 #: netbox/templates/extras/configcontext.html:29 @@ -70,8 +70,8 @@ msgid "Active" msgstr "" #: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202 -#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:1989 -#: netbox/dcim/choices.py:2059 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:2010 +#: netbox/dcim/choices.py:2080 netbox/dcim/choices.py:2099 #: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44 msgid "Offline" msgstr "" @@ -84,7 +84,7 @@ msgstr "" msgid "Decommissioned" msgstr "" -#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2002 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2023 #: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:153 #: netbox/tenancy/choices.py:17 msgid "Primary" @@ -1944,7 +1944,7 @@ msgstr "" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35 #: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259 -#: netbox/dcim/choices.py:1992 netbox/dcim/choices.py:2082 +#: netbox/dcim/choices.py:2013 netbox/dcim/choices.py:2103 #: netbox/virtualization/choices.py:48 msgid "Failed" msgstr "" @@ -2129,7 +2129,7 @@ msgid "User name" msgstr "" #: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47 -#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2040 +#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2061 #: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386 #: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712 #: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233 @@ -2321,7 +2321,7 @@ msgstr "" msgid "Rack Elevations" msgstr "" -#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1911 +#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1932 #: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340 #: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144 #: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320 @@ -2988,8 +2988,8 @@ msgid "Staging" msgstr "" #: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208 -#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1934 -#: netbox/dcim/choices.py:2083 netbox/virtualization/choices.py:23 +#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1955 +#: netbox/dcim/choices.py:2104 netbox/virtualization/choices.py:23 #: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282 msgid "Decommissioning" msgstr "" @@ -3055,7 +3055,7 @@ msgstr "" msgid "Millimeters" msgstr "" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1956 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1977 msgid "Inches" msgstr "" @@ -3131,7 +3131,7 @@ msgid "Rear" msgstr "" #: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258 -#: netbox/dcim/choices.py:2081 netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:2102 netbox/virtualization/choices.py:47 msgid "Staged" msgstr "" @@ -3164,7 +3164,7 @@ msgid "Top to bottom" msgstr "" #: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280 -#: netbox/dcim/choices.py:1566 +#: netbox/dcim/choices.py:1587 msgid "Passive" msgstr "" @@ -3193,8 +3193,8 @@ msgid "Proprietary" msgstr "" #: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853 -#: netbox/dcim/choices.py:1478 netbox/dcim/choices.py:1480 -#: netbox/dcim/choices.py:1716 netbox/dcim/choices.py:1718 +#: netbox/dcim/choices.py:1499 netbox/dcim/choices.py:1501 +#: netbox/dcim/choices.py:1737 netbox/dcim/choices.py:1739 #: netbox/netbox/navigation/menu.py:212 msgid "Other" msgstr "" @@ -3207,11 +3207,11 @@ msgstr "" msgid "Physical" msgstr "" -#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1153 +#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1162 msgid "Virtual" msgstr "" -#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1355 +#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 #: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125 #: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150 @@ -3220,11 +3220,11 @@ msgstr "" msgid "Wireless" msgstr "" -#: netbox/dcim/choices.py:1151 +#: netbox/dcim/choices.py:1160 msgid "Virtual interfaces" msgstr "" -#: netbox/dcim/choices.py:1154 netbox/dcim/forms/bulk_edit.py:1399 +#: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 #: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107 #: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:117 #: netbox/virtualization/forms/bulk_edit.py:177 @@ -3233,67 +3233,71 @@ msgstr "" msgid "Bridge" msgstr "" -#: netbox/dcim/choices.py:1155 +#: netbox/dcim/choices.py:1164 msgid "Link Aggregation Group (LAG)" msgstr "" -#: netbox/dcim/choices.py:1159 +#: netbox/dcim/choices.py:1168 msgid "FastEthernet (100 Mbps)" msgstr "" -#: netbox/dcim/choices.py:1168 +#: netbox/dcim/choices.py:1177 msgid "GigabitEthernet (1 Gbps)" msgstr "" -#: netbox/dcim/choices.py:1186 +#: netbox/dcim/choices.py:1195 msgid "2.5/5 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1193 +#: netbox/dcim/choices.py:1202 msgid "10 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1218 msgid "25 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1228 msgid "40 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1230 +#: netbox/dcim/choices.py:1239 msgid "50 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1240 +#: netbox/dcim/choices.py:1249 msgid "100 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1270 msgid "200 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1275 +#: netbox/dcim/choices.py:1284 msgid "400 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1293 +#: netbox/dcim/choices.py:1302 msgid "800 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1302 +#: netbox/dcim/choices.py:1311 +msgid "1.6 Tbps Ethernet" +msgstr "" + +#: netbox/dcim/choices.py:1319 msgid "Pluggable transceivers" msgstr "" -#: netbox/dcim/choices.py:1339 +#: netbox/dcim/choices.py:1359 msgid "Backplane Ethernet" msgstr "" -#: netbox/dcim/choices.py:1371 +#: netbox/dcim/choices.py:1392 msgid "Cellular" msgstr "" -#: netbox/dcim/choices.py:1423 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/choices.py:1444 netbox/dcim/forms/filtersets.py:425 #: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112 #: netbox/dcim/forms/filtersets.py:1910 #: netbox/templates/dcim/inventoryitem.html:56 @@ -3301,254 +3305,254 @@ msgstr "" msgid "Serial" msgstr "" -#: netbox/dcim/choices.py:1438 +#: netbox/dcim/choices.py:1459 msgid "Coaxial" msgstr "" -#: netbox/dcim/choices.py:1459 +#: netbox/dcim/choices.py:1480 msgid "Stacking" msgstr "" -#: netbox/dcim/choices.py:1511 +#: netbox/dcim/choices.py:1532 msgid "Half" msgstr "" -#: netbox/dcim/choices.py:1512 +#: netbox/dcim/choices.py:1533 msgid "Full" msgstr "" -#: netbox/dcim/choices.py:1513 netbox/netbox/preferences.py:32 +#: netbox/dcim/choices.py:1534 netbox/netbox/preferences.py:32 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "" -#: netbox/dcim/choices.py:1525 +#: netbox/dcim/choices.py:1546 msgid "Access" msgstr "" -#: netbox/dcim/choices.py:1526 netbox/ipam/tables/vlans.py:148 +#: netbox/dcim/choices.py:1547 netbox/ipam/tables/vlans.py:148 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "" -#: netbox/dcim/choices.py:1527 +#: netbox/dcim/choices.py:1548 msgid "Tagged (All)" msgstr "" -#: netbox/dcim/choices.py:1528 netbox/templates/ipam/vlan_edit.html:26 +#: netbox/dcim/choices.py:1549 netbox/templates/ipam/vlan_edit.html:26 msgid "Q-in-Q (802.1ad)" msgstr "" -#: netbox/dcim/choices.py:1557 +#: netbox/dcim/choices.py:1578 msgid "IEEE Standard" msgstr "" -#: netbox/dcim/choices.py:1568 +#: netbox/dcim/choices.py:1589 msgid "Passive 24V (2-pair)" msgstr "" -#: netbox/dcim/choices.py:1569 +#: netbox/dcim/choices.py:1590 msgid "Passive 24V (4-pair)" msgstr "" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1591 msgid "Passive 48V (2-pair)" msgstr "" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1592 msgid "Passive 48V (4-pair)" msgstr "" -#: netbox/dcim/choices.py:1644 +#: netbox/dcim/choices.py:1665 msgid "Copper" msgstr "" -#: netbox/dcim/choices.py:1667 +#: netbox/dcim/choices.py:1688 msgid "Fiber Optic" msgstr "" -#: netbox/dcim/choices.py:1703 netbox/dcim/choices.py:1917 +#: netbox/dcim/choices.py:1724 netbox/dcim/choices.py:1938 msgid "USB" msgstr "" -#: netbox/dcim/choices.py:1759 +#: netbox/dcim/choices.py:1780 msgid "Single" msgstr "" -#: netbox/dcim/choices.py:1761 +#: netbox/dcim/choices.py:1782 msgid "1C1P" msgstr "" -#: netbox/dcim/choices.py:1762 +#: netbox/dcim/choices.py:1783 msgid "1C2P" msgstr "" -#: netbox/dcim/choices.py:1763 +#: netbox/dcim/choices.py:1784 msgid "1C4P" msgstr "" -#: netbox/dcim/choices.py:1764 +#: netbox/dcim/choices.py:1785 msgid "1C6P" msgstr "" -#: netbox/dcim/choices.py:1765 +#: netbox/dcim/choices.py:1786 msgid "1C8P" msgstr "" -#: netbox/dcim/choices.py:1766 +#: netbox/dcim/choices.py:1787 msgid "1C12P" msgstr "" -#: netbox/dcim/choices.py:1767 +#: netbox/dcim/choices.py:1788 msgid "1C16P" msgstr "" -#: netbox/dcim/choices.py:1771 +#: netbox/dcim/choices.py:1792 msgid "Trunk" msgstr "" -#: netbox/dcim/choices.py:1773 +#: netbox/dcim/choices.py:1794 msgid "2C1P trunk" msgstr "" -#: netbox/dcim/choices.py:1774 +#: netbox/dcim/choices.py:1795 msgid "2C2P trunk" msgstr "" -#: netbox/dcim/choices.py:1775 +#: netbox/dcim/choices.py:1796 msgid "2C4P trunk" msgstr "" -#: netbox/dcim/choices.py:1776 +#: netbox/dcim/choices.py:1797 msgid "2C4P trunk (shuffle)" msgstr "" -#: netbox/dcim/choices.py:1777 +#: netbox/dcim/choices.py:1798 msgid "2C6P trunk" msgstr "" -#: netbox/dcim/choices.py:1778 +#: netbox/dcim/choices.py:1799 msgid "2C8P trunk" msgstr "" -#: netbox/dcim/choices.py:1779 +#: netbox/dcim/choices.py:1800 msgid "2C12P trunk" msgstr "" -#: netbox/dcim/choices.py:1780 +#: netbox/dcim/choices.py:1801 msgid "4C1P trunk" msgstr "" -#: netbox/dcim/choices.py:1781 +#: netbox/dcim/choices.py:1802 msgid "4C2P trunk" msgstr "" -#: netbox/dcim/choices.py:1782 +#: netbox/dcim/choices.py:1803 msgid "4C4P trunk" msgstr "" -#: netbox/dcim/choices.py:1783 +#: netbox/dcim/choices.py:1804 msgid "4C4P trunk (shuffle)" msgstr "" -#: netbox/dcim/choices.py:1784 +#: netbox/dcim/choices.py:1805 msgid "4C6P trunk" msgstr "" -#: netbox/dcim/choices.py:1785 +#: netbox/dcim/choices.py:1806 msgid "4C8P trunk" msgstr "" -#: netbox/dcim/choices.py:1786 +#: netbox/dcim/choices.py:1807 msgid "8C4P trunk" msgstr "" -#: netbox/dcim/choices.py:1790 +#: netbox/dcim/choices.py:1811 msgid "Breakout" msgstr "" -#: netbox/dcim/choices.py:1792 +#: netbox/dcim/choices.py:1813 msgid "1C4P:4C1P breakout" msgstr "" -#: netbox/dcim/choices.py:1793 +#: netbox/dcim/choices.py:1814 msgid "1C6P:6C1P breakout" msgstr "" -#: netbox/dcim/choices.py:1794 +#: netbox/dcim/choices.py:1815 msgid "2C4P:8C1P breakout (shuffle)" msgstr "" -#: netbox/dcim/choices.py:1852 +#: netbox/dcim/choices.py:1873 msgid "Copper - Twisted Pair (UTP/STP)" msgstr "" -#: netbox/dcim/choices.py:1866 +#: netbox/dcim/choices.py:1887 msgid "Copper - Twinax (DAC)" msgstr "" -#: netbox/dcim/choices.py:1873 +#: netbox/dcim/choices.py:1894 msgid "Copper - Coaxial" msgstr "" -#: netbox/dcim/choices.py:1888 +#: netbox/dcim/choices.py:1909 msgid "Fiber - Multimode" msgstr "" -#: netbox/dcim/choices.py:1899 +#: netbox/dcim/choices.py:1920 msgid "Fiber - Single-mode" msgstr "" -#: netbox/dcim/choices.py:1907 +#: netbox/dcim/choices.py:1928 msgid "Fiber - Other" msgstr "" -#: netbox/dcim/choices.py:1932 netbox/dcim/forms/filtersets.py:1402 +#: netbox/dcim/choices.py:1953 netbox/dcim/forms/filtersets.py:1402 msgid "Connected" msgstr "" -#: netbox/dcim/choices.py:1951 netbox/netbox/choices.py:177 +#: netbox/dcim/choices.py:1972 netbox/netbox/choices.py:177 msgid "Kilometers" msgstr "" -#: netbox/dcim/choices.py:1952 netbox/netbox/choices.py:178 +#: netbox/dcim/choices.py:1973 netbox/netbox/choices.py:178 #: netbox/templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "" -#: netbox/dcim/choices.py:1953 +#: netbox/dcim/choices.py:1974 msgid "Centimeters" msgstr "" -#: netbox/dcim/choices.py:1954 netbox/netbox/choices.py:179 +#: netbox/dcim/choices.py:1975 netbox/netbox/choices.py:179 msgid "Miles" msgstr "" -#: netbox/dcim/choices.py:1955 netbox/netbox/choices.py:180 +#: netbox/dcim/choices.py:1976 netbox/netbox/choices.py:180 #: netbox/templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "" -#: netbox/dcim/choices.py:2003 +#: netbox/dcim/choices.py:2024 msgid "Redundant" msgstr "" -#: netbox/dcim/choices.py:2024 +#: netbox/dcim/choices.py:2045 msgid "Single phase" msgstr "" -#: netbox/dcim/choices.py:2025 +#: netbox/dcim/choices.py:2046 msgid "Three-phase" msgstr "" -#: netbox/dcim/choices.py:2041 netbox/extras/choices.py:53 +#: netbox/dcim/choices.py:2062 netbox/extras/choices.py:53 #: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70 #: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "" -#: netbox/dcim/choices.py:2042 +#: netbox/dcim/choices.py:2063 msgid "Faulty" msgstr "" From aa01c16db02b2110b772f2a61b0b4f5e6f892c39 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 25 Mar 2026 10:08:54 -0400 Subject: [PATCH 08/41] #20923: Migrate remaining DCIM views to new UI layouts (#21706) --- netbox/dcim/ui/panels.py | 342 +++++++++++++- netbox/dcim/views.py | 339 +++++++++++++- netbox/templates/dcim/cable.html | 86 ---- netbox/templates/dcim/consoleport.html | 87 ---- netbox/templates/dcim/consoleserverport.html | 87 ---- netbox/templates/dcim/devicebay.html | 62 --- netbox/templates/dcim/frontport.html | 148 ------ netbox/templates/dcim/interface.html | 436 ------------------ .../dcim/interface/attrs/mac_address.html | 3 + .../templates/dcim/interface/attrs/speed.html | 2 + netbox/templates/dcim/inventoryitem.html | 73 --- netbox/templates/dcim/inventoryitemrole.html | 52 --- netbox/templates/dcim/macaddress.html | 54 --- netbox/templates/dcim/modulebay.html | 82 ---- .../dcim/panels/cable_termination_a.html | 6 + .../dcim/panels/cable_termination_b.html | 6 + .../panels/component_inventory_items.html | 40 ++ netbox/templates/dcim/panels/connection.html | 96 ++++ .../dcim/panels/front_port_mappings.html | 29 ++ .../dcim/panels/installed_device.html | 21 + .../dcim/panels/installed_module.html | 33 ++ .../dcim/panels/interface_connection.html | 105 +++++ .../panels/interface_virtual_circuit.html | 35 ++ .../dcim/panels/interface_wireless.html | 72 +++ .../dcim/panels/interface_wireless_lans.html | 25 + .../dcim/panels/rear_port_mappings.html | 29 ++ .../dcim/panels/virtual_chassis_members.html | 2 +- netbox/templates/dcim/powerfeed.html | 128 ----- .../powerfeed/attrs/connected_device.html | 6 + .../dcim/powerfeed/attrs/utilization.html | 15 + netbox/templates/dcim/poweroutlet.html | 92 ---- netbox/templates/dcim/powerpanel.html | 73 --- netbox/templates/dcim/powerport.html | 88 ---- netbox/templates/dcim/rearport.html | 142 ------ netbox/templates/dcim/virtualchassis.html | 89 ---- .../templates/dcim/virtualdevicecontext.html | 86 ---- 36 files changed, 1186 insertions(+), 1885 deletions(-) create mode 100644 netbox/templates/dcim/interface/attrs/mac_address.html create mode 100644 netbox/templates/dcim/interface/attrs/speed.html create mode 100644 netbox/templates/dcim/panels/cable_termination_a.html create mode 100644 netbox/templates/dcim/panels/cable_termination_b.html create mode 100644 netbox/templates/dcim/panels/component_inventory_items.html create mode 100644 netbox/templates/dcim/panels/connection.html create mode 100644 netbox/templates/dcim/panels/front_port_mappings.html create mode 100644 netbox/templates/dcim/panels/installed_device.html create mode 100644 netbox/templates/dcim/panels/installed_module.html create mode 100644 netbox/templates/dcim/panels/interface_connection.html create mode 100644 netbox/templates/dcim/panels/interface_virtual_circuit.html create mode 100644 netbox/templates/dcim/panels/interface_wireless.html create mode 100644 netbox/templates/dcim/panels/interface_wireless_lans.html create mode 100644 netbox/templates/dcim/panels/rear_port_mappings.html create mode 100644 netbox/templates/dcim/powerfeed/attrs/connected_device.html create mode 100644 netbox/templates/dcim/powerfeed/attrs/utilization.html diff --git a/netbox/dcim/ui/panels.py b/netbox/dcim/ui/panels.py index fa7ad848a..f75e3d478 100644 --- a/netbox/dcim/ui/panels.py +++ b/netbox/dcim/ui/panels.py @@ -1,6 +1,8 @@ +from django.contrib.contenttypes.models import ContentType +from django.template.loader import render_to_string from django.utils.translation import gettext_lazy as _ -from netbox.ui import attrs, panels +from netbox.ui import actions, attrs, panels class SitePanel(panels.ObjectAttributesPanel): @@ -189,16 +191,251 @@ class PlatformPanel(panels.NestedGroupObjectPanel): config_template = attrs.RelatedObjectAttr('config_template', linkify=True) +class ConsolePortPanel(panels.ObjectAttributesPanel): + device = attrs.RelatedObjectAttr('device', linkify=True) + module = attrs.RelatedObjectAttr('module', linkify=True) + name = attrs.TextAttr('name') + label = attrs.TextAttr('label') + type = attrs.ChoiceAttr('type') + speed = attrs.ChoiceAttr('speed') + description = attrs.TextAttr('description') + + +class ConsoleServerPortPanel(panels.ObjectAttributesPanel): + device = attrs.RelatedObjectAttr('device', linkify=True) + module = attrs.RelatedObjectAttr('module', linkify=True) + name = attrs.TextAttr('name') + label = attrs.TextAttr('label') + type = attrs.ChoiceAttr('type') + speed = attrs.ChoiceAttr('speed') + description = attrs.TextAttr('description') + + +class PowerPortPanel(panels.ObjectAttributesPanel): + device = attrs.RelatedObjectAttr('device', linkify=True) + module = attrs.RelatedObjectAttr('module', linkify=True) + name = attrs.TextAttr('name') + label = attrs.TextAttr('label') + type = attrs.ChoiceAttr('type') + description = attrs.TextAttr('description') + maximum_draw = attrs.TextAttr('maximum_draw') + allocated_draw = attrs.TextAttr('allocated_draw') + + +class PowerOutletPanel(panels.ObjectAttributesPanel): + device = attrs.RelatedObjectAttr('device', linkify=True) + module = attrs.RelatedObjectAttr('module', linkify=True) + name = attrs.TextAttr('name') + label = attrs.TextAttr('label') + type = attrs.ChoiceAttr('type') + status = attrs.ChoiceAttr('status') + description = attrs.TextAttr('description') + color = attrs.ColorAttr('color') + power_port = attrs.RelatedObjectAttr('power_port', linkify=True) + feed_leg = attrs.ChoiceAttr('feed_leg') + + +class FrontPortPanel(panels.ObjectAttributesPanel): + device = attrs.RelatedObjectAttr('device', linkify=True) + module = attrs.RelatedObjectAttr('module', linkify=True) + name = attrs.TextAttr('name') + label = attrs.TextAttr('label') + type = attrs.ChoiceAttr('type') + color = attrs.ColorAttr('color') + positions = attrs.TextAttr('positions') + description = attrs.TextAttr('description') + + +class RearPortPanel(panels.ObjectAttributesPanel): + device = attrs.RelatedObjectAttr('device', linkify=True) + module = attrs.RelatedObjectAttr('module', linkify=True) + name = attrs.TextAttr('name') + label = attrs.TextAttr('label') + type = attrs.ChoiceAttr('type') + color = attrs.ColorAttr('color') + positions = attrs.TextAttr('positions') + description = attrs.TextAttr('description') + + +class ModuleBayPanel(panels.ObjectAttributesPanel): + device = attrs.RelatedObjectAttr('device', linkify=True) + module = attrs.RelatedObjectAttr('module', linkify=True) + name = attrs.TextAttr('name') + label = attrs.TextAttr('label') + position = attrs.TextAttr('position') + description = attrs.TextAttr('description') + + +class DeviceBayPanel(panels.ObjectAttributesPanel): + device = attrs.RelatedObjectAttr('device', linkify=True) + name = attrs.TextAttr('name') + label = attrs.TextAttr('label') + description = attrs.TextAttr('description') + + +class InventoryItemPanel(panels.ObjectAttributesPanel): + device = attrs.RelatedObjectAttr('device', linkify=True) + parent = attrs.RelatedObjectAttr('parent', linkify=True, label=_('Parent item')) + name = attrs.TextAttr('name') + label = attrs.TextAttr('label') + status = attrs.ChoiceAttr('status') + role = attrs.RelatedObjectAttr('role', linkify=True) + component = attrs.GenericForeignKeyAttr('component', linkify=True) + manufacturer = attrs.RelatedObjectAttr('manufacturer', linkify=True) + part_id = attrs.TextAttr('part_id', label=_('Part ID')) + serial = attrs.TextAttr('serial') + asset_tag = attrs.TextAttr('asset_tag') + description = attrs.TextAttr('description') + + +class InventoryItemRolePanel(panels.OrganizationalObjectPanel): + color = attrs.ColorAttr('color') + + +class CablePanel(panels.ObjectAttributesPanel): + type = attrs.ChoiceAttr('type') + status = attrs.ChoiceAttr('status') + profile = attrs.ChoiceAttr('profile') + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + label = attrs.TextAttr('label') + description = attrs.TextAttr('description') + color = attrs.ColorAttr('color') + length = attrs.NumericAttr('length', unit_accessor='get_length_unit_display') + + +class VirtualChassisPanel(panels.ObjectAttributesPanel): + domain = attrs.TextAttr('domain') + master = attrs.RelatedObjectAttr('master', linkify=True) + description = attrs.TextAttr('description') + + +class PowerPanelPanel(panels.ObjectAttributesPanel): + site = attrs.RelatedObjectAttr('site', linkify=True) + location = attrs.NestedObjectAttr('location', linkify=True) + description = attrs.TextAttr('description') + + +class PowerFeedPanel(panels.ObjectAttributesPanel): + power_panel = attrs.RelatedObjectAttr('power_panel', linkify=True) + rack = attrs.RelatedObjectAttr('rack', linkify=True) + type = attrs.ChoiceAttr('type') + status = attrs.ChoiceAttr('status') + description = attrs.TextAttr('description') + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + connected_device = attrs.TemplatedAttr( + 'connected_endpoints', + label=_('Connected device'), + template_name='dcim/powerfeed/attrs/connected_device.html', + ) + utilization = attrs.TemplatedAttr( + 'connected_endpoints', + label=_('Utilization (allocated)'), + template_name='dcim/powerfeed/attrs/utilization.html', + ) + + +class PowerFeedElectricalPanel(panels.ObjectAttributesPanel): + title = _('Electrical Characteristics') + + supply = attrs.ChoiceAttr('supply') + voltage = attrs.TextAttr('voltage', format_string=_('{}V')) + amperage = attrs.TextAttr('amperage', format_string=_('{}A')) + phase = attrs.ChoiceAttr('phase') + max_utilization = attrs.TextAttr('max_utilization', format_string='{}%') + + +class VirtualDeviceContextPanel(panels.ObjectAttributesPanel): + name = attrs.TextAttr('name') + device = attrs.RelatedObjectAttr('device', linkify=True) + identifier = attrs.TextAttr('identifier') + status = attrs.ChoiceAttr('status') + primary_ip4 = attrs.TemplatedAttr( + 'primary_ip4', + label=_('Primary IPv4'), + template_name='dcim/device/attrs/ipaddress.html', + ) + primary_ip6 = attrs.TemplatedAttr( + 'primary_ip6', + label=_('Primary IPv6'), + template_name='dcim/device/attrs/ipaddress.html', + ) + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + + +class MACAddressPanel(panels.ObjectAttributesPanel): + mac_address = attrs.TextAttr('mac_address', label=_('MAC address'), style='font-monospace', copy_button=True) + description = attrs.TextAttr('description') + assignment = attrs.RelatedObjectAttr('assigned_object', linkify=True, grouped_by='parent_object') + is_primary = attrs.BooleanAttr('is_primary', label=_('Primary for interface')) + + +class ConnectionPanel(panels.ObjectPanel): + """ + A panel which displays connection information for a cabled object. + """ + template_name = 'dcim/panels/connection.html' + title = _('Connection') + + def __init__(self, trace_url_name, connect_options=None, show_endpoints=True, **kwargs): + super().__init__(**kwargs) + self.trace_url_name = trace_url_name + self.connect_options = connect_options or [] + self.show_endpoints = show_endpoints + + def get_context(self, context): + return { + **super().get_context(context), + 'trace_url_name': self.trace_url_name, + 'connect_options': self.connect_options, + 'show_endpoints': self.show_endpoints, + } + + def render(self, context): + ctx = self.get_context(context) + return render_to_string(self.template_name, ctx, request=ctx.get('request')) + + +class InventoryItemsPanel(panels.ObjectPanel): + """ + A panel which displays inventory items associated with a component. + """ + template_name = 'dcim/panels/component_inventory_items.html' + title = _('Inventory Items') + actions = [ + actions.AddObject( + 'dcim.inventoryitem', + url_params={ + 'component_type': lambda ctx: ContentType.objects.get_for_model(ctx['object']).pk, + 'component_id': lambda ctx: ctx['object'].pk, + }, + ), + ] + + def render(self, context): + ctx = self.get_context(context) + return render_to_string(self.template_name, ctx, request=ctx.get('request')) + + class VirtualChassisMembersPanel(panels.ObjectPanel): """ A panel which lists all members of a virtual chassis. """ template_name = 'dcim/panels/virtual_chassis_members.html' title = _('Virtual Chassis Members') + actions = [ + actions.AddObject( + 'dcim.device', + url_params={ + 'site': lambda ctx: ctx['object'].master.site_id if ctx['object'].master else '', + 'rack': lambda ctx: ctx['object'].master.rack_id if ctx['object'].master else '', + }, + ), + ] def get_context(self, context): return { **super().get_context(context), + 'virtual_chassis': context.get('virtual_chassis'), 'vc_members': context.get('vc_members'), } @@ -226,3 +463,106 @@ class PowerUtilizationPanel(panels.ObjectPanel): if not obj.powerports.exists() or not obj.poweroutlets.exists(): return '' return super().render(context) + + +class InterfacePanel(panels.ObjectAttributesPanel): + device = attrs.RelatedObjectAttr('device', linkify=True) + module = attrs.RelatedObjectAttr('module', linkify=True) + name = attrs.TextAttr('name') + label = attrs.TextAttr('label') + type = attrs.ChoiceAttr('type') + speed = attrs.TemplatedAttr('speed', template_name='dcim/interface/attrs/speed.html', label=_('Speed')) + duplex = attrs.ChoiceAttr('duplex') + mtu = attrs.TextAttr('mtu', label=_('MTU')) + enabled = attrs.BooleanAttr('enabled') + mgmt_only = attrs.BooleanAttr('mgmt_only', label=_('Management only')) + description = attrs.TextAttr('description') + poe_mode = attrs.ChoiceAttr('poe_mode', label=_('PoE mode')) + poe_type = attrs.ChoiceAttr('poe_type', label=_('PoE type')) + mode = attrs.ChoiceAttr('mode', label=_('802.1Q mode')) + qinq_svlan = attrs.RelatedObjectAttr('qinq_svlan', linkify=True, label=_('Q-in-Q SVLAN')) + untagged_vlan = attrs.RelatedObjectAttr('untagged_vlan', linkify=True, label=_('Untagged VLAN')) + tx_power = attrs.TextAttr('tx_power', label=_('Transmit power (dBm)')) + tunnel = attrs.RelatedObjectAttr('tunnel_termination.tunnel', linkify=True, label=_('Tunnel')) + l2vpn = attrs.RelatedObjectAttr('l2vpn_termination.l2vpn', linkify=True, label=_('L2VPN')) + + +class RelatedInterfacesPanel(panels.ObjectAttributesPanel): + title = _('Related Interfaces') + + parent = attrs.RelatedObjectAttr('parent', linkify=True) + bridge = attrs.RelatedObjectAttr('bridge', linkify=True) + lag = attrs.RelatedObjectAttr('lag', linkify=True, label=_('LAG')) + + +class InterfaceAddressingPanel(panels.ObjectAttributesPanel): + title = _('Addressing') + + mac_address = attrs.TemplatedAttr( + 'primary_mac_address', + template_name='dcim/interface/attrs/mac_address.html', + label=_('MAC address'), + ) + wwn = attrs.TextAttr('wwn', style='font-monospace', label=_('WWN')) + vrf = attrs.RelatedObjectAttr('vrf', linkify=True, label=_('VRF')) + vlan_translation = attrs.RelatedObjectAttr('vlan_translation_policy', linkify=True, label=_('VLAN translation')) + + +class InterfaceConnectionPanel(panels.ObjectPanel): + """ + A connection panel for interfaces, which handles cable, wireless link, and virtual circuit cases. + """ + template_name = 'dcim/panels/interface_connection.html' + title = _('Connection') + + def render(self, context): + obj = context.get('object') + if obj and obj.is_virtual: + return '' + ctx = self.get_context(context) + return render_to_string(self.template_name, ctx, request=ctx.get('request')) + + +class VirtualCircuitPanel(panels.ObjectPanel): + """ + A panel which displays virtual circuit information for a virtual interface. + """ + template_name = 'dcim/panels/interface_virtual_circuit.html' + title = _('Virtual Circuit') + + def render(self, context): + obj = context.get('object') + if not obj or not obj.is_virtual or not obj.virtual_circuit_termination: + return '' + ctx = self.get_context(context) + return render_to_string(self.template_name, ctx, request=ctx.get('request')) + + +class InterfaceWirelessPanel(panels.ObjectPanel): + """ + A panel which displays wireless RF attributes for an interface, comparing local and peer values. + """ + template_name = 'dcim/panels/interface_wireless.html' + title = _('Wireless') + + def render(self, context): + obj = context.get('object') + if not obj or not obj.is_wireless: + return '' + ctx = self.get_context(context) + return render_to_string(self.template_name, ctx, request=ctx.get('request')) + + +class WirelessLANsPanel(panels.ObjectPanel): + """ + A panel which lists the wireless LANs associated with an interface. + """ + template_name = 'dcim/panels/interface_wireless_lans.html' + title = _('Wireless LANs') + + def render(self, context): + obj = context.get('object') + if not obj or not obj.is_wireless: + return '' + ctx = self.get_context(context) + return render_to_string(self.template_name, ctx, request=ctx.get('request')) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index c90f63753..dd3531b84 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -17,10 +17,12 @@ from extras.ui.panels import CustomFieldsPanel, ImageAttachmentsPanel, TagsPanel from extras.views import ObjectConfigContextView, ObjectRenderConfigView from ipam.models import ASN, VLAN, IPAddress, Prefix, VLANGroup from ipam.tables import VLANTranslationRuleTable +from ipam.ui.panels import FHRPGroupAssignmentsPanel from netbox.object_actions import * from netbox.ui import actions, layout from netbox.ui.panels import ( CommentsPanel, + ContextTablePanel, JSONPanel, NestedGroupObjectPanel, ObjectsTablePanel, @@ -1577,7 +1579,7 @@ class ModuleTypeProfileListView(generic.ObjectListView): @register_model_view(ModuleTypeProfile) -class ModuleTypeProfileView(GetRelatedModelsMixin, generic.ObjectView): +class ModuleTypeProfileView(generic.ObjectView): template_name = 'generic/object.html' queryset = ModuleTypeProfile.objects.all() layout = layout.SimpleLayout( @@ -2555,6 +2557,7 @@ class DeviceView(generic.ObjectView): vc_members = [] return { + 'virtual_chassis': instance.virtual_chassis, 'vc_members': vc_members, 'svg_extra': f'highlight=id:{instance.pk}', } @@ -2907,6 +2910,28 @@ class ConsolePortListView(generic.ObjectListView): @register_model_view(ConsolePort) class ConsolePortView(generic.ObjectView): queryset = ConsolePort.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ConsolePortPanel(), + CustomFieldsPanel(), + TagsPanel(), + ], + right_panels=[ + panels.ConnectionPanel( + trace_url_name='dcim:consoleport_trace', + connect_options=[ + { + 'a_type': 'dcim.consoleport', + 'b_type': 'dcim.consoleserverport', + 'label': _('Console Server Port'), + }, + {'a_type': 'dcim.consoleport', 'b_type': 'dcim.frontport', 'label': _('Front Port')}, + {'a_type': 'dcim.consoleport', 'b_type': 'dcim.rearport', 'label': _('Rear Port')}, + ], + ), + panels.InventoryItemsPanel(), + ], + ) @register_model_view(ConsolePort, 'add', detail=False) @@ -2978,6 +3003,24 @@ class ConsoleServerPortListView(generic.ObjectListView): @register_model_view(ConsoleServerPort) class ConsoleServerPortView(generic.ObjectView): queryset = ConsoleServerPort.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ConsoleServerPortPanel(), + CustomFieldsPanel(), + TagsPanel(), + ], + right_panels=[ + panels.ConnectionPanel( + trace_url_name='dcim:consoleserverport_trace', + connect_options=[ + {'a_type': 'dcim.consoleserverport', 'b_type': 'dcim.consoleport', 'label': _('Console Port')}, + {'a_type': 'dcim.consoleserverport', 'b_type': 'dcim.frontport', 'label': _('Front Port')}, + {'a_type': 'dcim.consoleserverport', 'b_type': 'dcim.rearport', 'label': _('Rear Port')}, + ], + ), + panels.InventoryItemsPanel(), + ], + ) @register_model_view(ConsoleServerPort, 'add', detail=False) @@ -3049,6 +3092,23 @@ class PowerPortListView(generic.ObjectListView): @register_model_view(PowerPort) class PowerPortView(generic.ObjectView): queryset = PowerPort.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.PowerPortPanel(), + CustomFieldsPanel(), + TagsPanel(), + ], + right_panels=[ + panels.ConnectionPanel( + trace_url_name='dcim:powerport_trace', + connect_options=[ + {'a_type': 'dcim.powerport', 'b_type': 'dcim.poweroutlet', 'label': _('Power Outlet')}, + {'a_type': 'dcim.powerport', 'b_type': 'dcim.powerfeed', 'label': _('Power Feed')}, + ], + ), + panels.InventoryItemsPanel(), + ], + ) @register_model_view(PowerPort, 'add', detail=False) @@ -3120,6 +3180,22 @@ class PowerOutletListView(generic.ObjectListView): @register_model_view(PowerOutlet) class PowerOutletView(generic.ObjectView): queryset = PowerOutlet.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.PowerOutletPanel(), + CustomFieldsPanel(), + TagsPanel(), + ], + right_panels=[ + panels.ConnectionPanel( + trace_url_name='dcim:poweroutlet_trace', + connect_options=[ + {'a_type': 'dcim.poweroutlet', 'b_type': 'dcim.powerport', 'label': _('Power Port')}, + ], + ), + panels.InventoryItemsPanel(), + ], + ) @register_model_view(PowerOutlet, 'add', detail=False) @@ -3191,6 +3267,45 @@ class InterfaceListView(generic.ObjectListView): @register_model_view(Interface) class InterfaceView(generic.ObjectView): queryset = Interface.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.InterfacePanel(), + panels.RelatedInterfacesPanel(), + CustomFieldsPanel(), + TagsPanel(), + ], + right_panels=[ + ContextTablePanel('vdc_table', title=_('Virtual Device Contexts')), + panels.InterfaceAddressingPanel(), + panels.VirtualCircuitPanel(), + panels.InterfaceConnectionPanel(), + panels.InterfaceWirelessPanel(), + panels.WirelessLANsPanel(), + FHRPGroupAssignmentsPanel(), + panels.InventoryItemsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + model='ipam.IPAddress', + filters={'interface_id': lambda ctx: ctx['object'].pk}, + title=_('IP Addresses'), + ), + ObjectsTablePanel( + model='dcim.MACAddress', + filters={'interface_id': lambda ctx: ctx['object'].pk}, + title=_('MAC Addresses'), + ), + ObjectsTablePanel( + model='ipam.VLAN', + filters={'interface_id': lambda ctx: ctx['object'].pk}, + title=_('VLANs'), + ), + ContextTablePanel('lag_interfaces_table', title=_('LAG Members')), + ContextTablePanel('vlan_translation_table', title=_('VLAN Translation')), + ContextTablePanel('bridge_interfaces_table', title=_('Bridged Interfaces')), + ContextTablePanel('child_interfaces_table', title=_('Child Interfaces')), + ], + ) def get_extra_context(self, request, instance): # Get assigned VDCs @@ -3205,30 +3320,29 @@ class InterfaceView(generic.ObjectView): vdc_table.configure(request) # Get bridge interfaces - bridge_interfaces = Interface.objects.restrict(request.user, 'view').filter(bridge=instance) bridge_interfaces_table = tables.InterfaceTable( - bridge_interfaces, + Interface.objects.restrict(request.user, 'view').filter(bridge=instance), exclude=('device', 'parent'), orderable=False ) bridge_interfaces_table.configure(request) # Get child interfaces - child_interfaces = Interface.objects.restrict(request.user, 'view').filter(parent=instance) child_interfaces_table = tables.InterfaceTable( - child_interfaces, + Interface.objects.restrict(request.user, 'view').filter(parent=instance), exclude=('device', 'parent'), orderable=False ) child_interfaces_table.configure(request) - # Get LAG interfaces - lag_interfaces = Interface.objects.restrict(request.user, 'view').filter(lag=instance) - lag_interfaces_table = tables.InterfaceLAGMemberTable( - lag_interfaces, - orderable=False - ) - lag_interfaces_table.configure(request) + # Get LAG members (only for LAG interfaces) + lag_interfaces_table = None + if instance.is_lag: + lag_interfaces_table = tables.InterfaceLAGMemberTable( + Interface.objects.restrict(request.user, 'view').filter(lag=instance), + orderable=False + ) + lag_interfaces_table.configure(request) # Get VLAN translation rules vlan_translation_table = None @@ -3241,7 +3355,6 @@ class InterfaceView(generic.ObjectView): return { 'vdc_table': vdc_table, - 'bridge_interfaces': bridge_interfaces, 'bridge_interfaces_table': bridge_interfaces_table, 'child_interfaces_table': child_interfaces_table, 'lag_interfaces_table': lag_interfaces_table, @@ -3329,6 +3442,33 @@ class FrontPortListView(generic.ObjectListView): @register_model_view(FrontPort) class FrontPortView(generic.ObjectView): queryset = FrontPort.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.FrontPortPanel(), + CustomFieldsPanel(), + TagsPanel(), + panels.InventoryItemsPanel(), + ], + right_panels=[ + panels.ConnectionPanel( + trace_url_name='dcim:frontport_trace', + show_endpoints=False, + connect_options=[ + {'a_type': 'dcim.frontport', 'b_type': 'dcim.interface', 'label': _('Interface')}, + {'a_type': 'dcim.frontport', 'b_type': 'dcim.consoleserverport', 'label': _('Console Server Port')}, + {'a_type': 'dcim.frontport', 'b_type': 'dcim.consoleport', 'label': _('Console Port')}, + {'a_type': 'dcim.frontport', 'b_type': 'dcim.frontport', 'label': _('Front Port')}, + {'a_type': 'dcim.frontport', 'b_type': 'dcim.rearport', 'label': _('Rear Port')}, + { + 'a_type': 'dcim.frontport', + 'b_type': 'circuits.circuittermination', + 'label': _('Circuit Termination'), + }, + ], + ), + TemplatePanel('dcim/panels/front_port_mappings.html'), + ], + ) def get_extra_context(self, request, instance): return { @@ -3405,6 +3545,31 @@ class RearPortListView(generic.ObjectListView): @register_model_view(RearPort) class RearPortView(generic.ObjectView): queryset = RearPort.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.RearPortPanel(), + CustomFieldsPanel(), + TagsPanel(), + panels.InventoryItemsPanel(), + ], + right_panels=[ + panels.ConnectionPanel( + trace_url_name='dcim:rearport_trace', + show_endpoints=False, + connect_options=[ + {'a_type': 'dcim.rearport', 'b_type': 'dcim.interface', 'label': _('Interface')}, + {'a_type': 'dcim.rearport', 'b_type': 'dcim.frontport', 'label': _('Front Port')}, + {'a_type': 'dcim.rearport', 'b_type': 'dcim.rearport', 'label': _('Rear Port')}, + { + 'a_type': 'dcim.rearport', + 'b_type': 'circuits.circuittermination', + 'label': _('Circuit Termination'), + }, + ], + ), + TemplatePanel('dcim/panels/rear_port_mappings.html'), + ], + ) def get_extra_context(self, request, instance): return { @@ -3481,6 +3646,19 @@ class ModuleBayListView(generic.ObjectListView): @register_model_view(ModuleBay) class ModuleBayView(generic.ObjectView): queryset = ModuleBay.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ModuleBayPanel(), + TagsPanel(), + ], + right_panels=[ + CustomFieldsPanel(), + Panel( + title=_('Installed Module'), + template_name='dcim/panels/installed_module.html', + ), + ], + ) @register_model_view(ModuleBay, 'add', detail=False) @@ -3543,6 +3721,19 @@ class DeviceBayListView(generic.ObjectListView): @register_model_view(DeviceBay) class DeviceBayView(generic.ObjectView): queryset = DeviceBay.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.DeviceBayPanel(), + CustomFieldsPanel(), + TagsPanel(), + ], + right_panels=[ + Panel( + title=_('Installed Device'), + template_name='dcim/panels/installed_device.html', + ), + ], + ) @register_model_view(DeviceBay, 'add', detail=False) @@ -3686,6 +3877,13 @@ class InventoryItemListView(generic.ObjectListView): @register_model_view(InventoryItem) class InventoryItemView(generic.ObjectView): queryset = InventoryItem.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.InventoryItemPanel(), + CustomFieldsPanel(), + TagsPanel(), + ], + ) @register_model_view(InventoryItem, 'edit') @@ -3767,12 +3965,23 @@ class InventoryItemRoleListView(generic.ObjectListView): @register_model_view(InventoryItemRole) -class InventoryItemRoleView(generic.ObjectView): +class InventoryItemRoleView(GetRelatedModelsMixin, generic.ObjectView): queryset = InventoryItemRole.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.InventoryItemRolePanel(), + TagsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CustomFieldsPanel(), + CommentsPanel(), + ], + ) def get_extra_context(self, request, instance): return { - 'inventoryitem_count': InventoryItem.objects.filter(role=instance).count(), + 'related_models': self.get_related_models(request, instance), } @@ -3940,6 +4149,24 @@ class CableListView(generic.ObjectListView): @register_model_view(Cable) class CableView(generic.ObjectView): queryset = Cable.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.CablePanel(), + CustomFieldsPanel(), + TagsPanel(), + CommentsPanel(), + ], + right_panels=[ + Panel( + title=_('Termination A'), + template_name='dcim/panels/cable_termination_a.html', + ), + Panel( + title=_('Termination B'), + template_name='dcim/panels/cable_termination_b.html', + ), + ], + ) @register_model_view(Cable, 'add', detail=False) @@ -4072,12 +4299,23 @@ class VirtualChassisListView(generic.ObjectListView): @register_model_view(VirtualChassis) class VirtualChassisView(generic.ObjectView): queryset = VirtualChassis.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.VirtualChassisPanel(), + TagsPanel(), + CustomFieldsPanel(), + ], + right_panels=[ + panels.VirtualChassisMembersPanel(), + CommentsPanel(), + ], + ) def get_extra_context(self, request, instance): - members = Device.objects.restrict(request.user).filter(virtual_chassis=instance) - + vc_members = Device.objects.restrict(request.user).filter(virtual_chassis=instance).order_by('vc_position') return { - 'members': members, + 'virtual_chassis': instance, + 'vc_members': vc_members, } @@ -4317,6 +4555,27 @@ class PowerPanelListView(generic.ObjectListView): @register_model_view(PowerPanel) class PowerPanelView(GetRelatedModelsMixin, generic.ObjectView): queryset = PowerPanel.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.PowerPanelPanel(), + TagsPanel(), + CommentsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CustomFieldsPanel(), + ImageAttachmentsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + model='dcim.PowerFeed', + filters={'power_panel_id': lambda ctx: ctx['object'].pk}, + actions=[ + actions.AddObject('dcim.PowerFeed', url_params={'power_panel': lambda ctx: ctx['object'].pk}), + ], + ), + ], + ) def get_extra_context(self, request, instance): return { @@ -4380,6 +4639,23 @@ class PowerFeedListView(generic.ObjectListView): @register_model_view(PowerFeed) class PowerFeedView(generic.ObjectView): queryset = PowerFeed.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.PowerFeedPanel(), + panels.PowerFeedElectricalPanel(), + CustomFieldsPanel(), + TagsPanel(), + ], + right_panels=[ + panels.ConnectionPanel( + trace_url_name='dcim:powerfeed_trace', + connect_options=[ + {'a_type': 'dcim.powerfeed', 'b_type': 'dcim.powerport', 'label': _('Power Port')}, + ], + ), + CommentsPanel(), + ], + ) @register_model_view(PowerFeed, 'add', detail=False) @@ -4448,6 +4724,23 @@ class VirtualDeviceContextListView(generic.ObjectListView): @register_model_view(VirtualDeviceContext) class VirtualDeviceContextView(GetRelatedModelsMixin, generic.ObjectView): queryset = VirtualDeviceContext.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.VirtualDeviceContextPanel(), + TagsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CommentsPanel(), + CustomFieldsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + model='dcim.Interface', + filters={'vdc_id': lambda ctx: ctx['object'].pk}, + ), + ], + ) def get_extra_context(self, request, instance): return { @@ -4516,6 +4809,16 @@ class MACAddressListView(generic.ObjectListView): @register_model_view(MACAddress) class MACAddressView(generic.ObjectView): queryset = MACAddress.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.MACAddressPanel(), + TagsPanel(), + CustomFieldsPanel(), + ], + right_panels=[ + CommentsPanel(), + ], + ) @register_model_view(MACAddress, 'add', detail=False) diff --git a/netbox/templates/dcim/cable.html b/netbox/templates/dcim/cable.html index 8e685c514..f15e1d050 100644 --- a/netbox/templates/dcim/cable.html +++ b/netbox/templates/dcim/cable.html @@ -1,87 +1 @@ {% extends 'generic/object.html' %} -{% load buttons %} -{% load helpers %} -{% load perms %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
-
-
-

{% trans "Cable" %}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{% trans "Type" %}{{ object.get_type_display|placeholder }}
{% trans "Status" %}{% badge object.get_status_display bg_color=object.get_status_color %}
{% trans "Profile" %}{% badge object.get_profile_display %}
{% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
{% trans "Label" %}{{ object.label|placeholder }}
{% trans "Description" %}{{ object.description|placeholder }}
{% trans "Color" %} - {% if object.color %} -   - {% else %} - {{ ''|placeholder }} - {% endif %} -
{% trans "Length" %} - {% if object.length is not None %} - {{ object.length|floatformat }} {{ object.get_length_unit_display }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
-
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_left_page object %} -
-
-
-

{% trans "Termination" %} A

- {% include 'dcim/inc/cable_termination.html' with terminations=object.a_terminations %} -
-
-

{% trans "Termination" %} B

- {% include 'dcim/inc/cable_termination.html' with terminations=object.b_terminations %} -
- {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/consoleport.html b/netbox/templates/dcim/consoleport.html index 986b38dc8..313d6aec6 100644 --- a/netbox/templates/dcim/consoleport.html +++ b/netbox/templates/dcim/consoleport.html @@ -1,6 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} {% load i18n %} {% block breadcrumbs %} @@ -9,88 +7,3 @@ {{ object.device }} {% endblock %} - -{% block content %} -
-
-
-

{% trans "Console Port" %}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{% trans "Device" %}{{ object.device|linkify }}
{% trans "Module" %}{{ object.module|linkify|placeholder }}
{% trans "Name" %}{{ object.name }}
{% trans "Label" %}{{ object.label|placeholder }}
{% trans "Type" %}{{ object.get_type_display }}
{% trans "Speed" %}{{ object.get_speed_display }}
{% trans "Description" %}{{ object.description|placeholder }}
-
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
-
-
-

{% trans "Connection" %}

- {% if object.mark_connected %} -
- - {% trans "Marked as connected" %} -
- {% elif object.cable %} - {% include 'dcim/inc/connection_endpoints.html' with trace_url='dcim:consoleport_trace' %} - {% else %} -
- {% trans "Not Connected" %} - {% if perms.dcim.add_cable %} - - {% endif %} -
- {% endif %} -
- {% include 'dcim/inc/panels/inventory_items.html' %} - {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/consoleserverport.html b/netbox/templates/dcim/consoleserverport.html index 0ec0ac6fb..80f0e54a2 100644 --- a/netbox/templates/dcim/consoleserverport.html +++ b/netbox/templates/dcim/consoleserverport.html @@ -1,6 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} {% load i18n %} {% block breadcrumbs %} @@ -9,88 +7,3 @@ {{ object.device }} {% endblock %} - -{% block content %} -
-
-
-

{% trans "Console Server Port" %}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{% trans "Device" %}{{ object.device|linkify }}
{% trans "Module" %}{{ object.module|linkify|placeholder }}
{% trans "Name" %}{{ object.name }}
{% trans "Label" %}{{ object.label|placeholder }}
{% trans "Type" %}{{ object.get_type_display|placeholder }}
{% trans "Speed" %}{{ object.get_speed_display|placeholder }}
{% trans "Description" %}{{ object.description|placeholder }}
-
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
-
-
-

{% trans "Connection" %}

- {% if object.mark_connected %} -
- - {% trans "Marked as connected" %} -
- {% elif object.cable %} - {% include 'dcim/inc/connection_endpoints.html' with trace_url='dcim:consoleserverport_trace' %} - {% else %} -
- {% trans "Not Connected" %} - {% if perms.dcim.add_cable %} - - {% endif %} -
- {% endif %} -
- {% include 'dcim/inc/panels/inventory_items.html' %} - {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/devicebay.html b/netbox/templates/dcim/devicebay.html index 1148a30e3..afc3ad506 100644 --- a/netbox/templates/dcim/devicebay.html +++ b/netbox/templates/dcim/devicebay.html @@ -1,6 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} {% load i18n %} {% block breadcrumbs %} @@ -9,63 +7,3 @@ {{ object.device }} {% endblock %} - -{% block content %} -
-
-
-

{% trans "Device Bay" %}

- - - - - - - - - - - - - - - - - -
{% trans "Device" %}{{ object.device|linkify }}
{% trans "Name" %}{{ object.name }}
{% trans "Label" %}{{ object.label|placeholder }}
{% trans "Description" %}{{ object.description|placeholder }}
-
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
-
-
-

{% trans "Installed Device" %}

- {% if object.installed_device %} - {% with device=object.installed_device %} - - - - - - - - - -
{% trans "Device" %}{{ device|linkify }}
{% trans "Device Type" %}{{ device.device_type }}
- {% endwith %} - {% else %} -
- {% trans "None" %} -
- {% endif %} -
- {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/frontport.html b/netbox/templates/dcim/frontport.html index f93e8282f..74d42616c 100644 --- a/netbox/templates/dcim/frontport.html +++ b/netbox/templates/dcim/frontport.html @@ -1,6 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} {% load i18n %} {% block breadcrumbs %} @@ -9,149 +7,3 @@ {{ object.device }} {% endblock %} - -{% block content %} -
-
-
-

{% trans "Front Port" %}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{% trans "Device" %}{{ object.device|linkify }}
{% trans "Module" %}{{ object.module|linkify|placeholder }}
{% trans "Name" %}{{ object.name }}
{% trans "Label" %}{{ object.label|placeholder }}
{% trans "Type" %}{{ object.get_type_display }}
{% trans "Color" %} - {% if object.color %} -   - {% else %} - {{ ''|placeholder }} - {% endif %} -
{% trans "Positions" %}{{ object.positions }}
{% trans "Description" %}{{ object.description|placeholder }}
-
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% include 'dcim/inc/panels/inventory_items.html' %} - {% plugin_left_page object %} -
-
-
-

{% trans "Connection" %}

- {% if object.mark_connected %} -
- {% trans "Marked as Connected" %} -
- {% elif object.cable %} - - - - - - - - - -
{% trans "Cable" %} - {{ object.cable|linkify }} - - - -
{% trans "Connection Status" %} - {% if object.cable.status %} - {{ object.cable.get_status_display }} - {% else %} - {{ object.cable.get_status_display }} - {% endif %} -
- {% else %} -
- {% trans "Not Connected" %} - {% if perms.dcim.add_cable %} - - {% endif %} -
- {% endif %} -
-
-

{% trans "Port Mappings" %}

- - {% if rear_port_mappings %} - - - - - - - {% endif %} - {% for mapping in rear_port_mappings %} - - - - - {% empty %} - {% trans "No mappings defined" %} - {% endfor %} -
{% trans "Position" %}{% trans "Rear Port" %}
{{ mapping.front_port_position }} - {{ mapping.rear_port }}:{{ mapping.rear_port_position }} -
-
- {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index 34e941ec9..b8214337f 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -1,7 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} {% load i18n %} {% block breadcrumbs %} @@ -19,436 +16,3 @@ {% endif %} {{ block.super }} {% endblock %} - -{% block content %} -
-
-
-

{% trans "Interface" %}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {% if object.mode == 'q-in-q' %} - - - - - {% elif object.mode %} - - - - - {% endif %} - - - - - - - - - - - - -
{% trans "Device" %}{{ object.device|linkify }}
{% trans "Module" %}{{ object.module|linkify|placeholder }}
{% trans "Name" %}{{ object.name }}
{% trans "Label" %}{{ object.label|placeholder }}
{% trans "Type" %}{{ object.get_type_display }}
{% trans "Speed/Duplex" %} - {{ object.speed|humanize_speed|placeholder }} / - {{ object.get_duplex_display|placeholder }} -
{% trans "MTU" %}{{ object.mtu|placeholder }}
{% trans "Enabled" %}{% checkmark object.enabled %}
{% trans "Management Only" %}{% checkmark object.mgmt_only %}
{% trans "Description" %}{{ object.description|placeholder }}
{% trans "PoE Mode" %}{{ object.get_poe_mode_display|placeholder }}
{% trans "PoE Type" %}{{ object.get_poe_type_display|placeholder }}
{% trans "802.1Q Mode" %}{{ object.get_mode_display|placeholder }}
{% trans "Q-in-Q SVLAN" %}{{ object.qinq_svlan|linkify|placeholder }}
{% trans "Untagged VLAN" %}{{ object.untagged_vlan|linkify|placeholder }}
{% trans "Transmit power (dBm)" %}{{ object.tx_power|placeholder }}
{% trans "Tunnel" %}{{ object.tunnel_termination.tunnel|linkify|placeholder }}
{% trans "L2VPN" %}{{ object.l2vpn_termination.l2vpn|linkify|placeholder }}
-
-
-

{% trans "Related Interfaces" %}

- - - - - - - - - - - - - - - - - -
{% trans "Parent" %}{{ object.parent|linkify|placeholder }}
{% trans "Bridge" %}{{ object.bridge|linkify|placeholder }}
{% trans "Bridged Interfaces" %} - {% if bridge_interfaces %} - {% for interface in bridge_interfaces %} - {{ interface|linkify }} - {% if not forloop.last %}
{% endif %} - {% endfor %} - {% else %} - {{ ''|placeholder }} - {% endif %} -
{% trans "LAG" %}{{ object.lag|linkify|placeholder }}
-
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
-
- {% include 'inc/panel_table.html' with table=vdc_table heading="Virtual Device Contexts" %} -
-

{% trans "Addressing" %}

- - - - - - - - - - - - - - - - - -
{% trans "MAC Address" %} - {% if object.primary_mac_address %} - {{ object.primary_mac_address|linkify }} - {% trans "Primary" %} - {% else %} - {{ ''|placeholder }} - {% endif %} -
{% trans "WWN" %} - {% if object.wwn %} - {{ object.wwn }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
{% trans "VRF" %}{{ object.vrf|linkify|placeholder }}
{% trans "VLAN Translation" %}{{ object.vlan_translation_policy|linkify|placeholder }}
-
- {% if object.is_virtual and object.virtual_circuit_termination %} -
-

{% trans "Virtual Circuit" %}

- - - - - - - - - - - - - - - - - - - - - -
{% trans "Provider" %}{{ object.virtual_circuit_termination.virtual_circuit.provider|linkify }}
{% trans "Provider Network" %}{{ object.virtual_circuit_termination.virtual_circuit.provider_network|linkify }}
{% trans "Circuit ID" %}{{ object.virtual_circuit_termination.virtual_circuit|linkify }}
{% trans "Role" %}{{ object.virtual_circuit_termination.get_role_display }}
{% trans "Connections" %} - {% for termination in object.virtual_circuit_termination.peer_terminations %} - {{ termination.interface.parent_object }} - - {{ termination.interface }} - ({{ termination.get_role_display }}) - {% if not forloop.last %}
{% endif %} - {% endfor %} -
-
- {% elif not object.is_virtual %} -
-

{% trans "Connection" %}

- {% if object.mark_connected %} -
- - {% trans "Marked as Connected" %} -
- {% elif object.cable %} - {% include 'dcim/inc/connection_endpoints.html' with trace_url='dcim:interface_trace' %} - {% elif object.wireless_link %} - - - - - - {% with peer_interface=object.link_peers.0 %} - - - - - - - - - - - - - {% endwith %} -
{% trans "Wireless Link" %} - {{ object.wireless_link|linkify }} - - - -
{% trans "Device" %}{{ peer_interface.device|linkify }}
{% trans "Name" %}{{ peer_interface|linkify }}
{% trans "Type" %}{{ peer_interface.get_type_display }}
- {% else %} -
- {% trans "Not Connected" %} - {% if object.is_wired and perms.dcim.add_cable %} - - {% elif object.is_wireless and perms.wireless.add_wirelesslink %} - - {% endif %} -
- {% endif %} -
- {% endif %} - {% if object.is_wireless %} -
-

{% trans "Wireless" %}

- {% with peer=object.connected_endpoints.0 %} - - - - - - {% if peer %} - - {% endif %} - - - - - - {% if peer %} - - {% endif %} - - - - - {% if peer %} - - {{ peer.get_rf_channel_display|placeholder }} - - {% endif %} - - - - - {% if peer %} - - {% if peer.rf_channel_frequency %} - {{ peer.rf_channel_frequency|floatformat:"-2" }} {% trans "MHz" %} - {% else %} - {{ ''|placeholder }} - {% endif %} - - {% endif %} - - - - - {% if peer %} - - {% if peer.rf_channel_width %} - {{ peer.rf_channel_width|floatformat:"-3" }} {% trans "MHz" %} - {% else %} - {{ ''|placeholder }} - {% endif %} - - {% endif %} - -
{% trans "Local" %}{% trans "Peer" %}
{% trans "Role" %}{{ object.get_rf_role_display|placeholder }}{{ peer.get_rf_role_display|placeholder }}
{% trans "Channel" %}{{ object.get_rf_channel_display|placeholder }}
{% trans "Channel Frequency" %} - {% if object.rf_channel_frequency %} - {{ object.rf_channel_frequency|floatformat:"-2" }} {% trans "MHz" %} - {% else %} - {{ ''|placeholder }} - {% endif %} -
{% trans "Channel Width" %} - {% if object.rf_channel_width %} - {{ object.rf_channel_width|floatformat:"-3" }} {% trans "MHz" %} - {% else %} - {{ ''|placeholder }} - {% endif %} -
- {% endwith %} -
-
-

{% trans "Wireless LANs" %}

- - - - - - - - - {% for wlan in object.wireless_lans.all %} - - - - - {% empty %} - - - - {% endfor %} - -
{% trans "Group" %}{% trans "SSID" %}
{{ wlan.group|linkify|placeholder }}{{ wlan|linkify:"ssid" }}
{% trans "None" %}
-
- {% endif %} - {% include 'ipam/inc/panels/fhrp_groups.html' %} - {% include 'dcim/inc/panels/inventory_items.html' %} - {% plugin_right_page object %} -
-
-
-
-
-

- {% trans "IP Addresses" %} - {% if perms.ipam.add_ipaddress %} - - {% endif %} -

- {% htmx_table 'ipam:ipaddress_list' interface_id=object.pk %} -
-
-
-
-
-
-

- {% trans "MAC Addresses" %} - {% if perms.dcim.add_macaddress %} - - {% endif %} -

- {% htmx_table 'dcim:macaddress_list' interface_id=object.pk %} -
-
-
-
-
-
-

{% trans "VLANs" %}

- {% htmx_table 'ipam:vlan_list' interface_id=object.pk %} -
-
-
- {% if object.is_lag %} -
-
- {% include 'inc/panel_table.html' with table=lag_interfaces_table heading="LAG Members" %} -
-
- {% endif %} - {% if object.vlan_translation_policy %} -
-
- {% include 'inc/panel_table.html' with table=vlan_translation_table heading="VLAN Translation" %} -
-
- {% endif %} -
-
- {% include 'inc/panel_table.html' with table=bridge_interfaces_table heading="Bridged Interfaces" %} -
-
-
-
- {% include 'inc/panel_table.html' with table=child_interfaces_table heading="Child Interfaces" %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/interface/attrs/mac_address.html b/netbox/templates/dcim/interface/attrs/mac_address.html new file mode 100644 index 000000000..abb3c9cb8 --- /dev/null +++ b/netbox/templates/dcim/interface/attrs/mac_address.html @@ -0,0 +1,3 @@ +{% load helpers i18n %} +{{ value|linkify }} +{% trans "Primary" %} diff --git a/netbox/templates/dcim/interface/attrs/speed.html b/netbox/templates/dcim/interface/attrs/speed.html new file mode 100644 index 000000000..fc4b15d28 --- /dev/null +++ b/netbox/templates/dcim/interface/attrs/speed.html @@ -0,0 +1,2 @@ +{% load helpers %} +{{ value|humanize_speed }} diff --git a/netbox/templates/dcim/inventoryitem.html b/netbox/templates/dcim/inventoryitem.html index d389abe8e..3d5a2cf27 100644 --- a/netbox/templates/dcim/inventoryitem.html +++ b/netbox/templates/dcim/inventoryitem.html @@ -1,6 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} {% load i18n %} {% block breadcrumbs %} @@ -9,74 +7,3 @@ {{ object.device }} {% endblock %} - -{% block content %} -
-
-
-

{% trans "Inventory Item" %}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{% trans "Device" %}{{ object.device|linkify }}
{% trans "Parent Item" %}{{ object.parent|linkify|placeholder }}
{% trans "Name" %}{{ object.name }}
{% trans "Label" %}{{ object.label|placeholder }}
{% trans "Status" %}{% badge object.get_status_display bg_color=object.get_status_color %}
{% trans "Role" %}{{ object.role|linkify|placeholder }}
{% trans "Component" %}{{ object.component|linkify|placeholder }}
{% trans "Manufacturer" %}{{ object.manufacturer|linkify|placeholder }}
{% trans "Part ID" %}{{ object.part_id|placeholder }}
{% trans "Serial" %}{{ object.serial|placeholder }}
{% trans "Asset Tag" %}{{ object.asset_tag|placeholder }}
{% trans "Description" %}{{ object.description|placeholder }}
-
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
-
- {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/inventoryitemrole.html b/netbox/templates/dcim/inventoryitemrole.html index 4791e1ab3..f15e1d050 100644 --- a/netbox/templates/dcim/inventoryitemrole.html +++ b/netbox/templates/dcim/inventoryitemrole.html @@ -1,53 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} - -{% block breadcrumbs %} - -{% endblock %} - -{% block content %} -
-
-
-

{% trans "Inventory Item Role" %}

- - - - - - - - - - - - - - - - - -
{% trans "Name" %}{{ object.name }}
{% trans "Description" %}{{ object.description|placeholder }}
{% trans "Color" %} -   -
{% trans "Inventory Items" %} - {{ inventoryitem_count }} -
-
- {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
-
- {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/macaddress.html b/netbox/templates/dcim/macaddress.html index 489d55c08..f15e1d050 100644 --- a/netbox/templates/dcim/macaddress.html +++ b/netbox/templates/dcim/macaddress.html @@ -1,55 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} - -{% block content %} -
-
-
-

{% trans "MAC Address" %}

- - - - - - - - - - - - - - - - - -
{% trans "MAC Address" %} - {{ object.mac_address|placeholder }} - {% copy_content object.pk prefix="macaddress_" %} -
{% trans "Description" %}{{ object.description|placeholder }}
{% trans "Assignment" %} - {% if object.assigned_object %} - {{ object.assigned_object.parent_object|linkify }} / - {{ object.assigned_object|linkify }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
{% trans "Primary for interface" %}{% checkmark object.is_primary %}
-
- {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_left_page object %} -
-
- {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/modulebay.html b/netbox/templates/dcim/modulebay.html index 054a13b1c..ca711665b 100644 --- a/netbox/templates/dcim/modulebay.html +++ b/netbox/templates/dcim/modulebay.html @@ -1,6 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} {% load i18n %} {% block breadcrumbs %} @@ -9,83 +7,3 @@ {{ object.device }} {% endblock %} - -{% block content %} -
-
-
-

{% trans "Module Bay" %}

- - - - - - - - - - - - - - - - - - - - - - - - - -
{% trans "Device" %} - {{ object.device }} -
{% trans "Module" %}{{ object.module|linkify|placeholder }}
{% trans "Name" %}{{ object.name }}
{% trans "Label" %}{{ object.label|placeholder }}
{% trans "Position" %}{{ object.position|placeholder }}
{% trans "Description" %}{{ object.description|placeholder }}
-
- {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
-
- {% include 'inc/panels/custom_fields.html' %} -
-

{% trans "Installed Module" %}

- {% if object.installed_module %} - {% with module=object.installed_module %} - - - - - - - - - - - - - - - - - - - - - -
{% trans "Module" %}{{ module|linkify }}
{% trans "Manufacturer" %}{{ module.module_type.manufacturer|linkify }}
{% trans "Module Type" %}{{ module.module_type|linkify }}
{% trans "Serial Number" %}{{ module.serial|placeholder }}
{% trans "Asset Tag" %}{{ module.asset_tag|placeholder }}
- {% endwith %} - {% else %} -
{% trans "None" %}
- {% endif %} -
- {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/panels/cable_termination_a.html b/netbox/templates/dcim/panels/cable_termination_a.html new file mode 100644 index 000000000..50f7b028d --- /dev/null +++ b/netbox/templates/dcim/panels/cable_termination_a.html @@ -0,0 +1,6 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + {% include 'dcim/inc/cable_termination.html' with terminations=object.a_terminations %} +{% endblock panel_content %} diff --git a/netbox/templates/dcim/panels/cable_termination_b.html b/netbox/templates/dcim/panels/cable_termination_b.html new file mode 100644 index 000000000..bfd56f621 --- /dev/null +++ b/netbox/templates/dcim/panels/cable_termination_b.html @@ -0,0 +1,6 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + {% include 'dcim/inc/cable_termination.html' with terminations=object.b_terminations %} +{% endblock panel_content %} diff --git a/netbox/templates/dcim/panels/component_inventory_items.html b/netbox/templates/dcim/panels/component_inventory_items.html new file mode 100644 index 000000000..02b3e1d6a --- /dev/null +++ b/netbox/templates/dcim/panels/component_inventory_items.html @@ -0,0 +1,40 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + + + + + + + + + + + {% for item in object.inventory_items.all %} + + + + + + + {% empty %} + + + + {% endfor %} + +
{% trans "Name" %}{% trans "Label" %}{% trans "Role" %}
{{ item|linkify:"name" }}{{ item.label|placeholder }}{{ item.role|linkify|placeholder }} + {% if perms.dcim.change_inventoryitem %} + + + + {% endif %} + {% if perms.dcim.delete_inventoryitem %} + + + + {% endif %} +
{% trans "None" %}
+{% endblock panel_content %} diff --git a/netbox/templates/dcim/panels/connection.html b/netbox/templates/dcim/panels/connection.html new file mode 100644 index 000000000..59b24520b --- /dev/null +++ b/netbox/templates/dcim/panels/connection.html @@ -0,0 +1,96 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + {% if object.mark_connected %} +
+ + {% trans "Marked as connected" %} +
+ {% elif object.cable %} + {% if show_endpoints %} + + + + + + + + + + + + + +
{% trans "Cable" %} + {{ object.cable|linkify }} + + + +
{% trans "Path status" %} + {% if object.path.is_complete and object.path.is_active %} + {% trans "Reachable" %} + {% else %} + {% trans "Not Reachable" %} + {% endif %} +
{% trans "Path endpoints" %} + {% for endpoint in object.connected_endpoints %} + {% if endpoint.parent_object %} + {{ endpoint.parent_object|linkify }} + + {% endif %} + {{ endpoint|linkify }} + {% if not forloop.last %}
{% endif %} + {% empty %} + {{ ''|placeholder }} + {% endfor %} +
+ {% else %} + + + + + + + + + +
{% trans "Cable" %} + {{ object.cable|linkify }} + + + +
{% trans "Connection status" %} + {% if object.cable.status %} + {{ object.cable.get_status_display }} + {% else %} + {{ object.cable.get_status_display }} + {% endif %} +
+ {% endif %} + {% else %} +
+ {% trans "Not Connected" %} + {% if perms.dcim.add_cable %} + {% if connect_options|length > 1 %} + + {% elif connect_options|length == 1 %} + + {% trans "Connect" %} + + {% endif %} + {% endif %} +
+ {% endif %} +{% endblock panel_content %} diff --git a/netbox/templates/dcim/panels/front_port_mappings.html b/netbox/templates/dcim/panels/front_port_mappings.html new file mode 100644 index 000000000..aef48cb2c --- /dev/null +++ b/netbox/templates/dcim/panels/front_port_mappings.html @@ -0,0 +1,29 @@ +{% load i18n %} + +
+

{% trans "Port Mappings" %}

+ + {% if rear_port_mappings %} + + + + + + + {% endif %} + + {% for mapping in rear_port_mappings %} + + + + + {% empty %} + + + + {% endfor %} + +
{% trans "Position" %}{% trans "Rear Port" %}
{{ mapping.front_port_position }} + {{ mapping.rear_port }}:{{ mapping.rear_port_position }} +
{% trans "No mappings defined" %}
+
diff --git a/netbox/templates/dcim/panels/installed_device.html b/netbox/templates/dcim/panels/installed_device.html new file mode 100644 index 000000000..c95bf7f5d --- /dev/null +++ b/netbox/templates/dcim/panels/installed_device.html @@ -0,0 +1,21 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + {% if object.installed_device %} + {% with device=object.installed_device %} + + + + + + + + + +
{% trans "Device" %}{{ device|linkify }}
{% trans "Device type" %}{{ device.device_type }}
+ {% endwith %} + {% else %} +
{% trans "None" %}
+ {% endif %} +{% endblock panel_content %} diff --git a/netbox/templates/dcim/panels/installed_module.html b/netbox/templates/dcim/panels/installed_module.html new file mode 100644 index 000000000..8125d2a63 --- /dev/null +++ b/netbox/templates/dcim/panels/installed_module.html @@ -0,0 +1,33 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + {% if object.installed_module %} + {% with module=object.installed_module %} + + + + + + + + + + + + + + + + + + + + + +
{% trans "Module" %}{{ module|linkify }}
{% trans "Manufacturer" %}{{ module.module_type.manufacturer|linkify }}
{% trans "Module type" %}{{ module.module_type|linkify }}
{% trans "Serial number" %}{{ module.serial|placeholder }}
{% trans "Asset tag" %}{{ module.asset_tag|placeholder }}
+ {% endwith %} + {% else %} +
{% trans "None" %}
+ {% endif %} +{% endblock panel_content %} diff --git a/netbox/templates/dcim/panels/interface_connection.html b/netbox/templates/dcim/panels/interface_connection.html new file mode 100644 index 000000000..781c69d90 --- /dev/null +++ b/netbox/templates/dcim/panels/interface_connection.html @@ -0,0 +1,105 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + {% if object.mark_connected %} +
+ + {% trans "Marked as connected" %} +
+ {% elif object.cable %} + + + + + + + + + + + + + +
{% trans "Cable" %} + {{ object.cable|linkify }} + + + +
{% trans "Path status" %} + {% if object.path.is_complete and object.path.is_active %} + {% trans "Reachable" %} + {% else %} + {% trans "Not Reachable" %} + {% endif %} +
{% trans "Path endpoints" %} + {% for endpoint in object.connected_endpoints %} + {% if endpoint.parent_object %} + {{ endpoint.parent_object|linkify }} + + {% endif %} + {{ endpoint|linkify }} + {% if not forloop.last %}
{% endif %} + {% empty %} + {{ ''|placeholder }} + {% endfor %} +
+ {% elif object.wireless_link %} + + + + + + {% with peer_interface=object.link_peers.0 %} + + + + + + + + + + + + + {% endwith %} +
{% trans "Wireless Link" %} + {{ object.wireless_link|linkify }} + + + +
{% trans "Device" %}{{ peer_interface.device|linkify }}
{% trans "Name" %}{{ peer_interface|linkify }}
{% trans "Type" %}{{ peer_interface.get_type_display }}
+ {% else %} +
+ {% trans "Not Connected" %} + {% if object.is_wired and perms.dcim.add_cable %} + + {% elif object.is_wireless and perms.wireless.add_wirelesslink %} + + {% endif %} +
+ {% endif %} +{% endblock panel_content %} diff --git a/netbox/templates/dcim/panels/interface_virtual_circuit.html b/netbox/templates/dcim/panels/interface_virtual_circuit.html new file mode 100644 index 000000000..70e0c065c --- /dev/null +++ b/netbox/templates/dcim/panels/interface_virtual_circuit.html @@ -0,0 +1,35 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + + + + + + + + + + + + + + + + + + + + + +
{% trans "Provider" %}{{ object.virtual_circuit_termination.virtual_circuit.provider|linkify }}
{% trans "Provider Network" %}{{ object.virtual_circuit_termination.virtual_circuit.provider_network|linkify }}
{% trans "Circuit ID" %}{{ object.virtual_circuit_termination.virtual_circuit|linkify }}
{% trans "Role" %}{{ object.virtual_circuit_termination.get_role_display }}
{% trans "Connections" %} + {% for termination in object.virtual_circuit_termination.peer_terminations %} + {{ termination.interface.parent_object }} + + {{ termination.interface }} + ({{ termination.get_role_display }}) + {% if not forloop.last %}
{% endif %} + {% endfor %} +
+{% endblock panel_content %} diff --git a/netbox/templates/dcim/panels/interface_wireless.html b/netbox/templates/dcim/panels/interface_wireless.html new file mode 100644 index 000000000..dfc7a3452 --- /dev/null +++ b/netbox/templates/dcim/panels/interface_wireless.html @@ -0,0 +1,72 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + {% with peer=object.connected_endpoints.0 %} + + + + + + {% if peer %} + + {% endif %} + + + + + + {% if peer %} + + {% endif %} + + + + + {% if peer %} + + {{ peer.get_rf_channel_display|placeholder }} + + {% endif %} + + + + + {% if peer %} + + {% if peer.rf_channel_frequency %} + {{ peer.rf_channel_frequency|floatformat:"-2" }} {% trans "MHz" %} + {% else %} + {{ ''|placeholder }} + {% endif %} + + {% endif %} + + + + + {% if peer %} + + {% if peer.rf_channel_width %} + {{ peer.rf_channel_width|floatformat:"-3" }} {% trans "MHz" %} + {% else %} + {{ ''|placeholder }} + {% endif %} + + {% endif %} + +
{% trans "Local" %}{% trans "Peer" %}
{% trans "Role" %}{{ object.get_rf_role_display|placeholder }}{{ peer.get_rf_role_display|placeholder }}
{% trans "Channel" %}{{ object.get_rf_channel_display|placeholder }}
{% trans "Channel frequency" %} + {% if object.rf_channel_frequency %} + {{ object.rf_channel_frequency|floatformat:"-2" }} {% trans "MHz" %} + {% else %} + {{ ''|placeholder }} + {% endif %} +
{% trans "Channel width" %} + {% if object.rf_channel_width %} + {{ object.rf_channel_width|floatformat:"-3" }} {% trans "MHz" %} + {% else %} + {{ ''|placeholder }} + {% endif %} +
+ {% endwith %} +{% endblock panel_content %} diff --git a/netbox/templates/dcim/panels/interface_wireless_lans.html b/netbox/templates/dcim/panels/interface_wireless_lans.html new file mode 100644 index 000000000..30c83101d --- /dev/null +++ b/netbox/templates/dcim/panels/interface_wireless_lans.html @@ -0,0 +1,25 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + + + + + + + + + {% for wlan in object.wireless_lans.all %} + + + + + {% empty %} + + + + {% endfor %} + +
{% trans "Group" %}{% trans "SSID" %}
{{ wlan.group|linkify|placeholder }}{{ wlan|linkify:"ssid" }}
{% trans "None" %}
+{% endblock panel_content %} diff --git a/netbox/templates/dcim/panels/rear_port_mappings.html b/netbox/templates/dcim/panels/rear_port_mappings.html new file mode 100644 index 000000000..557229589 --- /dev/null +++ b/netbox/templates/dcim/panels/rear_port_mappings.html @@ -0,0 +1,29 @@ +{% load i18n %} + +
+

{% trans "Port Mappings" %}

+ + {% if front_port_mappings %} + + + + + + + {% endif %} + + {% for mapping in front_port_mappings %} + + + + + {% empty %} + + + + {% endfor %} + +
{% trans "Position" %}{% trans "Front Port" %}
{{ mapping.rear_port_position }} + {{ mapping.front_port }}:{{ mapping.front_port_position }} +
{% trans "No mappings defined" %}
+
diff --git a/netbox/templates/dcim/panels/virtual_chassis_members.html b/netbox/templates/dcim/panels/virtual_chassis_members.html index 29e422ea6..43e14cc32 100644 --- a/netbox/templates/dcim/panels/virtual_chassis_members.html +++ b/netbox/templates/dcim/panels/virtual_chassis_members.html @@ -17,7 +17,7 @@ {{ vc_member|linkify }} {% badge vc_member.vc_position show_empty=True %} - {% if object.virtual_chassis.master == vc_member %} + {% if virtual_chassis.master == vc_member %} {% checkmark True %} {% else %} {{ ''|placeholder }} diff --git a/netbox/templates/dcim/powerfeed.html b/netbox/templates/dcim/powerfeed.html index f03ead88b..bbb1609b9 100644 --- a/netbox/templates/dcim/powerfeed.html +++ b/netbox/templates/dcim/powerfeed.html @@ -1,9 +1,4 @@ {% extends 'generic/object.html' %} -{% load buttons %} -{% load static %} -{% load helpers %} -{% load plugins %} -{% load i18n %} {% block breadcrumbs %} {{ block.super }} @@ -13,126 +8,3 @@ {% endif %} {% endblock %} - -{% block content %} -
-
-
-

{% trans "Power Feed" %}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {% with utilization=object.connected_endpoints.0.get_power_draw %} - {% if utilization %} - - {% else %} - - {% endif %} - {% endwith %} - -
{% trans "Power Panel" %}{{ object.power_panel|linkify }}
{% trans "Rack" %}{{ object.rack|linkify|placeholder }}
{% trans "Type" %}{% badge object.get_type_display bg_color=object.get_type_color %}
{% trans "Status" %}{% badge object.get_status_display bg_color=object.get_status_color %}
{% trans "Description" %}{{ object.description|placeholder }}
{% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
{% trans "Connected Device" %} - {% if object.connected_endpoints %} - {{ object.connected_endpoints.0.device|linkify }} ({{ object.connected_endpoints.0|linkify:"name" }}) - {% else %} - {{ ''|placeholder }} - {% endif %} -
{% trans "Utilization (Allocated" %}) - {{ utilization.allocated }}{% trans "VA" %} / {{ object.available_power }}{% trans "VA" %} - {% if object.available_power > 0 %} - {% utilization_graph utilization.allocated|percentage:object.available_power %} - {% endif %} - {{ ''|placeholder }}
-
-
-

{% trans "Electrical Characteristics" %}

- - - - - - - - - - - - - - - - - - - - - -
{% trans "Supply" %}{{ object.get_supply_display }}
{% trans "Voltage" %}{{ object.voltage }}{% trans "V" context "Abbreviation for volts" %}
{% trans "Amperage" %}{{ object.amperage }}{% trans "A" context "Abbreviation for amperes" %}
{% trans "Phase" %}{{ object.get_phase_display }}
{% trans "Max Utilization" %}{{ object.max_utilization }}%
-
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
-
-
-

{% trans "Connection" %}

- {% if object.mark_connected %} -
- - {% trans "Marked as connected" %} -
- {% elif object.cable %} - {% include 'dcim/inc/connection_endpoints.html' with trace_url='dcim:powerfeed_trace' %} - {% else %} -
- {% trans "Not connected" %} - {% if perms.dcim.add_cable %} - - {% trans "Connect" %} - - {% endif %} -
- {% endif %} -
- {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/powerfeed/attrs/connected_device.html b/netbox/templates/dcim/powerfeed/attrs/connected_device.html new file mode 100644 index 000000000..5a660f5ad --- /dev/null +++ b/netbox/templates/dcim/powerfeed/attrs/connected_device.html @@ -0,0 +1,6 @@ +{% load helpers %} +{% if value %} + {{ value.0.device|linkify }} ({{ value.0|linkify:"name" }}) +{% else %} + {{ ''|placeholder }} +{% endif %} diff --git a/netbox/templates/dcim/powerfeed/attrs/utilization.html b/netbox/templates/dcim/powerfeed/attrs/utilization.html new file mode 100644 index 000000000..a0dbf6801 --- /dev/null +++ b/netbox/templates/dcim/powerfeed/attrs/utilization.html @@ -0,0 +1,15 @@ +{% load helpers i18n %} +{% if value %} + {% with utilization=value.0.get_power_draw %} + {% if utilization %} + {{ utilization.allocated }}{% trans "VA" %} / {{ object.available_power }}{% trans "VA" %} + {% if object.available_power > 0 %} + {% utilization_graph utilization.allocated|percentage:object.available_power %} + {% endif %} + {% else %} + {{ ''|placeholder }} + {% endif %} + {% endwith %} +{% else %} + {{ ''|placeholder }} +{% endif %} diff --git a/netbox/templates/dcim/poweroutlet.html b/netbox/templates/dcim/poweroutlet.html index a3cbb2a8e..bef31cd55 100644 --- a/netbox/templates/dcim/poweroutlet.html +++ b/netbox/templates/dcim/poweroutlet.html @@ -1,6 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} {% load i18n %} {% block breadcrumbs %} @@ -9,93 +7,3 @@ {{ object.device }} {% endblock %} - -{% block content %} -
-
-
-

{% trans "Power Outlet" %}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{% trans "Device" %}{{ object.device|linkify }}
{% trans "Module" %}{{ object.module|linkify|placeholder }}
{% trans "Name" %}{{ object.name }}
{% trans "Label" %}{{ object.label|placeholder }}
{% trans "Type" %}{{ object.get_type_display }}
{% trans "Status" %}{% badge object.get_status_display bg_color=object.get_status_color %}
{% trans "Description" %}{{ object.description|placeholder }}
{% trans "Color" %} - {% if object.color %} -   - {% else %} - {{ ''|placeholder }} - {% endif %} -
{% trans "Power Port" %}{{ object.power_port|linkify|placeholder }}
{% trans "Feed Leg" %}{{ object.get_feed_leg_display|placeholder }}
-
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
-
-
-

{% trans "Connection" %}

- {% if object.mark_connected %} -
- - {% trans "Marked as Connected" %} -
- {% elif object.cable %} - {% include 'dcim/inc/connection_endpoints.html' with trace_url='dcim:poweroutlet_trace' %} - {% else %} -
- {% trans "Not Connected" %} - {% if perms.dcim.add_cable %} - - {% trans "Connect" %} - - {% endif %} -
- {% endif %} -
- {% include 'dcim/inc/panels/inventory_items.html' %} - {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/powerpanel.html b/netbox/templates/dcim/powerpanel.html index a685789f5..56f3c5f30 100644 --- a/netbox/templates/dcim/powerpanel.html +++ b/netbox/templates/dcim/powerpanel.html @@ -1,8 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} {% block breadcrumbs %} {{ block.super }} @@ -11,72 +7,3 @@ {% endif %} {% endblock %} - -{% block content %} -
-
-
-

{% trans "Power Panel" %}

- - - - - - - - - - - - - -
{% trans "Site" %}{{ object.site|linkify }}
{% trans "Location" %}{{ object.location|linkify|placeholder }}
{% trans "Description" %}{{ object.description|placeholder }}
-
- {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_left_page object %} -
-
- {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/image_attachments.html' %} - {% plugin_right_page object %} -
-
-
-
-
- {% csrf_token %} -
-

{% trans "Power Feeds" %}

- {% htmx_table 'dcim:powerfeed_list' power_panel_id=object.pk %} - -
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/powerport.html b/netbox/templates/dcim/powerport.html index be05fdae2..3b8c8a00a 100644 --- a/netbox/templates/dcim/powerport.html +++ b/netbox/templates/dcim/powerport.html @@ -1,6 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} {% load i18n %} {% block breadcrumbs %} @@ -9,89 +7,3 @@ {{ object.device }} {% endblock %} - -{% block content %} -
-
-
-

{% trans "Power Port" %}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{% trans "Device" %}{{ object.device|linkify }}
{% trans "Module" %}{{ object.module|linkify|placeholder }}
{% trans "Name" %}{{ object.name }}
{% trans "Label" %}{{ object.label|placeholder }}
{% trans "Type" %}{{ object.get_type_display|placeholder }}
{% trans "Description" %}{{ object.description|placeholder }}
{% trans "Maximum Draw" %}{{ object.maximum_draw|placeholder }}
{% trans "Allocated Draw" %}{{ object.allocated_draw|placeholder }}
-
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
-
-
-

{% trans "Connection" %}

- {% if object.mark_connected %} -
- - {% trans "Marked as Connected" %} -
- {% elif object.cable %} - {% include 'dcim/inc/connection_endpoints.html' with trace_url='dcim:powerport_trace' %} - {% else %} -
- {% trans "Not Connected" %} - {% if perms.dcim.add_cable %} - - - - - {% endif %} -
- {% endif %} -
- {% include 'dcim/inc/panels/inventory_items.html' %} - {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/rearport.html b/netbox/templates/dcim/rearport.html index a4c111ecf..50cdf9e4e 100644 --- a/netbox/templates/dcim/rearport.html +++ b/netbox/templates/dcim/rearport.html @@ -1,6 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} {% load i18n %} {% block breadcrumbs %} @@ -9,143 +7,3 @@ {{ object.device }} {% endblock %} - -{% block content %} -
-
-
-

{% trans "Rear Port" %}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{% trans "Device" %}{{ object.device|linkify }}
{% trans "Module" %}{{ object.module|linkify|placeholder }}
{% trans "Name" %}{{ object.name }}
{% trans "Label" %}{{ object.label|placeholder }}
{% trans "Type" %}{{ object.get_type_display }}
{% trans "Color" %} - {% if object.color %} -   - {% else %} - {{ ''|placeholder }} - {% endif %} -
{% trans "Positions" %}{{ object.positions }}
{% trans "Description" %}{{ object.description|placeholder }}
-
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% include 'dcim/inc/panels/inventory_items.html' %} - {% plugin_left_page object %} -
-
-
-

{% trans "Connection" %}

- {% if object.mark_connected %} -
- {% trans "Marked as Connected" %} -
- {% elif object.cable %} - - - - - - - - - -
{% trans "Cable" %} - {{ object.cable|linkify }} - - - -
{% trans "Connection Status" %} - {% if object.cable.status %} - {{ object.cable.get_status_display }} - {% else %} - {{ object.cable.get_status_display }} - {% endif %} -
- {% else %} -
- {% trans "Not connected" %} - {% if perms.dcim.add_cable %} - - - - - {% endif %} -
- {% endif %} -
-
-

{% trans "Port Mappings" %}

- - {% if front_port_mappings %} - - - - - - - {% endif %} - {% for mapping in front_port_mappings %} - - - - - {% empty %} - {% trans "No mappings defined" %} - {% endfor %} -
{% trans "Position" %}{% trans "Front Port" %}
{{ mapping.rear_port_position }} - {{ mapping.front_port }}:{{ mapping.front_port_position }} -
-
- {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/virtualchassis.html b/netbox/templates/dcim/virtualchassis.html index da5a812a2..f15e1d050 100644 --- a/netbox/templates/dcim/virtualchassis.html +++ b/netbox/templates/dcim/virtualchassis.html @@ -1,90 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
-
-
-

{% trans "Virtual Chassis" %}

- - - - - - - - - - - - - - - - - -
{% trans "Domain" %}{{ object.domain|placeholder }}
{% trans "Master" %}{{ object.master|linkify }}
{% trans "Description" %}{{ object.description|placeholder }}
Members - {% if object.member_count %} - {{ object.member_count }} - {% else %} - {{ object.member_count }} - {% endif %} -
-
- {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_left_page object %} -
-
-
-

- {% trans "Members" %} - {% if perms.dcim.change_virtualchassis %} - - {% endif %} -

- - - - - - - - - - {% for vc_member in members %} - - - - - - - {% endfor %} -
{% trans "Device" %}{% trans "Position" %}{% trans "Master" %}{% trans "Priority" %}
- {{ vc_member|linkify }} - - {% badge vc_member.vc_position show_empty=True %} - - {% if object.master == vc_member %} - {% checkmark True %} - {% endif %} - - {{ vc_member.vc_priority|placeholder }} -
-
- {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
-
-
-
- {% plugin_full_width_page object %} -
-
-{% endblock %} diff --git a/netbox/templates/dcim/virtualdevicecontext.html b/netbox/templates/dcim/virtualdevicecontext.html index 2aec494b8..f15e1d050 100644 --- a/netbox/templates/dcim/virtualdevicecontext.html +++ b/netbox/templates/dcim/virtualdevicecontext.html @@ -1,87 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} - -{% block breadcrumbs %} - -{% endblock %} - -{% block content %} -
-
-
-

{% trans "Virtual Device Context" %}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{% trans "Name" %}{{ object.name }}
{% trans "Device" %}{{ object.device|linkify }}
{% trans "Identifier" %}{{ object.identifier|placeholder }}
{% trans "Primary IPv4" %} - {% if object.primary_ip4 %} - {{ object.primary_ip4 }} - {% copy_content "primary_ip4" %} - {% else %} - - {% endif %} -
{% trans "Primary IPv6" %} - {% if object.primary_ip6 %} - {{ object.primary_ip6 }} - {% copy_content "primary_ip6" %} - {% else %} - - {% endif %} -
{% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
{% trans "Interfaces" %} - {{ object.interfaces.count }} -
-
- {% plugin_left_page object %} - {% include 'inc/panels/tags.html' %} -
-
- {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
-
-
-
-
-

{% trans "Interfaces" %}

- {% htmx_table 'dcim:interface_list' vdc_id=object.pk %} -
- {% plugin_full_width_page object %} -
-
-{% endblock %} From 2a39ab47d61428c47f268e887c98c5161724cfdc Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Mon, 23 Mar 2026 19:33:26 +0100 Subject: [PATCH 09/41] feat(circuits): Add UI layout panels for circuits app Implement comprehensive UI panel layouts for all circuit models using the new panel system. Add panels for providers, circuits, terminations, groups, and virtual circuits with proper attribute rendering and actions. --- netbox/circuits/ui/__init__.py | 0 netbox/circuits/ui/panels.py | 139 +++++++++++ netbox/circuits/views.py | 195 +++++++++++++++- netbox/netbox/tests/test_ui.py | 215 ++++++++++++++++++ netbox/netbox/ui/attrs.py | 116 +++++++++- netbox/netbox/ui/panels.py | 1 + netbox/templates/circuits/circuit.html | 98 -------- .../circuits/circuit/attrs/commit_rate.html | 2 + .../circuits/circuit_terminations_swap.html | 30 --- netbox/templates/circuits/circuitgroup.html | 41 ---- .../circuits/circuitgroupassignment.html | 44 ---- .../circuits/circuittermination.html | 42 ---- netbox/templates/circuits/circuittype.html | 46 ---- .../inc/circuit_termination_fields.html | 40 ++-- .../panels/circuit_circuit_termination.html | 69 ++++++ .../circuits/panels/circuit_termination.html | 16 ++ netbox/templates/circuits/provider.html | 49 ---- .../templates/circuits/provideraccount.html | 48 ---- .../templates/circuits/providernetwork.html | 63 ----- netbox/templates/circuits/virtualcircuit.html | 90 -------- .../circuits/virtualcircuittermination.html | 66 ------ .../circuits/virtualcircuittype.html | 46 ---- netbox/templates/ui/attrs/generic_object.html | 8 +- netbox/templates/ui/attrs/object_list.html | 10 + 24 files changed, 778 insertions(+), 696 deletions(-) create mode 100644 netbox/circuits/ui/__init__.py create mode 100644 netbox/circuits/ui/panels.py create mode 100644 netbox/netbox/tests/test_ui.py create mode 100644 netbox/templates/circuits/circuit/attrs/commit_rate.html delete mode 100644 netbox/templates/circuits/circuit_terminations_swap.html create mode 100644 netbox/templates/circuits/panels/circuit_circuit_termination.html create mode 100644 netbox/templates/circuits/panels/circuit_termination.html create mode 100644 netbox/templates/ui/attrs/object_list.html diff --git a/netbox/circuits/ui/__init__.py b/netbox/circuits/ui/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/netbox/circuits/ui/panels.py b/netbox/circuits/ui/panels.py new file mode 100644 index 000000000..e8d6cf9bb --- /dev/null +++ b/netbox/circuits/ui/panels.py @@ -0,0 +1,139 @@ +from django.contrib.contenttypes.models import ContentType +from django.utils.translation import gettext_lazy as _ + +from netbox.ui import actions, attrs, panels +from utilities.data import resolve_attr_path + + +class CircuitCircuitTerminationPanel(panels.ObjectPanel): + """ + A panel showing the CircuitTermination assigned to the object. + """ + + template_name = 'circuits/panels/circuit_circuit_termination.html' + title = _('Termination') + + def __init__(self, accessor=None, side=None, **kwargs): + super().__init__(**kwargs) + + if accessor is not None: + self.accessor = accessor + if side is not None: + self.side = side + + def get_context(self, context): + return { + **super().get_context(context), + 'side': self.side, + 'termination': resolve_attr_path(context, f'{self.accessor}.termination_{self.side.lower()}'), + } + + +class CircuitGroupAssignmentsPanel(panels.ObjectsTablePanel): + """ + A panel showing all Circuit Groups attached to the object. + """ + + title = _('Group Assignments') + actions = [ + actions.AddObject( + 'circuits.CircuitGroupAssignment', + url_params={ + 'member_type': lambda ctx: ContentType.objects.get_for_model(ctx['object']).pk, + 'member': lambda ctx: ctx['object'].pk, + 'return_url': lambda ctx: ctx['object'].get_absolute_url(), + }, + label=_('Assign Group'), + ), + ] + + def __init__(self, **kwargs): + super().__init__( + 'circuits.CircuitGroupAssignment', + filters={ + 'member_type_id': lambda ctx: ContentType.objects.get_for_model(ctx['object']).pk, + 'member_id': lambda ctx: ctx['object'].pk, + }, + **kwargs, + ) + + +class CircuitGroupPanel(panels.OrganizationalObjectPanel): + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + + +class CircuitGroupAssignmentPanel(panels.ObjectAttributesPanel): + group = attrs.RelatedObjectAttr('group', linkify=True) + provider = attrs.RelatedObjectAttr('member.provider', linkify=True) + member = attrs.GenericForeignKeyAttr('member', linkify=True) + priority = attrs.ChoiceAttr('priority') + + +class CircuitPanel(panels.ObjectAttributesPanel): + provider = attrs.RelatedObjectAttr('provider', linkify=True) + provider_account = attrs.RelatedObjectAttr('provider_account', linkify=True) + cid = attrs.TextAttr('cid', label=_('Circuit ID'), style='font-monospace', copy_button=True) + type = attrs.RelatedObjectAttr('type', linkify=True) + status = attrs.ChoiceAttr('status') + distance = attrs.NumericAttr('distance', unit_accessor='get_distance_unit_display') + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + install_date = attrs.DateTimeAttr('install_date', spec='date') + termination_date = attrs.DateTimeAttr('termination_date', spec='date') + commit_rate = attrs.TemplatedAttr('commit_rate', template_name='circuits/circuit/attrs/commit_rate.html') + description = attrs.TextAttr('description') + + +class CircuitTypePanel(panels.OrganizationalObjectPanel): + color = attrs.ColorAttr('color') + + +class ProviderPanel(panels.ObjectAttributesPanel): + name = attrs.TextAttr('name') + asns = attrs.RelatedObjectListAttr('asns', linkify=True, label=_('ASNs')) + description = attrs.TextAttr('description') + + +class ProviderAccountPanel(panels.ObjectAttributesPanel): + provider = attrs.RelatedObjectAttr('provider', linkify=True) + account = attrs.TextAttr('account', style='font-monospace', copy_button=True) + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + + +class ProviderNetworkPanel(panels.ObjectAttributesPanel): + provider = attrs.RelatedObjectAttr('provider', linkify=True) + name = attrs.TextAttr('name') + service_id = attrs.TextAttr('service_id', label=_('Service ID'), style='font-monospace', copy_button=True) + description = attrs.TextAttr('description') + + +class VirtualCircuitTypePanel(panels.OrganizationalObjectPanel): + color = attrs.ColorAttr('color') + + +class VirtualCircuitPanel(panels.ObjectAttributesPanel): + provider = attrs.RelatedObjectAttr('provider', linkify=True) + provider_network = attrs.RelatedObjectAttr('provider_network', linkify=True) + provider_account = attrs.RelatedObjectAttr('provider_account', linkify=True) + cid = attrs.TextAttr('cid', label=_('Circuit ID'), style='font-monospace', copy_button=True) + type = attrs.RelatedObjectAttr('type', linkify=True) + status = attrs.ChoiceAttr('status') + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + description = attrs.TextAttr('description') + + +class VirtualCircuitTerminationPanel(panels.ObjectAttributesPanel): + provider = attrs.RelatedObjectAttr('virtual_circuit.provider', linkify=True) + provider_network = attrs.RelatedObjectAttr('virtual_circuit.provider_network', linkify=True) + provider_account = attrs.RelatedObjectAttr('virtual_circuit.provider_account', linkify=True) + virtual_circuit = attrs.RelatedObjectAttr('virtual_circuit', linkify=True) + role = attrs.ChoiceAttr('role') + + +class VirtualCircuitTerminationInterfacePanel(panels.ObjectAttributesPanel): + title = _('Interface') + + device = attrs.RelatedObjectAttr('interface.device', linkify=True) + interface = attrs.RelatedObjectAttr('interface', linkify=True) + type = attrs.ChoiceAttr('interface.type') + description = attrs.TextAttr('interface.description') diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index 970fb8560..ddb4ef358 100644 --- a/netbox/circuits/views.py +++ b/netbox/circuits/views.py @@ -1,13 +1,23 @@ +from django.utils.translation import gettext_lazy as _ from dcim.views import PathTraceView +from extras.ui.panels import CustomFieldsPanel, ImageAttachmentsPanel, TagsPanel from ipam.models import ASN from netbox.object_actions import AddObject, BulkDelete, BulkEdit, BulkExport, BulkImport +from netbox.ui import actions, layout +from netbox.ui.panels import ( + CommentsPanel, + ObjectsTablePanel, + Panel, + RelatedObjectsPanel, +) from netbox.views import generic from utilities.query import count_related from utilities.views import GetRelatedModelsMixin, register_model_view from . import filtersets, forms, tables from .models import * +from .ui import panels # # Providers @@ -29,6 +39,35 @@ class ProviderListView(generic.ObjectListView): @register_model_view(Provider) class ProviderView(GetRelatedModelsMixin, generic.ObjectView): queryset = Provider.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ProviderPanel(), + TagsPanel(), + CommentsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CustomFieldsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + model='circuits.ProviderAccount', + filters={'provider_id': lambda ctx: ctx['object'].pk}, + actions=[ + actions.AddObject( + 'circuits.ProviderAccount', url_params={'provider': lambda ctx: ctx['object'].pk} + ), + ], + ), + ObjectsTablePanel( + model='circuits.Circuit', + filters={'provider_id': lambda ctx: ctx['object'].pk}, + actions=[ + actions.AddObject('circuits.Circuit', url_params={'provider': lambda ctx: ctx['object'].pk}), + ], + ), + ], + ) def get_extra_context(self, request, instance): return { @@ -44,7 +83,7 @@ class ProviderView(GetRelatedModelsMixin, generic.ObjectView): 'provider_id', ), ), - ), + ), } @@ -108,6 +147,32 @@ class ProviderAccountListView(generic.ObjectListView): @register_model_view(ProviderAccount) class ProviderAccountView(GetRelatedModelsMixin, generic.ObjectView): queryset = ProviderAccount.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ProviderAccountPanel(), + TagsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CommentsPanel(), + CustomFieldsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + model='circuits.Circuit', + filters={'provider_account_id': lambda ctx: ctx['object'].pk}, + actions=[ + actions.AddObject( + 'circuits.Circuit', + url_params={ + 'provider': lambda ctx: ctx['object'].provider.pk, + 'provider_account': lambda ctx: ctx['object'].pk, + }, + ), + ], + ), + ], + ) def get_extra_context(self, request, instance): return { @@ -174,6 +239,32 @@ class ProviderNetworkListView(generic.ObjectListView): @register_model_view(ProviderNetwork) class ProviderNetworkView(GetRelatedModelsMixin, generic.ObjectView): queryset = ProviderNetwork.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ProviderNetworkPanel(), + TagsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CommentsPanel(), + CustomFieldsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + model='circuits.Circuit', + filters={'provider_network_id': lambda ctx: ctx['object'].pk}, + ), + ObjectsTablePanel( + model='circuits.VirtualCircuit', + filters={'provider_network_id': lambda ctx: ctx['object'].pk}, + actions=[ + actions.AddObject( + 'circuits.VirtualCircuit', url_params={'provider_network': lambda ctx: ctx['object'].pk} + ), + ], + ), + ], + ) def get_extra_context(self, request, instance): return { @@ -251,6 +342,17 @@ class CircuitTypeListView(generic.ObjectListView): @register_model_view(CircuitType) class CircuitTypeView(GetRelatedModelsMixin, generic.ObjectView): queryset = CircuitType.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.CircuitTypePanel(), + TagsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CommentsPanel(), + CustomFieldsPanel(), + ], + ) def get_extra_context(self, request, instance): return { @@ -318,6 +420,20 @@ class CircuitListView(generic.ObjectListView): @register_model_view(Circuit) class CircuitView(generic.ObjectView): queryset = Circuit.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.CircuitPanel(), + panels.CircuitGroupAssignmentsPanel(), + CustomFieldsPanel(), + TagsPanel(), + CommentsPanel(), + ], + right_panels=[ + panels.CircuitCircuitTerminationPanel(side='A'), + panels.CircuitCircuitTerminationPanel(side='Z'), + ImageAttachmentsPanel(), + ], + ) @register_model_view(Circuit, 'add', detail=False) @@ -390,6 +506,18 @@ class CircuitTerminationListView(generic.ObjectListView): @register_model_view(CircuitTermination) class CircuitTerminationView(generic.ObjectView): queryset = CircuitTermination.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + Panel( + template_name='circuits/panels/circuit_termination.html', + title=_('Circuit Termination'), + ) + ], + right_panels=[ + CustomFieldsPanel(), + TagsPanel(), + ], + ) @register_model_view(CircuitTermination, 'add', detail=False) @@ -446,6 +574,17 @@ class CircuitGroupListView(generic.ObjectListView): @register_model_view(CircuitGroup) class CircuitGroupView(GetRelatedModelsMixin, generic.ObjectView): queryset = CircuitGroup.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.CircuitGroupPanel(), + TagsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CommentsPanel(), + CustomFieldsPanel(), + ], + ) def get_extra_context(self, request, instance): return { @@ -508,6 +647,15 @@ class CircuitGroupAssignmentListView(generic.ObjectListView): @register_model_view(CircuitGroupAssignment) class CircuitGroupAssignmentView(generic.ObjectView): queryset = CircuitGroupAssignment.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.CircuitGroupAssignmentPanel(), + TagsPanel(), + ], + right_panels=[ + CustomFieldsPanel(), + ], + ) @register_model_view(CircuitGroupAssignment, 'add', detail=False) @@ -560,6 +708,17 @@ class VirtualCircuitTypeListView(generic.ObjectListView): @register_model_view(VirtualCircuitType) class VirtualCircuitTypeView(GetRelatedModelsMixin, generic.ObjectView): queryset = VirtualCircuitType.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.VirtualCircuitTypePanel(), + TagsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CommentsPanel(), + CustomFieldsPanel(), + ], + ) def get_extra_context(self, request, instance): return { @@ -627,6 +786,30 @@ class VirtualCircuitListView(generic.ObjectListView): @register_model_view(VirtualCircuit) class VirtualCircuitView(generic.ObjectView): queryset = VirtualCircuit.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.VirtualCircuitPanel(), + TagsPanel(), + ], + right_panels=[ + CustomFieldsPanel(), + CommentsPanel(), + panels.CircuitGroupAssignmentsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + model='circuits.VirtualCircuitTermination', + title=_('Terminations'), + filters={'virtual_circuit_id': lambda ctx: ctx['object'].pk}, + actions=[ + actions.AddObject( + 'circuits.VirtualCircuitTermination', + url_params={'virtual_circuit': lambda ctx: ctx['object'].pk}, + ), + ], + ), + ], + ) @register_model_view(VirtualCircuit, 'add', detail=False) @@ -698,6 +881,16 @@ class VirtualCircuitTerminationListView(generic.ObjectListView): @register_model_view(VirtualCircuitTermination) class VirtualCircuitTerminationView(generic.ObjectView): queryset = VirtualCircuitTermination.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.VirtualCircuitTerminationPanel(), + TagsPanel(), + CustomFieldsPanel(), + ], + right_panels=[ + panels.VirtualCircuitTerminationInterfacePanel(), + ], + ) @register_model_view(VirtualCircuitTermination, 'edit') diff --git a/netbox/netbox/tests/test_ui.py b/netbox/netbox/tests/test_ui.py new file mode 100644 index 000000000..cb76517c1 --- /dev/null +++ b/netbox/netbox/tests/test_ui.py @@ -0,0 +1,215 @@ +from django.test import TestCase + +from circuits.choices import CircuitStatusChoices, VirtualCircuitTerminationRoleChoices +from circuits.models import ( + Provider, + ProviderNetwork, + VirtualCircuit, + VirtualCircuitTermination, + VirtualCircuitType, +) +from dcim.choices import InterfaceTypeChoices +from dcim.models import Interface +from netbox.ui import attrs +from utilities.testing import create_test_device +from vpn.choices import ( + AuthenticationAlgorithmChoices, + AuthenticationMethodChoices, + DHGroupChoices, + EncryptionAlgorithmChoices, + IKEModeChoices, + IKEVersionChoices, + IPSecModeChoices, +) +from vpn.models import IKEPolicy, IKEProposal, IPSecPolicy, IPSecProfile + + +class ChoiceAttrTest(TestCase): + """ + Test class for validating the behavior of ChoiceAttr attribute accessor. + + This test class verifies that the ChoiceAttr class correctly handles + choice field attributes on Django model instances, including both direct + field access and related object field access. It tests the retrieval of + display values and associated context information such as color values + for choice fields. The test data includes a network topology with devices, + interfaces, providers, and virtual circuits to cover various scenarios of + choice field access patterns. + """ + + @classmethod + def setUpTestData(cls): + device = create_test_device('Device 1') + interface = Interface.objects.create( + device=device, + name='vlan.100', + type=InterfaceTypeChoices.TYPE_VIRTUAL, + ) + + provider = Provider.objects.create(name='Provider 1', slug='provider-1') + provider_network = ProviderNetwork.objects.create( + provider=provider, + name='Provider Network 1', + ) + virtual_circuit_type = VirtualCircuitType.objects.create( + name='Virtual Circuit Type 1', + slug='virtual-circuit-type-1', + ) + virtual_circuit = VirtualCircuit.objects.create( + cid='VC-100', + provider_network=provider_network, + type=virtual_circuit_type, + status=CircuitStatusChoices.STATUS_ACTIVE, + ) + + cls.termination = VirtualCircuitTermination.objects.create( + virtual_circuit=virtual_circuit, + role=VirtualCircuitTerminationRoleChoices.ROLE_PEER, + interface=interface, + ) + + def test_choice_attr_direct_accessor(self): + attr = attrs.ChoiceAttr('role') + + self.assertEqual( + attr.get_value(self.termination), + self.termination.get_role_display(), + ) + self.assertEqual( + attr.get_context(self.termination, {}), + {'bg_color': self.termination.get_role_color()}, + ) + + def test_choice_attr_related_accessor(self): + attr = attrs.ChoiceAttr('interface.type') + + self.assertEqual( + attr.get_value(self.termination), + self.termination.interface.get_type_display(), + ) + self.assertEqual( + attr.get_context(self.termination, {}), + {'bg_color': None}, + ) + + def test_choice_attr_related_accessor_with_color(self): + attr = attrs.ChoiceAttr('virtual_circuit.status') + + self.assertEqual( + attr.get_value(self.termination), + self.termination.virtual_circuit.get_status_display(), + ) + self.assertEqual( + attr.get_context(self.termination, {}), + {'bg_color': self.termination.virtual_circuit.get_status_color()}, + ) + + +class RelatedObjectListAttrTest(TestCase): + """ + Test suite for RelatedObjectListAttr functionality. + + This test class validates the behavior of the RelatedObjectListAttr class, + which is used to render related objects as HTML lists. It tests various + scenarios including direct accessor access, related accessor access through + foreign keys, empty related object sets, and rendering with maximum item + limits and overflow indicators. The tests use IKE and IPSec VPN policy + models to verify proper rendering of one-to-many and many-to-many + relationships between objects. + """ + + @classmethod + def setUpTestData(cls): + cls.proposals = ( + IKEProposal.objects.create( + name='IKE Proposal 1', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14, + ), + IKEProposal.objects.create( + name='IKE Proposal 2', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14, + ), + IKEProposal.objects.create( + name='IKE Proposal 3', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14, + ), + ) + + cls.ike_policy = IKEPolicy.objects.create( + name='IKE Policy 1', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ) + cls.ike_policy.proposals.set(cls.proposals) + + cls.empty_ike_policy = IKEPolicy.objects.create( + name='IKE Policy 2', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ) + + cls.ipsec_policy = IPSecPolicy.objects.create(name='IPSec Policy 1') + + cls.profile = IPSecProfile.objects.create( + name='IPSec Profile 1', + mode=IPSecModeChoices.ESP, + ike_policy=cls.ike_policy, + ipsec_policy=cls.ipsec_policy, + ) + cls.empty_profile = IPSecProfile.objects.create( + name='IPSec Profile 2', + mode=IPSecModeChoices.ESP, + ike_policy=cls.empty_ike_policy, + ipsec_policy=cls.ipsec_policy, + ) + + def test_related_object_list_attr_direct_accessor(self): + attr = attrs.RelatedObjectListAttr('proposals', linkify=False) + rendered = attr.render(self.ike_policy, {'name': 'proposals'}) + + self.assertIn('list-unstyled mb-0', rendered) + self.assertInHTML('
  • IKE Proposal 1
  • ', rendered) + self.assertInHTML('
  • IKE Proposal 2
  • ', rendered) + self.assertInHTML('
  • IKE Proposal 3
  • ', rendered) + self.assertEqual(rendered.count('IKE Proposal 1', rendered) + self.assertInHTML('
  • IKE Proposal 2
  • ', rendered) + self.assertInHTML('
  • IKE Proposal 3
  • ', rendered) + self.assertEqual(rendered.count('IKE Proposal 1', rendered) + self.assertInHTML('
  • IKE Proposal 2
  • ', rendered) + self.assertNotIn('IKE Proposal 3', rendered) + self.assertIn('…', rendered) diff --git a/netbox/netbox/ui/attrs.py b/netbox/netbox/ui/attrs.py index b4e2a61ee..e4bd93c4e 100644 --- a/netbox/netbox/ui/attrs.py +++ b/netbox/netbox/ui/attrs.py @@ -18,6 +18,7 @@ __all__ = ( 'NumericAttr', 'ObjectAttribute', 'RelatedObjectAttr', + 'RelatedObjectListAttr', 'TemplatedAttr', 'TextAttr', 'TimezoneAttr', @@ -145,22 +146,40 @@ class ChoiceAttr(ObjectAttribute): """ A selection from a set of choices. - The class calls get_FOO_display() on the object to retrieve the human-friendly choice label. If a get_FOO_color() - method exists on the object, it will be used to render a background color for the attribute value. + The class calls get_FOO_display() on the terminal object resolved by the accessor + to retrieve the human-friendly choice label. For example, accessor="interface.type" + will call interface.get_type_display(). + If a get_FOO_color() method exists on that object, it will be used to render a + background color for the attribute value. """ template_name = 'ui/attrs/choice.html' + def _resolve_target(self, obj): + if not self.accessor or '.' not in self.accessor: + return obj, self.accessor + + object_accessor, field_name = self.accessor.rsplit('.', 1) + return resolve_attr_path(obj, object_accessor), field_name + def get_value(self, obj): - try: - return getattr(obj, f'get_{self.accessor}_display')() - except AttributeError: - return resolve_attr_path(obj, self.accessor) + target, field_name = self._resolve_target(obj) + if target is None: + return None + + display = getattr(target, f'get_{field_name}_display', None) + if callable(display): + return display() + + return resolve_attr_path(target, field_name) def get_context(self, obj, context): - try: - bg_color = getattr(obj, f'get_{self.accessor}_color')() - except AttributeError: - bg_color = None + target, field_name = self._resolve_target(obj) + if target is None: + return {'bg_color': None} + + get_color = getattr(target, f'get_{field_name}_color', None) + bg_color = get_color() if callable(get_color) else None + return { 'bg_color': bg_color, } @@ -254,6 +273,83 @@ class RelatedObjectAttr(ObjectAttribute): } +class RelatedObjectListAttr(RelatedObjectAttr): + """ + An attribute representing a list of related objects. + + The accessor may resolve to a related manager or queryset. + + Parameters: + max_items (int): Maximum number of items to display + overflow_indicator (str | None): Marker rendered as a final list item when + additional objects exist beyond `max_items`; set to None to suppress it + """ + + template_name = 'ui/attrs/object_list.html' + + def __init__(self, *args, max_items=None, overflow_indicator='…', **kwargs): + super().__init__(*args, **kwargs) + + if max_items is not None and (type(max_items) is not int or max_items < 1): + raise ValueError( + _('Invalid max_items value: {max_items}! Must be a positive integer or None.').format( + max_items=max_items + ) + ) + + self.max_items = max_items + self.overflow_indicator = overflow_indicator + + def _get_items(self, obj): + """ + Retrieve items from the given object using the accessor path. + + Returns a tuple of (items, has_more) where items is a list of resolved objects + and has_more indicates whether additional items exist beyond the max_items limit. + """ + items = resolve_attr_path(obj, self.accessor) + if items is None: + return [], False + + if hasattr(items, 'all'): + items = items.all() + + if self.max_items is None: + return list(items), False + + items = list(items[:self.max_items + 1]) + has_more = len(items) > self.max_items + + return items[:self.max_items], has_more + + def get_context(self, obj, context): + items, has_more = self._get_items(obj) + + return { + 'linkify': self.linkify, + 'items': [ + { + 'value': item, + 'group': getattr(item, self.grouped_by, None) if self.grouped_by else None, + } + for item in items + ], + 'overflow_indicator': self.overflow_indicator if has_more else None, + } + + def render(self, obj, context): + context = context or {} + context_data = self.get_context(obj, context) + + if not context_data['items']: + return self.placeholder + + return render_to_string(self.template_name, { + 'name': context.get('name'), + **context_data, + }) + + class NestedObjectAttr(ObjectAttribute): """ An attribute representing a related nested object. Similar to `RelatedObjectAttr`, but includes the ancestors of the diff --git a/netbox/netbox/ui/panels.py b/netbox/netbox/ui/panels.py index 9f4be94db..b1ab1e411 100644 --- a/netbox/netbox/ui/panels.py +++ b/netbox/netbox/ui/panels.py @@ -67,6 +67,7 @@ class Panel: return { 'request': context.get('request'), 'object': context.get('object'), + 'perms': context.get('perms'), 'title': self.title, 'actions': self.actions, 'panel_class': self.__class__.__name__, diff --git a/netbox/templates/circuits/circuit.html b/netbox/templates/circuits/circuit.html index 1037000ba..18b00b98d 100644 --- a/netbox/templates/circuits/circuit.html +++ b/netbox/templates/circuits/circuit.html @@ -1,104 +1,6 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} {% block breadcrumbs %} {{ block.super }} {% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Circuit" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Provider" %}{{ object.provider|linkify }}
    {% trans "Account" %}{{ object.provider_account|linkify|placeholder }}
    {% trans "Circuit ID" %}{{ object.cid }}
    {% trans "Type" %}{{ object.type|linkify }}
    {% trans "Status" %}{% badge object.get_status_display bg_color=object.get_status_color %}
    {% trans "Distance" %} - {% if object.distance is not None %} - {{ object.distance|floatformat }} {{ object.get_distance_unit_display }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
    {% trans "Install Date" %}{{ object.install_date|isodate|placeholder }}
    {% trans "Termination Date" %}{{ object.termination_date|isodate|placeholder }}
    {% trans "Commit Rate" %}{{ object.commit_rate|humanize_speed|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    -
    -

    - {% trans "Group Assignments" %} - {% if perms.circuits.add_circuitgroupassignment %} - - {% endif %} -

    - {% htmx_table 'circuits:circuitgroupassignment_list' circuit_id=object.pk %} -
    - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'circuits/inc/circuit_termination.html' with termination=object.termination_a side='A' %} - {% include 'circuits/inc/circuit_termination.html' with termination=object.termination_z side='Z' %} - {% include 'inc/panels/image_attachments.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/circuits/circuit/attrs/commit_rate.html b/netbox/templates/circuits/circuit/attrs/commit_rate.html new file mode 100644 index 000000000..fc4b15d28 --- /dev/null +++ b/netbox/templates/circuits/circuit/attrs/commit_rate.html @@ -0,0 +1,2 @@ +{% load helpers %} +{{ value|humanize_speed }} diff --git a/netbox/templates/circuits/circuit_terminations_swap.html b/netbox/templates/circuits/circuit_terminations_swap.html deleted file mode 100644 index 1ddb67bac..000000000 --- a/netbox/templates/circuits/circuit_terminations_swap.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends 'generic/confirmation_form.html' %} -{% load i18n %} - -{% block title %}{% trans "Swap Circuit Terminations" %}{% endblock %} - -{% block message %} -

    - {% blocktrans trimmed %} - Swap these terminations for circuit {{ circuit }}? - {% endblocktrans %} -

    -
      -
    • - {% trans "A side" %}: - {% if termination_a %} - {{ termination_a.site }} {% if termination_a.interface %}- {{ termination_a.interface.device }} {{ termination_a.interface }}{% endif %} - {% else %} - {% trans "None" %} - {% endif %} -
    • -
    • - {% trans "Z side" %}: - {% if termination_z %} - {{ termination_z.site }} {% if termination_z.interface %}- {{ termination_z.interface.device }} {{ termination_z.interface }}{% endif %} - {% else %} - {% trans "None" %} - {% endif %} -
    • -
    -{% endblock %} diff --git a/netbox/templates/circuits/circuitgroup.html b/netbox/templates/circuits/circuitgroup.html index 0ada4cc53..16ec51510 100644 --- a/netbox/templates/circuits/circuitgroup.html +++ b/netbox/templates/circuits/circuitgroup.html @@ -1,8 +1,4 @@ {% extends 'generic/object.html' %} -{% load static %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} {% load i18n %} {% block breadcrumbs %} @@ -17,40 +13,3 @@ {% endif %} {% endblock extra_controls %} - -{% block content %} -
    -
    -
    -

    {% trans "Circuit Group" %}

    - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/circuits/circuitgroupassignment.html b/netbox/templates/circuits/circuitgroupassignment.html index bca3f752a..a80615afd 100644 --- a/netbox/templates/circuits/circuitgroupassignment.html +++ b/netbox/templates/circuits/circuitgroupassignment.html @@ -1,9 +1,4 @@ {% extends 'generic/object.html' %} -{% load static %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} {% block breadcrumbs %} {{ block.super }} @@ -11,42 +6,3 @@ {{ object.group }} {% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Circuit Group Assignment" %}

    - - - - - - - - - - - - - - - - - -
    {% trans "Group" %}{{ object.group|linkify }}
    {% trans "Provider" %}{{ object.member.provider|linkify }}
    {% trans "Circuit" %}{{ object.member|linkify }}
    {% trans "Priority" %}{{ object.get_priority_display }}
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/circuits/circuittermination.html b/netbox/templates/circuits/circuittermination.html index c4e63495d..4a694c8f1 100644 --- a/netbox/templates/circuits/circuittermination.html +++ b/netbox/templates/circuits/circuittermination.html @@ -7,45 +7,3 @@ {{ block.super }} {% endblock %} - -{% block content %} -
    -
    - -
    - {% if object %} - - - - - - - - - - {% include 'circuits/inc/circuit_termination_fields.html' with termination=object %} -
    {% trans "Circuit" %} - {{ object.circuit|linkify }} -
    {% trans "Provider" %} - {{ object.circuit.provider|linkify }} -
    - {% else %} -
    - {% trans "None" %} -
    - {% endif %} -
    - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/circuits/circuittype.html b/netbox/templates/circuits/circuittype.html index a652ab605..f44bb43f3 100644 --- a/netbox/templates/circuits/circuittype.html +++ b/netbox/templates/circuits/circuittype.html @@ -1,7 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} {% load i18n %} {% block extra_controls %} @@ -11,46 +8,3 @@ {% endif %} {% endblock extra_controls %} - -{% block content %} -
    -
    -
    -

    {% trans "Circuit Type" %}

    - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Color" %} - {% if object.color %} -   - {% else %} - {{ ''|placeholder }} - {% endif %} -
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/circuits/inc/circuit_termination_fields.html b/netbox/templates/circuits/inc/circuit_termination_fields.html index efe30e28e..1ea465fca 100644 --- a/netbox/templates/circuits/inc/circuit_termination_fields.html +++ b/netbox/templates/circuits/inc/circuit_termination_fields.html @@ -55,31 +55,33 @@
  • {% trans "Circuit Termination" %}
  • + {% else %} + {{ ''|placeholder }} + {% endif %} + + + + {% trans "Speed" %} + + {% if termination.port_speed and termination.upstream_speed %} + {{ termination.port_speed|humanize_speed }}   + {{ termination.upstream_speed|humanize_speed }} + {% elif termination.port_speed %} + {{ termination.port_speed|humanize_speed }} + {% else %} + {{ ''|placeholder }} {% endif %} - {% trans "Speed" %} - - {% if termination.port_speed and termination.upstream_speed %} - {{ termination.port_speed|humanize_speed }}   - {{ termination.upstream_speed|humanize_speed }} - {% elif termination.port_speed %} - {{ termination.port_speed|humanize_speed }} - {% else %} - {{ ''|placeholder }} - {% endif %} - + {% trans "Cross-Connect" %} + {{ termination.xconnect_id|placeholder }} - {% trans "Cross-Connect" %} - {{ termination.xconnect_id|placeholder }} + {% trans "Patch Panel/Port" %} + {{ termination.pp_info|placeholder }} - {% trans "Patch Panel/Port" %} - {{ termination.pp_info|placeholder }} - - - {% trans "Description" %} - {{ termination.description|placeholder }} + {% trans "Description" %} + {{ termination.description|placeholder }} diff --git a/netbox/templates/circuits/panels/circuit_circuit_termination.html b/netbox/templates/circuits/panels/circuit_circuit_termination.html new file mode 100644 index 000000000..5f79d48d4 --- /dev/null +++ b/netbox/templates/circuits/panels/circuit_circuit_termination.html @@ -0,0 +1,69 @@ +{% load helpers %} +{% load i18n %} + +
    +

    + {% blocktrans %}Termination{% endblocktrans %} {{ side }} +
    + {% if not termination and perms.circuits.add_circuittermination %} + + {% trans "Add" %} + + {% endif %} + {% if termination and perms.circuits.change_circuittermination %} + + {% trans "Edit" %} + + {% endif %} + {% if termination and perms.circuits.delete_circuittermination %} + + {% trans "Delete" %} + + {% endif %} +
    +

    + {% if termination %} + + {% include 'circuits/inc/circuit_termination_fields.html' with termination=termination %} + + + + + {% for group_name, fields in termination.get_custom_fields_by_group.items %} + + + + {% for field, value in fields.items %} + + + + + {% endfor %} + {% endfor %} +
    {% trans "Tags" %} + {% for tag in termination.tags.all %} + {% tag tag %} + {% empty %} + {{ ''|placeholder }} + {% endfor %} +
    + {% trans "Custom Fields" as default_group_label %} + {{ group_name|default:default_group_label }} +
    {{ field }} + {% if field.description %} + + {% endif %} + + {% customfield_value field value %} +
    + {% else %} +
    + {% trans "None" %} +
    + {% endif %} +
    diff --git a/netbox/templates/circuits/panels/circuit_termination.html b/netbox/templates/circuits/panels/circuit_termination.html new file mode 100644 index 000000000..5583d1536 --- /dev/null +++ b/netbox/templates/circuits/panels/circuit_termination.html @@ -0,0 +1,16 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + + + + + + + + + + {% include 'circuits/inc/circuit_termination_fields.html' with termination=object %} +
    {% trans "Circuit" %}{{ object.circuit|linkify|placeholder }}
    {% trans "Provider" %}{{ object.circuit.provider|linkify|placeholder }}
    +{% endblock panel_content %} diff --git a/netbox/templates/circuits/provider.html b/netbox/templates/circuits/provider.html index 70f0c5ba5..7349bd9c3 100644 --- a/netbox/templates/circuits/provider.html +++ b/netbox/templates/circuits/provider.html @@ -12,52 +12,3 @@ {% endif %} {% endblock extra_controls %} - -{% block content %} -
    -
    -
    -

    {% trans "Provider" %}

    - - - - - - - - - -
    {% trans "ASNs" %} - {% for asn in object.asns.all %} - {{ asn|linkify }}{% if not forloop.last %}, {% endif %} - {% empty %} - {{ ''|placeholder }} - {% endfor %} -
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    {% trans "Provider Accounts" %}

    - {% htmx_table 'circuits:provideraccount_list' provider_id=object.pk %} -
    -
    -
    -
    -

    {% trans "Circuits" %}

    - {% htmx_table 'circuits:circuit_list' provider_id=object.pk %} -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/circuits/provideraccount.html b/netbox/templates/circuits/provideraccount.html index 41cf8c033..17b8519f2 100644 --- a/netbox/templates/circuits/provideraccount.html +++ b/netbox/templates/circuits/provideraccount.html @@ -1,54 +1,6 @@ {% extends 'generic/object.html' %} -{% load static %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} {% block breadcrumbs %} {{ block.super }} {% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Provider Account" %}

    - - - - - - - - - - - - - - - - - -
    {% trans "Provider" %}{{ object.provider|linkify }}
    {% trans "Account" %}{{ object.account }}
    {% trans "Name" %}{{ object.name|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -

    {% trans "Circuits" %}

    - {% htmx_table 'circuits:circuit_list' provider_account_id=object.pk %} -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/circuits/providernetwork.html b/netbox/templates/circuits/providernetwork.html index 3348a0ae3..92bad10ca 100644 --- a/netbox/templates/circuits/providernetwork.html +++ b/netbox/templates/circuits/providernetwork.html @@ -1,69 +1,6 @@ {% extends 'generic/object.html' %} -{% load static %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} {% block breadcrumbs %} {{ block.super }} {% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Provider Network" %}

    - - - - - - - - - - - - - - - - - -
    {% trans "Provider" %}{{ object.provider|linkify }}
    {% trans "Name" %}{{ object.name }}
    {% trans "Service ID" %}{{ object.service_id|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    {% trans "Circuits" %}

    - {% htmx_table 'circuits:circuit_list' provider_network_id=object.pk %} -
    -
    -

    - {% trans "Virtual Circuits" %} - {% if perms.circuits.add_virtualcircuit %} - - {% endif %} -

    - {% htmx_table 'circuits:virtualcircuit_list' provider_network_id=object.pk %} -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/circuits/virtualcircuit.html b/netbox/templates/circuits/virtualcircuit.html index 1a23c3597..ad65b3342 100644 --- a/netbox/templates/circuits/virtualcircuit.html +++ b/netbox/templates/circuits/virtualcircuit.html @@ -1,7 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} {% block breadcrumbs %} {{ block.super }} @@ -12,90 +9,3 @@ {{ object.provider_network }} {% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Virtual circuit" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Provider" %}{{ object.provider|linkify }}
    {% trans "Provider Network" %}{{ object.provider_network|linkify }}
    {% trans "Provider account" %}{{ object.provider_account|linkify|placeholder }}
    {% trans "Circuit ID" %}{{ object.cid }}
    {% trans "Type" %}{{ object.type|linkify }}
    {% trans "Status" %}{% badge object.get_status_display bg_color=object.get_status_color %}
    {% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/comments.html' %} -
    -

    - {% trans "Group Assignments" %} - {% if perms.circuits.add_circuitgroupassignment %} - - {% endif %} -

    - {% htmx_table 'circuits:circuitgroupassignment_list' virtual_circuit_id=object.pk %} -
    - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    - {% trans "Terminations" %} - {% if perms.circuits.add_virtualcircuittermination %} - - {% endif %} -

    - {% htmx_table 'circuits:virtualcircuittermination_list' virtual_circuit_id=object.pk %} -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/circuits/virtualcircuittermination.html b/netbox/templates/circuits/virtualcircuittermination.html index 73eeef403..f3b38eb24 100644 --- a/netbox/templates/circuits/virtualcircuittermination.html +++ b/netbox/templates/circuits/virtualcircuittermination.html @@ -1,6 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} {% load i18n %} {% block breadcrumbs %} @@ -15,67 +13,3 @@ {{ object.virtual_circuit }} {% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Virtual Circuit Termination" %}

    - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Provider" %}{{ object.virtual_circuit.provider|linkify }}
    {% trans "Provider Network" %}{{ object.virtual_circuit.provider_network|linkify }}
    {% trans "Provider account" %}{{ object.virtual_circuit.provider_account|linkify|placeholder }}
    {% trans "Virtual circuit" %}{{ object.virtual_circuit|linkify }}
    {% trans "Role" %}{% badge object.get_role_display bg_color=object.get_role_color %}
    -
    - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "Interface" %}

    - - - - - - - - - - - - - - - - - -
    {% trans "Device" %}{{ object.interface.device|linkify }}
    {% trans "Interface" %}{{ object.interface|linkify }}
    {% trans "Type" %}{{ object.interface.get_type_display }}
    {% trans "Description" %}{{ object.interface.description|placeholder }}
    -
    - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/circuits/virtualcircuittype.html b/netbox/templates/circuits/virtualcircuittype.html index ea76f272d..bdef180e1 100644 --- a/netbox/templates/circuits/virtualcircuittype.html +++ b/netbox/templates/circuits/virtualcircuittype.html @@ -1,7 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} {% load i18n %} {% block extra_controls %} @@ -11,46 +8,3 @@ {% endif %} {% endblock extra_controls %} - -{% block content %} -
    -
    -
    -

    {% trans "Virtual Circuit Type" %}

    - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Color" %} - {% if object.color %} -   - {% else %} - {{ ''|placeholder }} - {% endif %} -
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/ui/attrs/generic_object.html b/netbox/templates/ui/attrs/generic_object.html index 6ffabb94a..64b1a6d9a 100644 --- a/netbox/templates/ui/attrs/generic_object.html +++ b/netbox/templates/ui/attrs/generic_object.html @@ -1,3 +1,5 @@ - - {% if linkify %}{{ value|linkify }}{% else %}{{ value }}{% endif %}{% if content_type %} ({{ content_type }}){% endif %} - +{% load helpers %} + + {% if linkify %}{{ value|linkify }}{% else %}{{ value }}{% endif %} + {% if content_type %}
    {{ content_type|bettertitle }}
    {% endif %} + diff --git a/netbox/templates/ui/attrs/object_list.html b/netbox/templates/ui/attrs/object_list.html new file mode 100644 index 000000000..6daf3fcf2 --- /dev/null +++ b/netbox/templates/ui/attrs/object_list.html @@ -0,0 +1,10 @@ +
      + {% for item in items %} +
    • + {% include "ui/attrs/object.html" with value=item.value group=item.group linkify=linkify only %} +
    • + {% endfor %} + {% if overflow_indicator %} +
    • {{ overflow_indicator }}
    • + {% endif %} +
    From 981f31304d1db387d41786e96e9af748e2950014 Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Wed, 25 Mar 2026 15:36:30 +0100 Subject: [PATCH 10/41] Closes #21735: Replace deprecated Strawberry scalar for `BigInt` (#21736) --- netbox/netbox/graphql/scalars.py | 10 ++++++---- netbox/netbox/graphql/schema.py | 11 +++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/netbox/netbox/graphql/scalars.py b/netbox/netbox/graphql/scalars.py index d14549f65..e49ca83ec 100644 --- a/netbox/netbox/graphql/scalars.py +++ b/netbox/netbox/graphql/scalars.py @@ -1,10 +1,12 @@ -from typing import Union +from typing import NewType import strawberry -BigInt = strawberry.scalar( - Union[int, str], # type: ignore +BigInt = NewType('BigInt', int) + +BigIntScalar = strawberry.scalar( + name='BigInt', serialize=lambda v: int(v), parse_value=lambda v: str(v), - description="BigInt field", + description='BigInt field', ) diff --git a/netbox/netbox/graphql/schema.py b/netbox/netbox/graphql/schema.py index 16bb22c21..5fb27bf4e 100644 --- a/netbox/netbox/graphql/schema.py +++ b/netbox/netbox/graphql/schema.py @@ -16,6 +16,8 @@ from virtualization.graphql.schema import VirtualizationQuery from vpn.graphql.schema import VPNQuery from wireless.graphql.schema import WirelessQuery +from .scalars import BigInt, BigIntScalar + @strawberry.type class Query( @@ -36,9 +38,14 @@ class Query( schema = strawberry.Schema( query=Query, - config=StrawberryConfig(auto_camel_case=False), + config=StrawberryConfig( + auto_camel_case=False, + scalar_map={ + BigInt: BigIntScalar, + }, + ), extensions=[ DjangoOptimizerExtension(prefetch_custom_queryset=True), MaxAliasesLimiter(max_alias_count=settings.GRAPHQL_MAX_ALIASES), - ] + ], ) From bf27ff95934eff4182641364be9ce33eb4daa836 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 25 Mar 2026 12:57:10 -0400 Subject: [PATCH 11/41] #20923: Initial work on migrating the core app --- netbox/core/ui/__init__.py | 0 netbox/core/ui/panels.py | 91 ++++++++++ netbox/core/views.py | 82 +++++++++ netbox/templates/core/configrevision.html | 22 --- netbox/templates/core/datafile.html | 55 ------ .../templates/core/datafile/attrs/size.html | 1 + netbox/templates/core/datasource.html | 103 ----------- .../core/datasource/attrs/ignore_rules.html | 1 + .../core/datasource/attrs/source_url.html | 1 + netbox/templates/core/job.html | 77 --------- .../templates/core/job/attrs/object_type.html | 1 + .../templates/core/job/attrs/scheduled.html | 3 + netbox/templates/core/job/log.html | 11 -- netbox/templates/core/objectchange.html | 160 ------------------ .../objectchange/attrs/changed_object.html | 2 + .../core/objectchange/attrs/request_id.html | 1 + .../core/objectchange/attrs/user.html | 1 + .../core/panels/configrevision_comment.html | 11 ++ .../core/panels/configrevision_data.html | 5 + .../core/panels/datafile_content.html | 8 + .../core/panels/datasource_backend.html | 26 +++ .../core/panels/objectchange_difference.html | 31 ++++ .../core/panels/objectchange_postchange.html | 18 ++ .../core/panels/objectchange_prechange.html | 20 +++ .../core/panels/objectchange_related.html | 11 ++ 25 files changed, 314 insertions(+), 428 deletions(-) create mode 100644 netbox/core/ui/__init__.py create mode 100644 netbox/core/ui/panels.py create mode 100644 netbox/templates/core/datafile/attrs/size.html create mode 100644 netbox/templates/core/datasource/attrs/ignore_rules.html create mode 100644 netbox/templates/core/datasource/attrs/source_url.html create mode 100644 netbox/templates/core/job/attrs/object_type.html create mode 100644 netbox/templates/core/job/attrs/scheduled.html create mode 100644 netbox/templates/core/objectchange/attrs/changed_object.html create mode 100644 netbox/templates/core/objectchange/attrs/request_id.html create mode 100644 netbox/templates/core/objectchange/attrs/user.html create mode 100644 netbox/templates/core/panels/configrevision_comment.html create mode 100644 netbox/templates/core/panels/configrevision_data.html create mode 100644 netbox/templates/core/panels/datafile_content.html create mode 100644 netbox/templates/core/panels/datasource_backend.html create mode 100644 netbox/templates/core/panels/objectchange_difference.html create mode 100644 netbox/templates/core/panels/objectchange_postchange.html create mode 100644 netbox/templates/core/panels/objectchange_prechange.html create mode 100644 netbox/templates/core/panels/objectchange_related.html diff --git a/netbox/core/ui/__init__.py b/netbox/core/ui/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/netbox/core/ui/panels.py b/netbox/core/ui/panels.py new file mode 100644 index 000000000..a2a0781bd --- /dev/null +++ b/netbox/core/ui/panels.py @@ -0,0 +1,91 @@ +from django.utils.translation import gettext_lazy as _ + +from netbox.ui import attrs, panels + + +class DataSourcePanel(panels.ObjectAttributesPanel): + title = _('Data Source') + name = attrs.TextAttr('name') + type = attrs.ChoiceAttr('type') + enabled = attrs.BooleanAttr('enabled') + status = attrs.ChoiceAttr('status') + sync_interval = attrs.ChoiceAttr('sync_interval', label=_('Sync interval')) + last_synced = attrs.DateTimeAttr('last_synced', label=_('Last synced')) + description = attrs.TextAttr('description') + source_url = attrs.TemplatedAttr( + 'source_url', + label=_('URL'), + template_name='core/datasource/attrs/source_url.html', + ) + ignore_rules = attrs.TemplatedAttr( + 'ignore_rules', + label=_('Ignore rules'), + template_name='core/datasource/attrs/ignore_rules.html', + ) + + +class DataSourceBackendPanel(panels.ObjectPanel): + template_name = 'core/panels/datasource_backend.html' + title = _('Backend') + + +class DataFilePanel(panels.ObjectAttributesPanel): + title = _('Data File') + source = attrs.RelatedObjectAttr('source', linkify=True) + path = attrs.TextAttr('path', style='font-monospace', copy_button=True) + last_updated = attrs.DateTimeAttr('last_updated') + size = attrs.TemplatedAttr('size', template_name='core/datafile/attrs/size.html') + hash = attrs.TextAttr('hash', label=_('SHA256 hash'), style='font-monospace', copy_button=True) + + +class DataFileContentPanel(panels.ObjectPanel): + template_name = 'core/panels/datafile_content.html' + title = _('Content') + + +class JobPanel(panels.ObjectAttributesPanel): + title = _('Job') + object_type = attrs.TemplatedAttr( + 'object_type', + label=_('Object type'), + template_name='core/job/attrs/object_type.html', + ) + name = attrs.TextAttr('name') + status = attrs.ChoiceAttr('status') + error = attrs.TextAttr('error') + user = attrs.TextAttr('user', label=_('Created by')) + + +class JobSchedulingPanel(panels.ObjectAttributesPanel): + title = _('Scheduling') + created = attrs.DateTimeAttr('created') + scheduled = attrs.TemplatedAttr('scheduled', template_name='core/job/attrs/scheduled.html') + started = attrs.DateTimeAttr('started') + completed = attrs.DateTimeAttr('completed') + queue = attrs.TextAttr('queue_name', label=_('Queue')) + + +class ObjectChangePanel(panels.ObjectAttributesPanel): + title = _('Change') + time = attrs.DateTimeAttr('time') + user = attrs.TemplatedAttr( + 'user_name', + label=_('User'), + template_name='core/objectchange/attrs/user.html', + ) + action = attrs.ChoiceAttr('action') + changed_object_type = attrs.TextAttr( + 'changed_object_type', + label=_('Object type'), + ) + changed_object = attrs.TemplatedAttr( + 'object_repr', + label=_('Object'), + template_name='core/objectchange/attrs/changed_object.html', + ) + message = attrs.TextAttr('message') + request_id = attrs.TemplatedAttr( + 'request_id', + label=_('Request ID'), + template_name='core/objectchange/attrs/request_id.html', + ) diff --git a/netbox/core/views.py b/netbox/core/views.py index 21e68d1b6..b7b5c6335 100644 --- a/netbox/core/views.py +++ b/netbox/core/views.py @@ -23,9 +23,20 @@ from rq.worker import Worker from rq.worker_registration import clean_worker_registry from core.utils import delete_rq_job, enqueue_rq_job, get_rq_jobs_from_status, requeue_rq_job, stop_rq_job +from extras.ui.panels import CustomFieldsPanel, TagsPanel from netbox.config import PARAMS, get_config from netbox.object_actions import AddObject, BulkDelete, BulkExport, DeleteObject from netbox.plugins.utils import get_installed_plugins +from netbox.ui import layout +from netbox.ui.panels import ( + CommentsPanel, + ContextTablePanel, + JSONPanel, + ObjectsTablePanel, + PluginContentPanel, + RelatedObjectsPanel, + TemplatePanel, +) from netbox.views import generic from netbox.views.generic.base import BaseObjectView from netbox.views.generic.mixins import TableMixin @@ -48,6 +59,7 @@ from .jobs import SyncDataSourceJob from .models import * from .plugins import get_catalog_plugins, get_local_plugins from .tables import CatalogPluginTable, JobLogEntryTable, PluginVersionTable +from .ui import panels # # Data sources @@ -67,6 +79,24 @@ class DataSourceListView(generic.ObjectListView): @register_model_view(DataSource) class DataSourceView(GetRelatedModelsMixin, generic.ObjectView): queryset = DataSource.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.DataSourcePanel(), + TagsPanel(), + CommentsPanel(), + ], + right_panels=[ + panels.DataSourceBackendPanel(), + RelatedObjectsPanel(), + CustomFieldsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + model='core.DataFile', + filters={'source_id': lambda ctx: ctx['object'].pk}, + ), + ], + ) def get_extra_context(self, request, instance): return { @@ -157,6 +187,12 @@ class DataFileListView(generic.ObjectListView): class DataFileView(generic.ObjectView): queryset = DataFile.objects.all() actions = (DeleteObject,) + layout = layout.SimpleLayout( + left_panels=[ + panels.DataFilePanel(), + panels.DataFileContentPanel(), + ], + ) @register_model_view(DataFile, 'delete') @@ -188,6 +224,17 @@ class JobListView(generic.ObjectListView): class JobView(generic.ObjectView): queryset = Job.objects.all() actions = (DeleteObject,) + layout = layout.SimpleLayout( + left_panels=[ + panels.JobPanel(), + ], + right_panels=[ + panels.JobSchedulingPanel(), + ], + bottom_panels=[ + JSONPanel('data', title=_('Data')), + ], + ) @register_model_view(Job, 'log') @@ -200,6 +247,13 @@ class JobLogView(generic.ObjectView): badge=lambda obj: len(obj.log_entries), weight=500, ) + layout = layout.Layout( + layout.Row( + layout.Column( + ContextTablePanel('table', title=_('Log Entries')), + ), + ), + ) def get_extra_context(self, request, instance): table = JobLogEntryTable(instance.log_entries) @@ -241,6 +295,26 @@ class ObjectChangeListView(generic.ObjectListView): @register_model_view(ObjectChange) class ObjectChangeView(generic.ObjectView): queryset = None + layout = layout.Layout( + layout.Row( + layout.Column(panels.ObjectChangePanel()), + layout.Column(TemplatePanel('core/panels/objectchange_difference.html')), + ), + layout.Row( + layout.Column(TemplatePanel('core/panels/objectchange_prechange.html')), + layout.Column(TemplatePanel('core/panels/objectchange_postchange.html')), + ), + layout.Row( + layout.Column(PluginContentPanel('left_page')), + layout.Column(PluginContentPanel('right_page')), + ), + layout.Row( + layout.Column( + TemplatePanel('core/panels/objectchange_related.html'), + PluginContentPanel('full_width_page'), + ), + ), + ) def get_queryset(self, request): return ObjectChange.objects.valid_models() @@ -312,6 +386,14 @@ class ConfigRevisionListView(generic.ObjectListView): @register_model_view(ConfigRevision) class ConfigRevisionView(generic.ObjectView): queryset = ConfigRevision.objects.all() + layout = layout.Layout( + layout.Row( + layout.Column( + TemplatePanel('core/panels/configrevision_data.html'), + TemplatePanel('core/panels/configrevision_comment.html'), + ), + ), + ) def get_extra_context(self, request, instance): """ diff --git a/netbox/templates/core/configrevision.html b/netbox/templates/core/configrevision.html index 28179b7fd..2bd361a84 100644 --- a/netbox/templates/core/configrevision.html +++ b/netbox/templates/core/configrevision.html @@ -1,10 +1,7 @@ {% extends 'generic/object.html' %} {% load buttons %} -{% load custom_links %} {% load helpers %} {% load perms %} -{% load plugins %} -{% load static %} {% load i18n %} {% block breadcrumbs %} @@ -27,22 +24,3 @@ {% endif %} {% endblock subtitle %} - -{% block content %} -
    -
    -
    -

    {% trans "Configuration Data" %}

    - {% include 'core/inc/config_data.html' %} -
    - -
    -

    {% trans "Comment" %}

    -
    - {{ object.comment|placeholder }} -
    -
    - -
    -
    -{% endblock %} diff --git a/netbox/templates/core/datafile.html b/netbox/templates/core/datafile.html index 0747547b1..714ef22f8 100644 --- a/netbox/templates/core/datafile.html +++ b/netbox/templates/core/datafile.html @@ -1,62 +1,7 @@ {% extends 'generic/object.html' %} -{% load buttons %} -{% load custom_links %} -{% load helpers %} -{% load perms %} -{% load plugins %} {% load i18n %} {% block breadcrumbs %} {{ block.super }} {% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Data File" %}

    - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Source" %}{{ object.source|linkify }}
    {% trans "Path" %} - {{ object.path }} - {% copy_content "datafile_path" %} -
    {% trans "Last Updated" %}{{ object.last_updated }}
    {% trans "Size" %}{{ object.size }} {% trans "bytes" %}
    {% trans "SHA256 Hash" %} - {{ object.hash }} - {% copy_content "datafile_hash" %} -
    -
    -
    -

    {% trans "Content" %}

    -
    -
    {{ object.data_as_string }}
    -
    -
    - {% plugin_left_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/core/datafile/attrs/size.html b/netbox/templates/core/datafile/attrs/size.html new file mode 100644 index 000000000..ac54aca60 --- /dev/null +++ b/netbox/templates/core/datafile/attrs/size.html @@ -0,0 +1 @@ +{% load i18n %}{{ value }} {% trans "bytes" %} diff --git a/netbox/templates/core/datasource.html b/netbox/templates/core/datasource.html index 519e111af..07a7324ab 100644 --- a/netbox/templates/core/datasource.html +++ b/netbox/templates/core/datasource.html @@ -1,8 +1,4 @@ {% extends 'generic/object.html' %} -{% load static %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} {% load i18n %} {% block extra_controls %} @@ -23,102 +19,3 @@ {% endif %} {% endif %} {% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Data Source" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Type" %}{{ object.get_type_display }}
    {% trans "Enabled" %}{% checkmark object.enabled %}
    {% trans "Status" %}{% badge object.get_status_display bg_color=object.get_status_color %}
    {% trans "Sync interval" %}{{ object.get_sync_interval_display|placeholder }}
    {% trans "Last synced" %}{{ object.last_synced|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "URL" %} - {% if not object.type.is_local %} - {{ object.source_url }} - {% else %} - {{ object.source_url }} - {% endif %} -
    {% trans "Ignore rules" %} - {% if object.ignore_rules %} -
    {{ object.ignore_rules }}
    - {% else %} - {{ ''|placeholder }} - {% endif %}
    -
    - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "Backend" %}

    - {% with backend=object.backend_class %} - - {% for name, field in backend.parameters.items %} - - - {% if name in backend.sensitive_parameters %} - - {% else %} - - {% endif %} - - {% empty %} - - - - {% endfor %} -
    {{ field.label }}********{{ object.parameters|get_key:name|placeholder }}
    - {% trans "No parameters defined" %} -
    - {% endwith %} -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    {% trans "Files" %}

    - {% htmx_table 'core:datafile_list' source_id=object.pk %} -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/core/datasource/attrs/ignore_rules.html b/netbox/templates/core/datasource/attrs/ignore_rules.html new file mode 100644 index 000000000..ec1709b99 --- /dev/null +++ b/netbox/templates/core/datasource/attrs/ignore_rules.html @@ -0,0 +1 @@ +
    {{ value }}
    diff --git a/netbox/templates/core/datasource/attrs/source_url.html b/netbox/templates/core/datasource/attrs/source_url.html new file mode 100644 index 000000000..6a788c3eb --- /dev/null +++ b/netbox/templates/core/datasource/attrs/source_url.html @@ -0,0 +1 @@ +{% if not object.type.is_local %}{{ value }}{% else %}{{ value }}{% endif %} diff --git a/netbox/templates/core/job.html b/netbox/templates/core/job.html index 48adf0319..03302b939 100644 --- a/netbox/templates/core/job.html +++ b/netbox/templates/core/job.html @@ -1,78 +1 @@ {% extends 'core/job/base.html' %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Job" %}

    - - - - - - - - - - - - - - {% if object.error %} - - - - - {% endif %} - - - - -
    {% trans "Object Type" %} - {{ object.object_type }} -
    {% trans "Name" %}{{ object.name|placeholder }}
    {% trans "Status" %}{% badge object.get_status_display object.get_status_color %}
    {% trans "Error" %}{{ object.error }}
    {% trans "Created By" %}{{ object.user|placeholder }}
    -
    -
    -
    -
    -

    {% trans "Scheduling" %}

    - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Created" %}{{ object.created|isodatetime }}
    {% trans "Scheduled" %} - {{ object.scheduled|isodatetime|placeholder }} - {% if object.interval %} - ({% blocktrans with interval=object.interval %}every {{ interval }} minutes{% endblocktrans %}) - {% endif %} -
    {% trans "Started" %}{{ object.started|isodatetime|placeholder }}
    {% trans "Completed" %}{{ object.completed|isodatetime|placeholder }}
    {% trans "Queue" %}{{ object.queue_name|placeholder }}
    -
    -
    -
    -
    -
    -
    -

    {% trans "Data" %}

    -
    {{ object.data|json }}
    -
    -
    -
    -{% endblock %} diff --git a/netbox/templates/core/job/attrs/object_type.html b/netbox/templates/core/job/attrs/object_type.html new file mode 100644 index 000000000..fd3937c17 --- /dev/null +++ b/netbox/templates/core/job/attrs/object_type.html @@ -0,0 +1 @@ +{{ value }} diff --git a/netbox/templates/core/job/attrs/scheduled.html b/netbox/templates/core/job/attrs/scheduled.html new file mode 100644 index 000000000..2af7fdd49 --- /dev/null +++ b/netbox/templates/core/job/attrs/scheduled.html @@ -0,0 +1,3 @@ +{% load helpers %} +{% load i18n %} +{{ value|isodatetime }}{% if object.interval %} ({% blocktrans with interval=object.interval %}every {{ interval }} minutes{% endblocktrans %}){% endif %} diff --git a/netbox/templates/core/job/log.html b/netbox/templates/core/job/log.html index b8c727299..03302b939 100644 --- a/netbox/templates/core/job/log.html +++ b/netbox/templates/core/job/log.html @@ -1,12 +1 @@ {% extends 'core/job/base.html' %} -{% load render_table from django_tables2 %} - -{% block content %} -
    -
    -
    - {% render_table table %} -
    -
    -
    -{% endblock %} diff --git a/netbox/templates/core/objectchange.html b/netbox/templates/core/objectchange.html index e4c7d4900..3f883bea8 100644 --- a/netbox/templates/core/objectchange.html +++ b/netbox/templates/core/objectchange.html @@ -1,6 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} {% load i18n %} {% block title %}{{ object }}{% endblock %} @@ -21,161 +19,3 @@ {# ObjectChange does not support the default add/edit/delete controls #} {% block control-buttons %}{% endblock %} {% block subtitle %}{% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Change" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Time" %}{{ object.time|isodatetime }}
    {% trans "User" %} - {% if object.user.get_full_name %} - {{ object.user.get_full_name }} ({{ object.user_name }}) - {% else %} - {{ object.user_name }} - {% endif %} -
    {% trans "Action" %} - {{ object.get_action_display }} -
    {% trans "Object Type" %} - {{ object.changed_object_type }} -
    {% trans "Object" %} - {% if object.changed_object and object.changed_object.get_absolute_url %} - {{ object.changed_object|linkify }} - {% else %} - {{ object.object_repr }} - {% endif %} -
    {% trans "Message" %} - {{ object.message|placeholder }} -
    {% trans "Request ID" %} - {{ object.request_id }} -
    -
    -
    -
    -
    -

    - {% trans "Difference" %} - -

    -
    - {% if diff_added == diff_removed %} - - {% if object.action == 'create' %} - {% trans "Object Created" %} - {% elif object.action == 'delete' %} - {% trans "Object Deleted" %} - {% else %} - {% trans "No Changes" %} - {% endif %} - - {% else %} -
    {{ diff_removed|json }}
    -
    {{ diff_added|json }}
    - {% endif %} -
    -
    -
    -
    -
    -
    -
    -

    {% trans "Pre-Change Data" %}

    -
    - {% if object.prechange_data %} - {% spaceless %} -
    -                  {% for k, v in object.prechange_data_clean.items %}
    -                    {{ k }}: {{ v|json }}
    -                  {% endfor %}
    -                
    - {% endspaceless %} - {% elif non_atomic_change %} - {% trans "Warning: Comparing non-atomic change to previous change record" %} ({{ prev_change.pk }}) - {% else %} - {% trans "None" %} - {% endif %} -
    -
    -
    -
    -
    -

    {% trans "Post-Change Data" %}

    -
    - {% if object.postchange_data %} - {% spaceless %} -
    -                      {% for k, v in object.postchange_data_clean.items %}
    -                        {{ k }}: {{ v|json }}
    -                      {% endfor %}
    -                    
    - {% endspaceless %} - {% else %} - {% trans "None" %} - {% endif %} -
    -
    -
    -
    -
    -
    - {% plugin_left_page object %} -
    -
    - {% plugin_right_page object %} -
    -
    -
    -
    - {% include 'inc/panel_table.html' with table=related_changes_table heading='Related Changes' panel_class='default' %} - {% if related_changes_count > related_changes_table.rows|length %} - - {% endif %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/core/objectchange/attrs/changed_object.html b/netbox/templates/core/objectchange/attrs/changed_object.html new file mode 100644 index 000000000..e3d8abe33 --- /dev/null +++ b/netbox/templates/core/objectchange/attrs/changed_object.html @@ -0,0 +1,2 @@ +{% load helpers %} +{% if object.changed_object and object.changed_object.get_absolute_url %}{{ object.changed_object|linkify }}{% else %}{{ value }}{% endif %} diff --git a/netbox/templates/core/objectchange/attrs/request_id.html b/netbox/templates/core/objectchange/attrs/request_id.html new file mode 100644 index 000000000..92011812f --- /dev/null +++ b/netbox/templates/core/objectchange/attrs/request_id.html @@ -0,0 +1 @@ +{{ value }} diff --git a/netbox/templates/core/objectchange/attrs/user.html b/netbox/templates/core/objectchange/attrs/user.html new file mode 100644 index 000000000..e897078c3 --- /dev/null +++ b/netbox/templates/core/objectchange/attrs/user.html @@ -0,0 +1 @@ +{% if object.user and object.user.get_full_name %}{{ object.user.get_full_name }} ({{ value }}){% else %}{{ value }}{% endif %} diff --git a/netbox/templates/core/panels/configrevision_comment.html b/netbox/templates/core/panels/configrevision_comment.html new file mode 100644 index 000000000..5ce365522 --- /dev/null +++ b/netbox/templates/core/panels/configrevision_comment.html @@ -0,0 +1,11 @@ +{% load i18n %} +
    +

    {% trans "Comment" %}

    +
    + {% if object.comment %} + {{ object.comment }} + {% else %} + + {% endif %} +
    +
    diff --git a/netbox/templates/core/panels/configrevision_data.html b/netbox/templates/core/panels/configrevision_data.html new file mode 100644 index 000000000..461e2ab82 --- /dev/null +++ b/netbox/templates/core/panels/configrevision_data.html @@ -0,0 +1,5 @@ +{% load i18n %} +
    +

    {% trans "Configuration Data" %}

    + {% include 'core/inc/config_data.html' %} +
    diff --git a/netbox/templates/core/panels/datafile_content.html b/netbox/templates/core/panels/datafile_content.html new file mode 100644 index 000000000..90702964e --- /dev/null +++ b/netbox/templates/core/panels/datafile_content.html @@ -0,0 +1,8 @@ +{% extends "ui/panels/_base.html" %} +{% load i18n %} + +{% block panel_content %} +
    +
    {{ object.data_as_string }}
    +
    +{% endblock panel_content %} diff --git a/netbox/templates/core/panels/datasource_backend.html b/netbox/templates/core/panels/datasource_backend.html new file mode 100644 index 000000000..97d7ae573 --- /dev/null +++ b/netbox/templates/core/panels/datasource_backend.html @@ -0,0 +1,26 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers %} +{% load i18n %} + +{% block panel_content %} + {% with backend=object.backend_class %} + + {% for name, field in backend.parameters.items %} + + + {% if name in backend.sensitive_parameters %} + + {% else %} + + {% endif %} + + {% empty %} + + + + {% endfor %} +
    {{ field.label }}********{{ object.parameters|get_key:name|placeholder }}
    + {% trans "No parameters defined" %} +
    + {% endwith %} +{% endblock panel_content %} diff --git a/netbox/templates/core/panels/objectchange_difference.html b/netbox/templates/core/panels/objectchange_difference.html new file mode 100644 index 000000000..5c954ee56 --- /dev/null +++ b/netbox/templates/core/panels/objectchange_difference.html @@ -0,0 +1,31 @@ +{% load helpers %} +{% load i18n %} +
    +

    + {% trans "Difference" %} + +

    +
    + {% if diff_added == diff_removed %} + + {% if object.action == 'create' %} + {% trans "Object Created" %} + {% elif object.action == 'delete' %} + {% trans "Object Deleted" %} + {% else %} + {% trans "No Changes" %} + {% endif %} + + {% else %} +
    {{ diff_removed|json }}
    +
    {{ diff_added|json }}
    + {% endif %} +
    +
    diff --git a/netbox/templates/core/panels/objectchange_postchange.html b/netbox/templates/core/panels/objectchange_postchange.html new file mode 100644 index 000000000..903ec9586 --- /dev/null +++ b/netbox/templates/core/panels/objectchange_postchange.html @@ -0,0 +1,18 @@ +{% load helpers %} +{% load i18n %} +
    +

    {% trans "Post-Change Data" %}

    +
    + {% if object.postchange_data %} + {% spaceless %} +
    +          {% for k, v in object.postchange_data_clean.items %}
    +            {{ k }}: {{ v|json }}
    +          {% endfor %}
    +        
    + {% endspaceless %} + {% else %} + {% trans "None" %} + {% endif %} +
    +
    diff --git a/netbox/templates/core/panels/objectchange_prechange.html b/netbox/templates/core/panels/objectchange_prechange.html new file mode 100644 index 000000000..057f59731 --- /dev/null +++ b/netbox/templates/core/panels/objectchange_prechange.html @@ -0,0 +1,20 @@ +{% load helpers %} +{% load i18n %} +
    +

    {% trans "Pre-Change Data" %}

    +
    + {% if object.prechange_data %} + {% spaceless %} +
    +          {% for k, v in object.prechange_data_clean.items %}
    +            {{ k }}: {{ v|json }}
    +          {% endfor %}
    +        
    + {% endspaceless %} + {% elif non_atomic_change %} + {% trans "Warning: Comparing non-atomic change to previous change record" %} ({{ prev_change.pk }}) + {% else %} + {% trans "None" %} + {% endif %} +
    +
    diff --git a/netbox/templates/core/panels/objectchange_related.html b/netbox/templates/core/panels/objectchange_related.html new file mode 100644 index 000000000..27d26d3f1 --- /dev/null +++ b/netbox/templates/core/panels/objectchange_related.html @@ -0,0 +1,11 @@ +{% load i18n %} +{% include 'inc/panel_table.html' with table=related_changes_table heading='Related Changes' panel_class='default' %} +{% if related_changes_count > related_changes_table.rows|length %} + +{% endif %} From b904dc5c7528face6434b72f9222a9b71c67bfde Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 25 Mar 2026 13:50:41 -0400 Subject: [PATCH 12/41] Support translation of headings for embedded table panels --- netbox/templates/inc/panel_table.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/templates/inc/panel_table.html b/netbox/templates/inc/panel_table.html index 1a9f149d4..2fbb6488f 100644 --- a/netbox/templates/inc/panel_table.html +++ b/netbox/templates/inc/panel_table.html @@ -3,7 +3,7 @@
    {% if heading %} -

    {{ heading }}

    +

    {% trans heading %}

    {% endif %} {% if table.rows %}
    From 3f58648115dec477871594732bc96f9ed2e29bd4 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 25 Mar 2026 13:55:07 -0400 Subject: [PATCH 13/41] Convert DataFileView to a single-column layout --- netbox/core/views.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/netbox/core/views.py b/netbox/core/views.py index b7b5c6335..780e0957c 100644 --- a/netbox/core/views.py +++ b/netbox/core/views.py @@ -187,11 +187,13 @@ class DataFileListView(generic.ObjectListView): class DataFileView(generic.ObjectView): queryset = DataFile.objects.all() actions = (DeleteObject,) - layout = layout.SimpleLayout( - left_panels=[ - panels.DataFilePanel(), - panels.DataFileContentPanel(), - ], + layout = layout.Layout( + layout.Row( + layout.Column( + panels.DataFilePanel(), + panels.DataFileContentPanel(), + ), + ), ) From e76203238d5a2238dfba55dcce066a79a4614475 Mon Sep 17 00:00:00 2001 From: Mark Robert Coleman Date: Wed, 25 Mar 2026 20:45:49 +0100 Subject: [PATCH 14/41] Fix {module} placeholder resolution in module bay position field (#21752) * Fix {module} placeholder resolution in module bay position field (#20467) The {module} placeholder in ModuleBayTemplate's position field was not being resolved when a module was installed, leaving the literal string "{module}" in the position. This adds a resolve_position() method and calls it in instantiate(), consistent with how resolve_name() and resolve_label() already work. Consolidates the shared resolution logic into _resolve_module_placeholder() to eliminate duplication across resolve_name, resolve_label, and the new resolve_position. Fixes: #20467 * Move resolve_position() to ModuleBayTemplate --------- Co-authored-by: Jeremy Stretch --- .../dcim/models/device_component_templates.py | 35 ++++++--------- netbox/dcim/tests/test_models.py | 44 +++++++++++++++++++ 2 files changed, 58 insertions(+), 21 deletions(-) diff --git a/netbox/dcim/models/device_component_templates.py b/netbox/dcim/models/device_component_templates.py index 0d54331d8..08d52d6eb 100644 --- a/netbox/dcim/models/device_component_templates.py +++ b/netbox/dcim/models/device_component_templates.py @@ -177,29 +177,19 @@ class ModularComponentTemplateModel(ComponentTemplateModel): modules.reverse() return modules - def resolve_name(self, module): - if MODULE_TOKEN not in self.name: - return self.name + def _resolve_module_placeholder(self, value, module): + if MODULE_TOKEN not in value or not module: + return value + modules = self._get_module_tree(module) + for m in modules: + value = value.replace(MODULE_TOKEN, m.module_bay.position, 1) + return value - if module: - modules = self._get_module_tree(module) - name = self.name - for module in modules: - name = name.replace(MODULE_TOKEN, module.module_bay.position, 1) - return name - return self.name + def resolve_name(self, module): + return self._resolve_module_placeholder(self.name, module) def resolve_label(self, module): - if MODULE_TOKEN not in self.label: - return self.label - - if module: - modules = self._get_module_tree(module) - label = self.label - for module in modules: - label = label.replace(MODULE_TOKEN, module.module_bay.position, 1) - return label - return self.label + return self._resolve_module_placeholder(self.label, module) class ConsolePortTemplate(ModularComponentTemplateModel): @@ -729,11 +719,14 @@ class ModuleBayTemplate(ModularComponentTemplateModel): verbose_name = _('module bay template') verbose_name_plural = _('module bay templates') + def resolve_position(self, module): + return self._resolve_module_placeholder(self.position, module) + def instantiate(self, **kwargs): return self.component_model( name=self.resolve_name(kwargs.get('module')), label=self.resolve_label(kwargs.get('module')), - position=self.position, + position=self.resolve_position(kwargs.get('module')), **kwargs ) instantiate.do_not_call_in_templates = True diff --git a/netbox/dcim/tests/test_models.py b/netbox/dcim/tests/test_models.py index 45e07f257..efb2a356e 100644 --- a/netbox/dcim/tests/test_models.py +++ b/netbox/dcim/tests/test_models.py @@ -849,6 +849,50 @@ class ModuleBayTestCase(TestCase): nested_bay = module.modulebays.get(name='SFP A-21') self.assertEqual(nested_bay.label, 'A-21') + @tag('regression') # #20467 + def test_nested_module_bay_position_resolution(self): + """Test that {module} in a module bay template's position field is resolved when the module is installed.""" + manufacturer = Manufacturer.objects.first() + site = Site.objects.first() + device_role = DeviceRole.objects.first() + + device_type = DeviceType.objects.create( + manufacturer=manufacturer, + model='Device with Position Test', + slug='device-with-position-test' + ) + ModuleBayTemplate.objects.create( + device_type=device_type, + name='Slot 1', + position='1' + ) + + module_type = ModuleType.objects.create( + manufacturer=manufacturer, + model='Module with Position Placeholder' + ) + ModuleBayTemplate.objects.create( + module_type=module_type, + name='Sub-bay {module}-1', + position='{module}-1' + ) + + device = Device.objects.create( + name='Position Test Device', + device_type=device_type, + role=device_role, + site=site + ) + module_bay = device.modulebays.get(name='Slot 1') + module = Module.objects.create( + device=device, + module_bay=module_bay, + module_type=module_type + ) + + nested_bay = module.modulebays.get(name='Sub-bay 1-1') + self.assertEqual(nested_bay.position, '1-1') + @tag('regression') # #20912 def test_module_bay_parent_cleared_when_module_removed(self): """Test that the parent field is properly cleared when a module bay's module assignment is removed""" From 91d5382a6140b956222be1c6563c3be5c8b76e63 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 26 Mar 2026 05:30:51 +0000 Subject: [PATCH 15/41] Update source translation strings --- netbox/translations/en/LC_MESSAGES/django.po | 1229 +++++++----------- 1 file changed, 469 insertions(+), 760 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index 65f4a6371..5104fb339 100644 --- a/netbox/translations/en/LC_MESSAGES/django.po +++ b/netbox/translations/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-25 05:27+0000\n" +"POT-Creation-Date: 2026-03-26 05:30+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -85,7 +85,8 @@ msgid "Decommissioned" msgstr "" #: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2023 -#: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:153 +#: netbox/dcim/tables/devices.py:1208 +#: netbox/templates/dcim/interface/attrs/mac_address.html:3 #: netbox/tenancy/choices.py:17 msgid "Primary" msgstr "" @@ -104,7 +105,8 @@ msgid "Inactive" msgstr "" #: netbox/circuits/choices.py:107 netbox/dcim/tables/devices.py:714 -#: netbox/templates/dcim/interface.html:293 netbox/vpn/choices.py:63 +#: netbox/templates/dcim/panels/interface_wireless.html:12 +#: netbox/vpn/choices.py:63 msgid "Peer" msgstr "" @@ -193,8 +195,7 @@ msgstr "" #: netbox/ipam/tables/vlans.py:90 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:36 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/ipam/vlan.html:23 -#: netbox/templates/ipam/vlan_edit.html:52 +#: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:52 #: netbox/virtualization/forms/bulk_edit.py:95 #: netbox/virtualization/forms/bulk_import.py:60 #: netbox/virtualization/forms/bulk_import.py:98 @@ -327,9 +328,7 @@ msgstr "" #: netbox/circuits/forms/model_forms.py:264 #: netbox/circuits/tables/circuits.py:103 #: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 -#: netbox/templates/circuits/circuit.html:15 -#: netbox/templates/circuits/circuitgroupassignment.html:30 -#: netbox/templates/circuits/circuittermination.html:19 +#: netbox/templates/circuits/panels/circuit_termination.html:7 #: netbox/templates/dcim/inc/cable_termination.html:62 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -390,8 +389,6 @@ msgstr "" #: netbox/circuits/forms/model_forms.py:342 #: netbox/circuits/forms/model_forms.py:357 #: netbox/circuits/tables/virtual_circuits.py:84 -#: netbox/templates/circuits/virtualcircuit.html:20 -#: netbox/templates/circuits/virtualcircuittermination.html:38 msgid "Virtual circuit" msgstr "" @@ -403,12 +400,12 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:48 netbox/circuits/forms/filtersets.py:68 #: netbox/circuits/forms/model_forms.py:48 -#: netbox/circuits/tables/providers.py:32 netbox/dcim/forms/bulk_edit.py:134 -#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/model_forms.py:142 -#: netbox/dcim/tables/sites.py:74 netbox/ipam/models/asns.py:155 -#: netbox/ipam/tables/asn.py:37 netbox/ipam/views.py:270 -#: netbox/netbox/navigation/menu.py:182 netbox/netbox/navigation/menu.py:185 -#: netbox/templates/circuits/provider.html:23 +#: netbox/circuits/tables/providers.py:32 netbox/circuits/ui/panels.py:92 +#: netbox/dcim/forms/bulk_edit.py:134 netbox/dcim/forms/filtersets.py:225 +#: netbox/dcim/forms/model_forms.py:142 netbox/dcim/tables/sites.py:74 +#: netbox/ipam/models/asns.py:155 netbox/ipam/tables/asn.py:37 +#: netbox/ipam/views.py:270 netbox/netbox/navigation/menu.py:182 +#: netbox/netbox/navigation/menu.py:185 msgid "ASNs" msgstr "" @@ -437,22 +434,14 @@ msgstr "" #: netbox/circuits/tables/providers.py:95 #: netbox/circuits/tables/virtual_circuits.py:46 #: netbox/circuits/tables/virtual_circuits.py:89 -#: netbox/templates/circuits/circuit.html:18 -#: netbox/templates/circuits/circuitgroupassignment.html:26 -#: netbox/templates/circuits/circuittermination.html:25 -#: netbox/templates/circuits/provider.html:20 -#: netbox/templates/circuits/provideraccount.html:20 -#: netbox/templates/circuits/providernetwork.html:20 -#: netbox/templates/circuits/virtualcircuit.html:23 -#: netbox/templates/circuits/virtualcircuittermination.html:26 +#: netbox/templates/circuits/panels/circuit_termination.html:11 #: netbox/templates/dcim/inc/cable_termination.html:58 -#: netbox/templates/dcim/interface.html:184 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:7 msgid "Provider" msgstr "" #: netbox/circuits/forms/bulk_edit.py:86 -#: netbox/circuits/forms/filtersets.py:106 -#: netbox/templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/filtersets.py:106 netbox/circuits/ui/panels.py:106 msgid "Service ID" msgstr "" @@ -471,12 +460,7 @@ msgstr "" #: netbox/dcim/tables/devicetypes.py:214 netbox/dcim/tables/devicetypes.py:255 #: netbox/dcim/tables/devicetypes.py:274 netbox/dcim/tables/racks.py:30 #: netbox/extras/forms/bulk_edit.py:306 netbox/extras/tables/tables.py:552 -#: netbox/netbox/ui/attrs.py:194 netbox/templates/circuits/circuittype.html:30 -#: netbox/templates/circuits/virtualcircuittype.html:30 -#: netbox/templates/dcim/cable.html:44 netbox/templates/dcim/frontport.html:40 -#: netbox/templates/dcim/inventoryitemrole.html:26 -#: netbox/templates/dcim/poweroutlet.html:48 -#: netbox/templates/dcim/rearport.html:40 netbox/templates/extras/tag.html:26 +#: netbox/netbox/ui/attrs.py:213 netbox/templates/extras/tag.html:26 msgid "Color" msgstr "" @@ -515,19 +499,8 @@ msgstr "" #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 #: netbox/extras/forms/bulk_import.py:48 netbox/extras/tables/tables.py:510 #: netbox/extras/tables/tables.py:578 netbox/netbox/tables/tables.py:339 -#: netbox/templates/circuits/circuit.html:30 -#: netbox/templates/circuits/virtualcircuit.html:39 -#: netbox/templates/circuits/virtualcircuittermination.html:64 -#: netbox/templates/core/datasource.html:38 netbox/templates/dcim/cable.html:15 -#: netbox/templates/dcim/consoleport.html:36 -#: netbox/templates/dcim/consoleserverport.html:36 -#: netbox/templates/dcim/frontport.html:36 -#: netbox/templates/dcim/interface.html:46 -#: netbox/templates/dcim/interface.html:244 -#: netbox/templates/dcim/powerfeed.html:32 -#: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 -#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/core/datasource.html:38 +#: netbox/templates/dcim/panels/interface_connection.html:68 #: netbox/templates/extras/eventrule.html:74 #: netbox/templates/wireless/panels/wirelesslink_interface.html:16 #: netbox/virtualization/forms/bulk_edit.py:50 @@ -550,8 +523,6 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:357 #: netbox/circuits/forms/model_forms.py:121 #: netbox/circuits/forms/model_forms.py:330 -#: netbox/templates/circuits/virtualcircuit.html:31 -#: netbox/templates/circuits/virtualcircuittermination.html:34 msgid "Provider account" msgstr "" @@ -593,14 +564,9 @@ msgstr "" #: netbox/ipam/forms/model_forms.py:503 netbox/ipam/tables/ip.py:182 #: netbox/ipam/tables/ip.py:261 netbox/ipam/tables/ip.py:314 #: netbox/ipam/tables/ip.py:389 netbox/ipam/tables/ip.py:416 -#: netbox/ipam/tables/vlans.py:98 netbox/templates/circuits/circuit.html:34 -#: netbox/templates/circuits/virtualcircuit.html:43 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:21 -#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:19 -#: netbox/templates/dcim/cable.html:19 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/powerfeed.html:36 -#: netbox/templates/dcim/poweroutlet.html:40 +#: netbox/ipam/tables/vlans.py:98 netbox/templates/core/datasource.html:46 +#: netbox/templates/core/job.html:21 netbox/templates/core/rq_task.html:81 +#: netbox/templates/core/system.html:19 #: netbox/templates/extras/inc/script_list_content.html:35 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:61 netbox/templates/ipam/prefix.html:69 @@ -666,13 +632,8 @@ msgstr "" #: netbox/ipam/forms/filtersets.py:155 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:297 netbox/ipam/forms/filtersets.py:350 #: netbox/ipam/forms/filtersets.py:459 netbox/ipam/forms/filtersets.py:552 -#: netbox/ipam/tables/ip.py:419 netbox/templates/circuits/circuit.html:48 -#: netbox/templates/circuits/circuitgroup.html:36 -#: netbox/templates/circuits/virtualcircuit.html:47 -#: netbox/templates/dcim/cable.html:27 netbox/templates/dcim/powerfeed.html:44 -#: netbox/templates/dcim/virtualdevicecontext.html:52 -#: netbox/templates/ipam/aggregate.html:30 netbox/templates/ipam/asn.html:33 -#: netbox/templates/ipam/asnrange.html:29 +#: netbox/ipam/tables/ip.py:419 netbox/templates/ipam/aggregate.html:30 +#: netbox/templates/ipam/asn.html:33 netbox/templates/ipam/asnrange.html:29 #: netbox/templates/ipam/ipaddress.html:28 #: netbox/templates/ipam/iprange.html:65 netbox/templates/ipam/prefix.html:29 #: netbox/templates/ipam/routetarget.html:17 netbox/templates/ipam/vlan.html:39 @@ -716,7 +677,6 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:159 #: netbox/circuits/forms/filtersets.py:217 #: netbox/circuits/forms/model_forms.py:140 -#: netbox/templates/circuits/circuit.html:38 #: netbox/wireless/forms/bulk_edit.py:121 #: netbox/wireless/forms/filtersets.py:137 #: netbox/wireless/forms/model_forms.py:166 @@ -761,7 +721,7 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1864 netbox/dcim/forms/filtersets.py:1879 #: netbox/dcim/forms/filtersets.py:1890 netbox/dcim/forms/filtersets.py:1936 #: netbox/dcim/forms/filtersets.py:1972 netbox/dcim/tables/modules.py:25 -#: netbox/dcim/views.py:1679 netbox/extras/forms/bulk_edit.py:94 +#: netbox/dcim/views.py:1681 netbox/extras/forms/bulk_edit.py:94 #: netbox/extras/forms/filtersets.py:48 netbox/extras/forms/filtersets.py:147 #: netbox/extras/forms/filtersets.py:226 netbox/extras/forms/filtersets.py:243 #: netbox/extras/forms/filtersets.py:275 netbox/extras/forms/filtersets.py:306 @@ -824,34 +784,10 @@ msgstr "" #: netbox/extras/tables/tables.py:97 netbox/ipam/tables/vlans.py:214 #: netbox/ipam/tables/vlans.py:241 netbox/netbox/forms/bulk_edit.py:79 #: netbox/netbox/forms/bulk_edit.py:91 netbox/netbox/forms/bulk_edit.py:103 -#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 -#: netbox/templates/circuits/circuit.html:69 -#: netbox/templates/circuits/circuitgroup.html:32 -#: netbox/templates/circuits/circuittype.html:26 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:83 -#: netbox/templates/circuits/provider.html:33 -#: netbox/templates/circuits/provideraccount.html:32 -#: netbox/templates/circuits/providernetwork.html:32 -#: netbox/templates/circuits/virtualcircuit.html:56 -#: netbox/templates/circuits/virtualcircuittermination.html:68 -#: netbox/templates/circuits/virtualcircuittype.html:26 +#: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:85 #: netbox/templates/core/datasource.html:58 -#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:40 -#: netbox/templates/dcim/consoleport.html:44 -#: netbox/templates/dcim/consoleserverport.html:44 -#: netbox/templates/dcim/devicebay.html:32 -#: netbox/templates/dcim/frontport.html:54 -#: netbox/templates/dcim/interface.html:69 -#: netbox/templates/dcim/inventoryitem.html:64 -#: netbox/templates/dcim/inventoryitemrole.html:22 -#: netbox/templates/dcim/macaddress.html:21 -#: netbox/templates/dcim/modulebay.html:42 -#: netbox/templates/dcim/powerfeed.html:40 -#: netbox/templates/dcim/poweroutlet.html:44 -#: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 -#: netbox/templates/dcim/rearport.html:54 -#: netbox/templates/dcim/virtualchassis.html:21 +#: netbox/templates/core/plugin.html:80 #: netbox/templates/extras/configcontext.html:25 #: netbox/templates/extras/configcontextprofile.html:17 #: netbox/templates/extras/configtemplate.html:17 @@ -902,9 +838,9 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:195 #: netbox/circuits/forms/bulk_import.py:133 #: netbox/circuits/forms/filtersets.py:234 -#: netbox/circuits/forms/model_forms.py:177 +#: netbox/circuits/forms/model_forms.py:177 netbox/circuits/ui/panels.py:14 #: netbox/templates/circuits/inc/circuit_termination.html:6 -#: netbox/templates/dcim/cable.html:72 netbox/templates/dcim/cable.html:76 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:6 #: netbox/vpn/forms/bulk_import.py:99 netbox/vpn/forms/filtersets.py:87 msgid "Termination" msgstr "" @@ -926,11 +862,10 @@ msgid "Mark connected" msgstr "" #: netbox/circuits/forms/bulk_edit.py:220 -#: netbox/circuits/forms/model_forms.py:188 +#: netbox/circuits/forms/model_forms.py:188 netbox/circuits/views.py:513 +#: netbox/dcim/views.py:3465 netbox/dcim/views.py:3566 #: netbox/templates/circuits/inc/circuit_termination_fields.html:55 -#: netbox/templates/dcim/frontport.html:118 -#: netbox/templates/dcim/interface.html:268 -#: netbox/templates/dcim/rearport.html:112 +#: netbox/templates/dcim/panels/interface_connection.html:92 msgid "Circuit Termination" msgstr "" @@ -943,9 +878,7 @@ msgstr "" #: netbox/circuits/forms/bulk_import.py:188 #: netbox/circuits/forms/filtersets.py:314 #: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:666 -#: netbox/templates/circuits/circuitgroupassignment.html:34 #: netbox/templates/dcim/panels/virtual_chassis_members.html:11 -#: netbox/templates/dcim/virtualchassis.html:58 #: netbox/templates/dcim/virtualchassis_edit.html:68 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 #: netbox/templates/ipam/panels/fhrp_groups.html:12 @@ -988,11 +921,10 @@ msgstr "" #: netbox/ipam/forms/model_forms.py:678 netbox/ipam/tables/ip.py:208 #: netbox/ipam/tables/ip.py:265 netbox/ipam/tables/ip.py:318 #: netbox/ipam/tables/vlans.py:102 -#: netbox/templates/circuits/virtualcircuittermination.html:42 #: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:196 -#: netbox/templates/dcim/interface.html:298 -#: netbox/templates/dcim/inventoryitem.html:40 +#: netbox/templates/dcim/panels/component_inventory_items.html:10 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:19 +#: netbox/templates/dcim/panels/interface_wireless.html:17 #: netbox/templates/ipam/ipaddress.html:41 #: netbox/templates/ipam/iprange.html:57 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 @@ -1091,20 +1023,17 @@ msgstr "" #: netbox/circuits/forms/bulk_import.py:258 #: netbox/circuits/forms/model_forms.py:367 #: netbox/circuits/tables/virtual_circuits.py:108 -#: netbox/dcim/forms/bulk_import.py:1330 netbox/dcim/forms/model_forms.py:1308 -#: netbox/dcim/forms/model_forms.py:1577 netbox/dcim/forms/model_forms.py:1758 -#: netbox/dcim/forms/model_forms.py:1793 netbox/dcim/forms/model_forms.py:1918 -#: netbox/dcim/tables/connections.py:66 netbox/dcim/tables/devices.py:1199 -#: netbox/ipam/forms/bulk_import.py:323 netbox/ipam/forms/model_forms.py:283 -#: netbox/ipam/forms/model_forms.py:292 netbox/ipam/tables/fhrp.py:61 -#: netbox/ipam/tables/ip.py:323 netbox/ipam/tables/vlans.py:145 +#: netbox/circuits/ui/panels.py:134 netbox/dcim/forms/bulk_import.py:1330 +#: netbox/dcim/forms/model_forms.py:1308 netbox/dcim/forms/model_forms.py:1577 +#: netbox/dcim/forms/model_forms.py:1758 netbox/dcim/forms/model_forms.py:1793 +#: netbox/dcim/forms/model_forms.py:1918 netbox/dcim/tables/connections.py:66 +#: netbox/dcim/tables/devices.py:1199 netbox/dcim/views.py:3457 +#: netbox/dcim/views.py:3560 netbox/ipam/forms/bulk_import.py:323 +#: netbox/ipam/forms/model_forms.py:283 netbox/ipam/forms/model_forms.py:292 +#: netbox/ipam/tables/fhrp.py:61 netbox/ipam/tables/ip.py:323 +#: netbox/ipam/tables/vlans.py:145 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 -#: netbox/templates/circuits/virtualcircuittermination.html:53 -#: netbox/templates/circuits/virtualcircuittermination.html:60 -#: netbox/templates/dcim/frontport.html:103 -#: netbox/templates/dcim/interface.html:27 -#: netbox/templates/dcim/interface.html:259 -#: netbox/templates/dcim/rearport.html:103 +#: netbox/templates/dcim/panels/interface_connection.html:83 #: netbox/templates/wireless/panels/wirelesslink_interface.html:12 #: netbox/virtualization/forms/model_forms.py:368 #: netbox/vpn/forms/bulk_import.py:302 netbox/vpn/forms/model_forms.py:434 @@ -1145,7 +1074,6 @@ msgstr "" #: netbox/ipam/forms/filtersets.py:481 netbox/ipam/forms/filtersets.py:549 #: netbox/templates/dcim/device_edit.html:32 #: netbox/templates/dcim/inc/cable_termination.html:12 -#: netbox/templates/dcim/powerpanel.html:26 #: netbox/virtualization/forms/filtersets.py:87 #: netbox/virtualization/forms/filtersets.py:113 #: netbox/wireless/forms/filtersets.py:99 @@ -1287,8 +1215,6 @@ msgstr "" #: netbox/circuits/tables/providers.py:61 #: netbox/circuits/tables/virtual_circuits.py:55 #: netbox/circuits/tables/virtual_circuits.py:99 -#: netbox/templates/circuits/circuit.html:22 -#: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "" @@ -1299,7 +1225,6 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:296 netbox/dcim/forms/bulk_edit.py:1540 #: netbox/extras/forms/model_forms.py:706 netbox/ipam/forms/filtersets.py:154 #: netbox/ipam/forms/filtersets.py:642 netbox/ipam/forms/model_forms.py:329 -#: netbox/templates/dcim/macaddress.html:25 #: netbox/templates/extras/configcontext.html:36 #: netbox/templates/ipam/ipaddress.html:59 #: netbox/templates/ipam/vlan_edit.html:42 @@ -1315,8 +1240,7 @@ msgstr "" #: netbox/ipam/filtersets.py:1034 netbox/ipam/forms/bulk_edit.py:423 #: netbox/ipam/forms/bulk_import.py:515 netbox/ipam/forms/model_forms.py:561 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/vlans.py:94 -#: netbox/templates/circuits/circuitgroupassignment.html:22 -#: netbox/templates/dcim/interface.html:359 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:8 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 #: netbox/templates/ipam/panels/fhrp_groups.html:9 #: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/tenant.html:20 @@ -1345,7 +1269,6 @@ msgid "Group" msgstr "" #: netbox/circuits/forms/model_forms.py:241 -#: netbox/templates/circuits/circuitgroup.html:25 msgid "Circuit Group" msgstr "" @@ -1358,9 +1281,9 @@ msgid "Group Assignment" msgstr "" #: netbox/circuits/models/base.py:18 netbox/dcim/models/cables.py:81 -#: netbox/dcim/models/device_component_templates.py:353 -#: netbox/dcim/models/device_component_templates.py:588 -#: netbox/dcim/models/device_component_templates.py:661 +#: netbox/dcim/models/device_component_templates.py:343 +#: netbox/dcim/models/device_component_templates.py:578 +#: netbox/dcim/models/device_component_templates.py:651 #: netbox/dcim/models/device_components.py:573 #: netbox/dcim/models/device_components.py:1156 #: netbox/dcim/models/device_components.py:1204 @@ -1667,29 +1590,13 @@ msgstr "" #: netbox/ipam/tables/vlans.py:33 netbox/ipam/tables/vlans.py:86 #: netbox/ipam/tables/vlans.py:205 netbox/ipam/tables/vrfs.py:26 #: netbox/ipam/tables/vrfs.py:65 netbox/netbox/tables/tables.py:325 -#: netbox/netbox/ui/panels.py:198 netbox/netbox/ui/panels.py:207 -#: netbox/templates/circuits/circuitgroup.html:28 -#: netbox/templates/circuits/circuittype.html:22 -#: netbox/templates/circuits/provideraccount.html:28 -#: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/circuits/virtualcircuittype.html:22 +#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 #: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:17 #: netbox/templates/core/plugin.html:54 netbox/templates/core/rq_worker.html:43 -#: netbox/templates/dcim/consoleport.html:28 -#: netbox/templates/dcim/consoleserverport.html:28 -#: netbox/templates/dcim/devicebay.html:24 -#: netbox/templates/dcim/frontport.html:28 #: netbox/templates/dcim/inc/interface_vlans_table.html:5 #: netbox/templates/dcim/inc/panels/inventory_items.html:18 -#: netbox/templates/dcim/interface.html:38 -#: netbox/templates/dcim/interface.html:240 -#: netbox/templates/dcim/inventoryitem.html:28 -#: netbox/templates/dcim/inventoryitemrole.html:18 -#: netbox/templates/dcim/modulebay.html:30 -#: netbox/templates/dcim/poweroutlet.html:28 -#: netbox/templates/dcim/powerport.html:28 -#: netbox/templates/dcim/rearport.html:28 -#: netbox/templates/dcim/virtualdevicecontext.html:18 +#: netbox/templates/dcim/panels/component_inventory_items.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:64 #: netbox/templates/extras/configcontext.html:13 #: netbox/templates/extras/configcontextprofile.html:13 #: netbox/templates/extras/configtemplate.html:13 @@ -1742,17 +1649,13 @@ msgstr "" #: netbox/circuits/tables/virtual_circuits.py:27 #: netbox/netbox/navigation/menu.py:278 netbox/netbox/navigation/menu.py:282 #: netbox/netbox/navigation/menu.py:284 -#: netbox/templates/circuits/provider.html:57 -#: netbox/templates/circuits/provideraccount.html:48 -#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "" #: netbox/circuits/tables/circuits.py:53 #: netbox/circuits/tables/virtual_circuits.py:42 -#: netbox/templates/circuits/circuit.html:26 -#: netbox/templates/circuits/virtualcircuit.html:35 -#: netbox/templates/dcim/interface.html:192 +#: netbox/circuits/ui/panels.py:75 netbox/circuits/ui/panels.py:118 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:15 msgid "Circuit ID" msgstr "" @@ -1766,7 +1669,6 @@ msgid "Side Z" msgstr "" #: netbox/circuits/tables/circuits.py:78 -#: netbox/templates/circuits/circuit.html:65 msgid "Commit Rate" msgstr "" @@ -1794,10 +1696,7 @@ msgid "Site Group" msgstr "" #: netbox/circuits/tables/circuits.py:145 -#: netbox/templates/circuits/providernetwork.html:17 -#: netbox/templates/circuits/virtualcircuit.html:27 -#: netbox/templates/circuits/virtualcircuittermination.html:30 -#: netbox/templates/dcim/interface.html:188 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:11 msgid "Provider Network" msgstr "" @@ -1813,8 +1712,7 @@ msgstr "" msgid "ASN Count" msgstr "" -#: netbox/circuits/tables/virtual_circuits.py:64 -#: netbox/templates/circuits/virtualcircuit.html:87 +#: netbox/circuits/tables/virtual_circuits.py:64 netbox/circuits/views.py:802 #: netbox/vpn/tables/tunnels.py:59 netbox/vpn/views.py:139 #: netbox/vpn/views.py:685 msgid "Terminations" @@ -1857,24 +1755,11 @@ msgstr "" #: netbox/dcim/tables/modules.py:82 netbox/extras/forms/filtersets.py:405 #: netbox/ipam/forms/bulk_import.py:309 netbox/ipam/forms/filtersets.py:649 #: netbox/ipam/forms/model_forms.py:325 netbox/ipam/tables/vlans.py:156 -#: netbox/templates/circuits/virtualcircuittermination.html:56 -#: netbox/templates/dcim/consoleport.html:20 -#: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device_edit.html:12 -#: netbox/templates/dcim/devicebay.html:20 -#: netbox/templates/dcim/devicebay.html:48 -#: netbox/templates/dcim/frontport.html:20 -#: netbox/templates/dcim/interface.html:30 -#: netbox/templates/dcim/interface.html:236 -#: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/modulebay.html:20 +#: netbox/templates/dcim/panels/installed_device.html:9 +#: netbox/templates/dcim/panels/interface_connection.html:60 #: netbox/templates/dcim/panels/virtual_chassis_members.html:8 -#: netbox/templates/dcim/poweroutlet.html:20 -#: netbox/templates/dcim/powerport.html:20 -#: netbox/templates/dcim/rearport.html:20 -#: netbox/templates/dcim/virtualchassis.html:55 #: netbox/templates/dcim/virtualchassis_edit.html:63 -#: netbox/templates/dcim/virtualdevicecontext.html:22 #: netbox/templates/wireless/panels/wirelesslink_interface.html:8 #: netbox/virtualization/filtersets.py:160 #: netbox/virtualization/forms/bulk_edit.py:108 @@ -1891,6 +1776,15 @@ msgstr "" msgid "Device" msgstr "" +#: netbox/circuits/ui/panels.py:37 netbox/netbox/navigation/menu.py:301 +msgid "Group Assignments" +msgstr "" + +#: netbox/circuits/ui/panels.py:46 netbox/ipam/ui/panels.py:35 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "" + #: netbox/core/api/views.py:51 msgid "This user does not have permission to synchronize this data source." msgstr "" @@ -2070,7 +1964,7 @@ msgstr "" #: netbox/core/data_backends.py:46 netbox/core/tables/plugins.py:54 #: netbox/templates/core/plugin.html:88 -#: netbox/templates/dcim/interface.html:291 +#: netbox/templates/dcim/panels/interface_wireless.html:10 msgid "Local" msgstr "" @@ -2141,7 +2035,6 @@ msgstr "" #: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:520 #: netbox/netbox/preferences.py:46 netbox/netbox/preferences.py:71 #: netbox/templates/core/datasource.html:42 -#: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 #: netbox/templates/extras/eventrule.html:17 #: netbox/templates/extras/savedfilter.html:25 @@ -2464,13 +2357,13 @@ msgid "Config revision #{id}" msgstr "" #: netbox/core/models/data.py:45 netbox/dcim/models/cables.py:50 -#: netbox/dcim/models/device_component_templates.py:210 -#: netbox/dcim/models/device_component_templates.py:245 -#: netbox/dcim/models/device_component_templates.py:281 -#: netbox/dcim/models/device_component_templates.py:346 -#: netbox/dcim/models/device_component_templates.py:437 -#: netbox/dcim/models/device_component_templates.py:583 -#: netbox/dcim/models/device_component_templates.py:656 +#: netbox/dcim/models/device_component_templates.py:200 +#: netbox/dcim/models/device_component_templates.py:235 +#: netbox/dcim/models/device_component_templates.py:271 +#: netbox/dcim/models/device_component_templates.py:336 +#: netbox/dcim/models/device_component_templates.py:427 +#: netbox/dcim/models/device_component_templates.py:573 +#: netbox/dcim/models/device_component_templates.py:646 #: netbox/dcim/models/device_components.py:370 #: netbox/dcim/models/device_components.py:397 #: netbox/dcim/models/device_components.py:428 @@ -2491,7 +2384,7 @@ msgid "URL" msgstr "" #: netbox/core/models/data.py:60 -#: netbox/dcim/models/device_component_templates.py:442 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:605 #: netbox/extras/models/models.py:81 netbox/extras/models/models.py:319 #: netbox/extras/models/models.py:507 netbox/extras/models/models.py:586 @@ -2965,7 +2858,7 @@ msgstr "" msgid "Position (U)" msgstr "" -#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:47 +#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:49 msgid "Facility ID" msgstr "" @@ -3091,8 +2984,7 @@ msgstr "" #: netbox/dcim/tables/devices.py:1205 netbox/ipam/forms/bulk_import.py:601 #: netbox/ipam/forms/model_forms.py:758 netbox/ipam/tables/fhrp.py:56 #: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/services.py:42 -#: netbox/netbox/tables/tables.py:329 netbox/netbox/ui/panels.py:206 -#: netbox/templates/dcim/interface.html:113 +#: netbox/netbox/tables/tables.py:329 netbox/netbox/ui/panels.py:207 #: netbox/templates/ipam/service.html:30 #: netbox/templates/tenancy/contactgroup.html:29 #: netbox/templates/tenancy/tenantgroup.html:37 @@ -3214,9 +3106,8 @@ msgstr "" #: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 #: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125 -#: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150 -#: netbox/netbox/navigation/menu.py:154 -#: netbox/templates/dcim/interface.html:285 +#: netbox/dcim/forms/model_forms.py:1589 netbox/dcim/ui/panels.py:546 +#: netbox/netbox/navigation/menu.py:150 netbox/netbox/navigation/menu.py:154 msgid "Wireless" msgstr "" @@ -3226,7 +3117,7 @@ msgstr "" #: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 #: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107 -#: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:117 +#: netbox/dcim/tables/devices.py:741 #: netbox/virtualization/forms/bulk_edit.py:177 #: netbox/virtualization/forms/bulk_import.py:171 #: netbox/virtualization/tables/virtualmachines.py:137 @@ -3300,7 +3191,6 @@ msgstr "" #: netbox/dcim/choices.py:1444 netbox/dcim/forms/filtersets.py:425 #: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112 #: netbox/dcim/forms/filtersets.py:1910 -#: netbox/templates/dcim/inventoryitem.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:66 msgid "Serial" msgstr "" @@ -3835,7 +3725,8 @@ msgstr "" #: netbox/dcim/filtersets.py:1323 netbox/dcim/forms/filtersets.py:920 #: netbox/dcim/forms/filtersets.py:1634 netbox/dcim/forms/filtersets.py:1979 #: netbox/dcim/forms/model_forms.py:1915 netbox/dcim/models/devices.py:1313 -#: netbox/dcim/models/devices.py:1336 netbox/virtualization/filtersets.py:230 +#: netbox/dcim/models/devices.py:1336 netbox/dcim/ui/panels.py:366 +#: netbox/dcim/ui/panels.py:504 netbox/virtualization/filtersets.py:230 #: netbox/virtualization/filtersets.py:318 #: netbox/virtualization/forms/filtersets.py:191 #: netbox/virtualization/forms/filtersets.py:245 @@ -3923,7 +3814,6 @@ msgstr "" #: netbox/dcim/forms/object_create.py:329 netbox/dcim/tables/devices.py:215 #: netbox/netbox/navigation/menu.py:82 #: netbox/templates/dcim/device_edit.html:95 -#: netbox/templates/dcim/virtualchassis.html:10 #: netbox/templates/dcim/virtualchassis_edit.html:28 msgid "Virtual Chassis" msgstr "" @@ -3983,7 +3873,7 @@ msgstr "" msgid "Is primary" msgstr "" -#: netbox/dcim/filtersets.py:2060 netbox/templates/dcim/interface.html:81 +#: netbox/dcim/filtersets.py:2060 #: netbox/virtualization/forms/model_forms.py:386 #: netbox/virtualization/ui/panels.py:62 msgid "802.1Q Mode" @@ -4002,23 +3892,22 @@ msgstr "" #: netbox/dcim/forms/bulk_import.py:1034 netbox/dcim/forms/filtersets.py:1687 #: netbox/dcim/forms/model_forms.py:1555 #: netbox/dcim/models/device_components.py:867 -#: netbox/dcim/tables/devices.py:667 netbox/ipam/filtersets.py:360 -#: netbox/ipam/filtersets.py:372 netbox/ipam/filtersets.py:511 -#: netbox/ipam/filtersets.py:618 netbox/ipam/filtersets.py:630 -#: netbox/ipam/forms/bulk_edit.py:190 netbox/ipam/forms/bulk_edit.py:240 -#: netbox/ipam/forms/bulk_edit.py:281 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:248 netbox/ipam/forms/bulk_import.py:284 -#: netbox/ipam/forms/filtersets.py:70 netbox/ipam/forms/filtersets.py:194 -#: netbox/ipam/forms/filtersets.py:348 netbox/ipam/forms/model_forms.py:68 -#: netbox/ipam/forms/model_forms.py:203 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:303 netbox/ipam/forms/model_forms.py:466 -#: netbox/ipam/forms/model_forms.py:480 netbox/ipam/forms/model_forms.py:494 -#: netbox/ipam/models/ip.py:224 netbox/ipam/models/ip.py:518 -#: netbox/ipam/models/ip.py:747 netbox/ipam/models/vrfs.py:61 -#: netbox/ipam/tables/ip.py:187 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:311 netbox/ipam/tables/ip.py:413 -#: netbox/templates/dcim/interface.html:170 -#: netbox/templates/ipam/ipaddress.html:18 +#: netbox/dcim/tables/devices.py:667 netbox/dcim/ui/panels.py:507 +#: netbox/ipam/filtersets.py:360 netbox/ipam/filtersets.py:372 +#: netbox/ipam/filtersets.py:511 netbox/ipam/filtersets.py:618 +#: netbox/ipam/filtersets.py:630 netbox/ipam/forms/bulk_edit.py:190 +#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:281 +#: netbox/ipam/forms/bulk_import.py:163 netbox/ipam/forms/bulk_import.py:248 +#: netbox/ipam/forms/bulk_import.py:284 netbox/ipam/forms/filtersets.py:70 +#: netbox/ipam/forms/filtersets.py:194 netbox/ipam/forms/filtersets.py:348 +#: netbox/ipam/forms/model_forms.py:68 netbox/ipam/forms/model_forms.py:203 +#: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:303 +#: netbox/ipam/forms/model_forms.py:466 netbox/ipam/forms/model_forms.py:480 +#: netbox/ipam/forms/model_forms.py:494 netbox/ipam/models/ip.py:224 +#: netbox/ipam/models/ip.py:518 netbox/ipam/models/ip.py:747 +#: netbox/ipam/models/vrfs.py:61 netbox/ipam/tables/ip.py:187 +#: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:311 +#: netbox/ipam/tables/ip.py:413 netbox/templates/ipam/ipaddress.html:18 #: netbox/templates/ipam/iprange.html:47 netbox/templates/ipam/prefix.html:19 #: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 #: netbox/virtualization/forms/bulk_edit.py:226 @@ -4043,9 +3932,9 @@ msgid "L2VPN (ID)" msgstr "" #: netbox/dcim/filtersets.py:2092 netbox/dcim/forms/filtersets.py:1692 -#: netbox/dcim/tables/devices.py:607 netbox/ipam/filtersets.py:1087 -#: netbox/ipam/forms/filtersets.py:613 netbox/ipam/tables/vlans.py:116 -#: netbox/templates/dcim/interface.html:104 netbox/templates/ipam/vlan.html:82 +#: netbox/dcim/tables/devices.py:607 netbox/dcim/ui/panels.py:487 +#: netbox/ipam/filtersets.py:1087 netbox/ipam/forms/filtersets.py:613 +#: netbox/ipam/tables/vlans.py:116 netbox/templates/ipam/vlan.html:82 #: netbox/virtualization/forms/filtersets.py:255 #: netbox/vpn/forms/bulk_import.py:285 netbox/vpn/forms/filtersets.py:268 #: netbox/vpn/forms/model_forms.py:407 netbox/vpn/forms/model_forms.py:425 @@ -4102,9 +3991,6 @@ msgid "LAG interface (ID)" msgstr "" #: netbox/dcim/filtersets.py:2185 netbox/dcim/tables/devices.py:1194 -#: netbox/templates/dcim/interface.html:149 -#: netbox/templates/dcim/macaddress.html:11 -#: netbox/templates/dcim/macaddress.html:14 #: netbox/virtualization/ui/panels.py:71 msgid "MAC Address" msgstr "" @@ -4121,7 +4007,6 @@ msgstr "" #: netbox/dcim/filtersets.py:2225 netbox/dcim/filtersets.py:2237 #: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1895 -#: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "" @@ -4180,6 +4065,7 @@ msgstr "" #: netbox/netbox/forms/bulk_import.py:27 netbox/netbox/forms/mixins.py:131 #: netbox/netbox/tables/columns.py:495 #: netbox/templates/circuits/inc/circuit_termination.html:29 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:29 #: netbox/templates/generic/bulk_edit.html:78 #: netbox/templates/inc/panels/tags.html:5 #: netbox/utilities/forms/fields/fields.py:101 @@ -4190,11 +4076,9 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:595 #: netbox/dcim/forms/model_forms.py:661 netbox/dcim/forms/object_create.py:155 #: netbox/dcim/forms/object_create.py:256 netbox/dcim/tables/devices.py:169 -#: netbox/templates/dcim/frontport.html:132 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/panels/front_port_mappings.html:9 +#: netbox/templates/dcim/panels/rear_port_mappings.html:9 #: netbox/templates/dcim/panels/virtual_chassis_members.html:9 -#: netbox/templates/dcim/rearport.html:126 -#: netbox/templates/dcim/virtualchassis.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:67 msgid "Position" msgstr "" @@ -4247,8 +4131,7 @@ msgstr "" #: netbox/dcim/tables/devicetypes.py:87 netbox/dcim/tables/devicetypes.py:322 #: netbox/dcim/tables/modules.py:47 netbox/dcim/tables/modules.py:90 #: netbox/dcim/tables/racks.py:51 netbox/dcim/tables/racks.py:121 -#: netbox/templates/dcim/inventoryitem.html:48 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/panels/installed_module.html:13 #: netbox/templates/dcim/panels/module_type.html:7 msgid "Manufacturer" msgstr "" @@ -4273,7 +4156,7 @@ msgid "Height (U)" msgstr "" #: netbox/dcim/forms/bulk_edit.py:244 netbox/dcim/forms/bulk_edit.py:387 -#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:39 +#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:41 msgid "Descending units" msgstr "" @@ -4310,7 +4193,7 @@ msgstr "" #: netbox/dcim/forms/model_forms.py:237 netbox/dcim/forms/model_forms.py:318 #: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:55 #: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:162 -#: netbox/dcim/views.py:891 netbox/dcim/views.py:1019 +#: netbox/dcim/views.py:893 netbox/dcim/views.py:1021 #: netbox/extras/forms/bulk_edit.py:57 netbox/extras/forms/bulk_edit.py:137 #: netbox/extras/forms/bulk_edit.py:191 netbox/extras/forms/bulk_edit.py:219 #: netbox/extras/forms/bulk_edit.py:315 netbox/extras/forms/bulk_edit.py:341 @@ -4350,8 +4233,8 @@ msgid "Outer Dimensions" msgstr "" #: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:238 -#: netbox/dcim/forms/model_forms.py:319 netbox/dcim/ui/panels.py:135 -#: netbox/dcim/views.py:885 netbox/dcim/views.py:1017 +#: netbox/dcim/forms/model_forms.py:319 netbox/dcim/ui/panels.py:137 +#: netbox/dcim/views.py:887 netbox/dcim/views.py:1019 #: netbox/extras/tables/tables.py:278 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 #: netbox/templates/extras/imageattachment.html:40 @@ -4360,7 +4243,7 @@ msgstr "" #: netbox/dcim/forms/bulk_edit.py:297 netbox/dcim/forms/filtersets.py:336 #: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:240 -#: netbox/dcim/views.py:890 netbox/dcim/views.py:1018 +#: netbox/dcim/views.py:892 netbox/dcim/views.py:1020 #: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "" @@ -4371,13 +4254,14 @@ msgid "Rack type" msgstr "" #: netbox/dcim/forms/bulk_edit.py:363 netbox/dcim/forms/bulk_edit.py:708 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/templates/dcim/modulebay.html:70 +#: netbox/dcim/forms/bulk_edit.py:763 msgid "Serial Number" msgstr "" #: netbox/dcim/forms/bulk_edit.py:366 netbox/dcim/forms/filtersets.py:429 #: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1116 #: netbox/dcim/forms/filtersets.py:1914 +#: netbox/templates/dcim/panels/installed_module.html:25 msgid "Asset tag" msgstr "" @@ -4404,7 +4288,6 @@ msgstr "" #: netbox/dcim/tables/power.py:67 netbox/dcim/tables/racks.py:204 #: netbox/ipam/forms/filtersets.py:486 #: netbox/templates/dcim/inc/cable_termination.html:16 -#: netbox/templates/dcim/powerfeed.html:28 #: netbox/templates/dcim/rack/base.html:4 #: netbox/virtualization/forms/model_forms.py:107 msgid "Rack" @@ -4443,13 +4326,12 @@ msgstr "" #: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1119 #: netbox/dcim/forms/model_forms.py:1140 netbox/dcim/forms/model_forms.py:1180 #: netbox/dcim/forms/model_forms.py:1198 netbox/dcim/forms/object_create.py:119 -#: netbox/dcim/tables/devicetypes.py:84 netbox/dcim/ui/panels.py:125 -#: netbox/templates/dcim/devicebay.html:52 +#: netbox/dcim/tables/devicetypes.py:84 netbox/dcim/ui/panels.py:127 msgid "Device Type" msgstr "" #: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:412 -#: netbox/dcim/views.py:1590 netbox/extras/forms/model_forms.py:601 +#: netbox/dcim/views.py:1592 netbox/extras/forms/model_forms.py:601 msgid "Schema" msgstr "" @@ -4460,7 +4342,6 @@ msgstr "" #: netbox/dcim/forms/model_forms.py:431 netbox/dcim/tables/modules.py:43 #: netbox/extras/forms/filtersets.py:413 netbox/extras/forms/model_forms.py:626 #: netbox/extras/tables/tables.py:627 netbox/templates/account/base.html:7 -#: netbox/templates/dcim/cable.html:23 #: netbox/templates/extras/configcontext.html:21 #: netbox/templates/inc/user_menu.html:38 netbox/vpn/forms/bulk_edit.py:213 #: netbox/vpn/forms/filtersets.py:203 netbox/vpn/forms/model_forms.py:378 @@ -4473,8 +4354,7 @@ msgstr "" #: netbox/dcim/forms/model_forms.py:1120 netbox/dcim/forms/model_forms.py:1141 #: netbox/dcim/forms/model_forms.py:1181 netbox/dcim/forms/model_forms.py:1199 #: netbox/dcim/forms/object_create.py:120 netbox/dcim/tables/modules.py:52 -#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2848 -#: netbox/templates/dcim/modulebay.html:66 +#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2851 msgid "Module Type" msgstr "" @@ -4483,7 +4363,7 @@ msgid "Chassis" msgstr "" #: netbox/dcim/forms/bulk_edit.py:611 netbox/dcim/models/devices.py:390 -#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:142 +#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:144 msgid "VM role" msgstr "" @@ -4507,6 +4387,7 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:616 #: netbox/dcim/forms/model_forms.py:986 netbox/dcim/forms/model_forms.py:1003 #: netbox/extras/filtersets.py:729 +#: netbox/templates/dcim/panels/installed_device.html:13 msgid "Device type" msgstr "" @@ -4559,6 +4440,7 @@ msgstr "" #: netbox/dcim/forms/bulk_edit.py:744 netbox/dcim/forms/bulk_import.py:759 #: netbox/dcim/forms/model_forms.py:765 netbox/dcim/forms/model_forms.py:1011 +#: netbox/templates/dcim/panels/installed_module.html:17 msgid "Module type" msgstr "" @@ -4568,25 +4450,15 @@ msgstr "" #: netbox/dcim/forms/bulk_edit.py:1146 netbox/dcim/forms/bulk_edit.py:1173 #: netbox/dcim/forms/bulk_edit.py:1200 netbox/dcim/forms/bulk_edit.py:1218 #: netbox/dcim/forms/bulk_edit.py:1236 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/object_create.py:48 netbox/templates/dcim/cable.html:36 -#: netbox/templates/dcim/consoleport.html:32 -#: netbox/templates/dcim/consoleserverport.html:32 -#: netbox/templates/dcim/devicebay.html:28 -#: netbox/templates/dcim/frontport.html:32 +#: netbox/dcim/forms/object_create.py:48 #: netbox/templates/dcim/inc/panels/inventory_items.html:19 -#: netbox/templates/dcim/interface.html:42 -#: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:34 -#: netbox/templates/dcim/poweroutlet.html:32 -#: netbox/templates/dcim/powerport.html:32 -#: netbox/templates/dcim/rearport.html:32 +#: netbox/templates/dcim/panels/component_inventory_items.html:9 #: netbox/templates/extras/customfield.html:26 #: netbox/templates/generic/bulk_import.html:193 msgid "Label" msgstr "" #: netbox/dcim/forms/bulk_edit.py:807 netbox/dcim/forms/filtersets.py:1224 -#: netbox/templates/dcim/cable.html:54 msgid "Length" msgstr "" @@ -4596,7 +4468,6 @@ msgid "Length unit" msgstr "" #: netbox/dcim/forms/bulk_edit.py:830 -#: netbox/templates/dcim/virtualchassis.html:13 msgid "Domain" msgstr "" @@ -4606,22 +4477,20 @@ msgid "Power panel" msgstr "" #: netbox/dcim/forms/bulk_edit.py:908 netbox/dcim/forms/bulk_import.py:1682 -#: netbox/dcim/forms/filtersets.py:1338 netbox/templates/dcim/powerfeed.html:83 +#: netbox/dcim/forms/filtersets.py:1338 msgid "Supply" msgstr "" #: netbox/dcim/forms/bulk_edit.py:914 netbox/dcim/forms/bulk_import.py:1687 -#: netbox/dcim/forms/filtersets.py:1343 netbox/templates/dcim/powerfeed.html:95 +#: netbox/dcim/forms/filtersets.py:1343 msgid "Phase" msgstr "" #: netbox/dcim/forms/bulk_edit.py:920 netbox/dcim/forms/filtersets.py:1348 -#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "" #: netbox/dcim/forms/bulk_edit.py:924 netbox/dcim/forms/filtersets.py:1352 -#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "" @@ -4634,7 +4503,7 @@ msgid "Maximum draw" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1018 -#: netbox/dcim/models/device_component_templates.py:292 +#: netbox/dcim/models/device_component_templates.py:282 #: netbox/dcim/models/device_components.py:440 msgid "Maximum power draw (watts)" msgstr "" @@ -4644,7 +4513,7 @@ msgid "Allocated draw" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1024 -#: netbox/dcim/models/device_component_templates.py:299 +#: netbox/dcim/models/device_component_templates.py:289 #: netbox/dcim/models/device_components.py:447 msgid "Allocated power draw (watts)" msgstr "" @@ -4660,23 +4529,23 @@ msgid "Feed leg" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1112 netbox/dcim/forms/bulk_edit.py:1433 -#: netbox/dcim/forms/filtersets.py:1719 +#: netbox/dcim/forms/filtersets.py:1719 netbox/dcim/ui/panels.py:478 msgid "Management only" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1122 netbox/dcim/forms/bulk_edit.py:1439 #: netbox/dcim/forms/bulk_import.py:985 netbox/dcim/forms/filtersets.py:1643 #: netbox/dcim/forms/filtersets.py:1728 netbox/dcim/forms/object_import.py:91 -#: netbox/dcim/models/device_component_templates.py:462 -#: netbox/dcim/models/device_components.py:839 +#: netbox/dcim/models/device_component_templates.py:452 +#: netbox/dcim/models/device_components.py:839 netbox/dcim/ui/panels.py:480 msgid "PoE mode" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1128 netbox/dcim/forms/bulk_edit.py:1445 #: netbox/dcim/forms/bulk_import.py:991 netbox/dcim/forms/filtersets.py:1648 #: netbox/dcim/forms/filtersets.py:1733 netbox/dcim/forms/object_import.py:96 -#: netbox/dcim/models/device_component_templates.py:469 -#: netbox/dcim/models/device_components.py:846 +#: netbox/dcim/models/device_component_templates.py:459 +#: netbox/dcim/models/device_components.py:846 netbox/dcim/ui/panels.py:481 msgid "PoE type" msgstr "" @@ -4687,20 +4556,12 @@ msgstr "" #: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:786 #: netbox/dcim/forms/model_forms.py:1390 netbox/dcim/tables/devices.py:330 -#: netbox/templates/dcim/consoleport.html:24 -#: netbox/templates/dcim/consoleserverport.html:24 -#: netbox/templates/dcim/frontport.html:24 -#: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/modulebay.html:26 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/poweroutlet.html:24 -#: netbox/templates/dcim/powerport.html:24 -#: netbox/templates/dcim/rearport.html:24 +#: netbox/templates/dcim/panels/installed_module.html:9 msgid "Module" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/tables/devices.py:746 -#: netbox/templates/dcim/interface.html:134 +#: netbox/dcim/ui/panels.py:495 msgid "LAG" msgstr "" @@ -4711,10 +4572,8 @@ msgstr "" #: netbox/dcim/forms/bulk_edit.py:1424 netbox/dcim/forms/bulk_import.py:819 #: netbox/dcim/forms/bulk_import.py:845 netbox/dcim/forms/filtersets.py:1429 #: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1607 -#: netbox/dcim/tables/devices.py:651 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 -#: netbox/templates/dcim/consoleport.html:40 -#: netbox/templates/dcim/consoleserverport.html:40 +#: netbox/dcim/tables/devices.py:651 netbox/dcim/ui/panels.py:474 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:64 msgid "Speed" msgstr "" @@ -4741,8 +4600,7 @@ msgstr "" #: netbox/dcim/forms/bulk_edit.py:1470 netbox/dcim/forms/bulk_import.py:1007 #: netbox/dcim/forms/model_forms.py:1527 netbox/dcim/tables/devices.py:616 -#: netbox/templates/dcim/interface.html:91 -#: netbox/virtualization/forms/bulk_edit.py:213 +#: netbox/dcim/ui/panels.py:484 netbox/virtualization/forms/bulk_edit.py:213 #: netbox/virtualization/forms/bulk_import.py:191 #: netbox/virtualization/forms/model_forms.py:331 msgid "Untagged VLAN" @@ -4777,17 +4635,16 @@ msgid "Wireless LAN group" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1513 -#: netbox/dcim/tables/devices.py:660 netbox/netbox/navigation/menu.py:156 -#: netbox/templates/dcim/interface.html:355 +#: netbox/dcim/tables/devices.py:660 netbox/dcim/ui/panels.py:561 +#: netbox/netbox/navigation/menu.py:156 #: netbox/wireless/tables/wirelesslan.py:20 msgid "Wireless LANs" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1531 netbox/dcim/forms/filtersets.py:1574 -#: netbox/dcim/forms/model_forms.py:1579 netbox/ipam/forms/bulk_edit.py:227 -#: netbox/ipam/forms/bulk_edit.py:313 netbox/ipam/forms/filtersets.py:191 -#: netbox/netbox/navigation/menu.py:112 -#: netbox/templates/dcim/interface.html:146 +#: netbox/dcim/forms/model_forms.py:1579 netbox/dcim/ui/panels.py:499 +#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:313 +#: netbox/ipam/forms/filtersets.py:191 netbox/netbox/navigation/menu.py:112 #: netbox/templates/ipam/prefix.html:91 #: netbox/virtualization/forms/filtersets.py:218 #: netbox/virtualization/forms/model_forms.py:369 @@ -4808,8 +4665,7 @@ msgid "PoE" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1581 -#: netbox/templates/dcim/interface.html:110 -#: netbox/virtualization/forms/bulk_edit.py:237 +#: netbox/dcim/ui/panels.py:491 netbox/virtualization/forms/bulk_edit.py:237 #: netbox/virtualization/forms/model_forms.py:371 msgid "Related Interfaces" msgstr "" @@ -5322,6 +5178,7 @@ msgid "Side B name" msgstr "" #: netbox/dcim/forms/bulk_import.py:1456 +#: netbox/templates/dcim/panels/connection.html:60 #: netbox/wireless/forms/bulk_import.py:133 msgid "Connection status" msgstr "" @@ -5354,8 +5211,6 @@ msgstr "" #: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:900 #: netbox/dcim/tables/devices.py:1124 #: netbox/templates/dcim/panels/virtual_chassis_members.html:10 -#: netbox/templates/dcim/virtualchassis.html:17 -#: netbox/templates/dcim/virtualchassis.html:57 msgid "Master" msgstr "" @@ -5384,8 +5239,7 @@ msgid "Single or three-phase" msgstr "" #: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1875 -#: netbox/dcim/ui/panels.py:108 -#: netbox/templates/dcim/virtualdevicecontext.html:30 +#: netbox/dcim/ui/panels.py:110 netbox/dcim/ui/panels.py:354 #: netbox/virtualization/ui/panels.py:28 msgid "Primary IPv4" msgstr "" @@ -5395,8 +5249,7 @@ msgid "IPv4 address with mask, e.g. 1.2.3.4/24" msgstr "" #: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1884 -#: netbox/dcim/ui/panels.py:113 -#: netbox/templates/dcim/virtualdevicecontext.html:41 +#: netbox/dcim/ui/panels.py:115 netbox/dcim/ui/panels.py:359 #: netbox/virtualization/ui/panels.py:33 msgid "Primary IPv6" msgstr "" @@ -5406,8 +5259,7 @@ msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64" msgstr "" #: netbox/dcim/forms/common.py:19 netbox/dcim/models/device_components.py:615 -#: netbox/templates/dcim/interface.html:57 -#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/dcim/ui/panels.py:476 netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/ui/panels.py:61 msgid "MTU" msgstr "" @@ -5445,15 +5297,12 @@ msgstr "" #: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:853 #: netbox/dcim/tables/power.py:63 #: netbox/templates/dcim/inc/cable_termination.html:40 -#: netbox/templates/dcim/powerfeed.html:24 -#: netbox/templates/dcim/powerpanel.html:19 #: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "" #: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:880 -#: netbox/templates/dcim/powerfeed.html:21 -#: netbox/templates/dcim/powerport.html:80 +#: netbox/dcim/views.py:3106 msgid "Power Feed" msgstr "" @@ -5482,7 +5331,7 @@ msgid "Function" msgstr "" #: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:341 -#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1164 +#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1166 msgid "Reservation" msgstr "" @@ -5547,16 +5396,9 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1420 netbox/dcim/forms/filtersets.py:1460 #: netbox/dcim/forms/filtersets.py:1500 netbox/dcim/forms/filtersets.py:1535 #: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/tables/devices.py:381 -#: netbox/dcim/tables/devices.py:682 netbox/ipam/tables/vlans.py:174 +#: netbox/dcim/tables/devices.py:682 netbox/dcim/ui/panels.py:377 +#: netbox/dcim/ui/panels.py:516 netbox/ipam/tables/vlans.py:174 #: netbox/templates/circuits/inc/circuit_termination_fields.html:16 -#: netbox/templates/dcim/consoleport.html:55 -#: netbox/templates/dcim/consoleserverport.html:55 -#: netbox/templates/dcim/frontport.html:66 -#: netbox/templates/dcim/interface.html:215 -#: netbox/templates/dcim/powerfeed.html:110 -#: netbox/templates/dcim/poweroutlet.html:73 -#: netbox/templates/dcim/powerport.html:59 -#: netbox/templates/dcim/rearport.html:66 msgid "Connection" msgstr "" @@ -5572,12 +5414,11 @@ msgid "Mgmt only" msgstr "" #: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1567 -#: netbox/dcim/models/device_components.py:792 -#: netbox/templates/dcim/interface.html:160 +#: netbox/dcim/models/device_components.py:792 netbox/dcim/ui/panels.py:506 msgid "WWN" msgstr "" -#: netbox/dcim/forms/filtersets.py:1653 +#: netbox/dcim/forms/filtersets.py:1653 netbox/dcim/ui/panels.py:482 #: netbox/virtualization/forms/filtersets.py:260 msgid "802.1Q mode" msgstr "" @@ -5594,17 +5435,17 @@ msgstr "" msgid "Channel width (MHz)" msgstr "" -#: netbox/dcim/forms/filtersets.py:1680 netbox/templates/dcim/interface.html:96 +#: netbox/dcim/forms/filtersets.py:1680 netbox/dcim/ui/panels.py:485 msgid "Transmit power (dBm)" msgstr "" #: netbox/dcim/forms/filtersets.py:1751 netbox/dcim/forms/filtersets.py:1795 -#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable.html:12 -#: netbox/templates/dcim/cable_trace.html:46 -#: netbox/templates/dcim/frontport.html:74 +#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/htmx/cable_edit.html:53 #: netbox/templates/dcim/inc/connection_endpoints.html:4 -#: netbox/templates/dcim/rearport.html:74 +#: netbox/templates/dcim/panels/connection.html:14 +#: netbox/templates/dcim/panels/connection.html:51 +#: netbox/templates/dcim/panels/interface_connection.html:13 #: netbox/templates/dcim/trace/cable.html:7 msgid "Cable" msgstr "" @@ -5803,54 +5644,42 @@ msgid "Rear port template" msgstr "" #: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "" #: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "" #: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "" #: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "" #: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "" #: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "" @@ -5901,12 +5730,10 @@ msgid "Rear port" msgstr "" #: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "" #: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "" @@ -5947,7 +5774,7 @@ msgid "" msgstr "" #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 +#: netbox/ipam/tables/fhrp.py:31 #: netbox/templates/dcim/virtualchassis_edit.html:59 #: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 msgid "Members" @@ -6129,197 +5956,197 @@ msgid "" "module type." msgstr "" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "" -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " "templates ({count})" msgstr "" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " "templates ({count})" msgstr "" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " "allow device bays." msgstr "" -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "" @@ -6448,10 +6275,10 @@ msgid "tagged VLANs" msgstr "" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/templates/ipam/vlan.html:77 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "" @@ -7529,11 +7356,11 @@ msgstr "" msgid "Disconnect Selected" msgstr "" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "" @@ -7578,6 +7405,8 @@ msgstr "" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "" @@ -7663,16 +7492,14 @@ msgid "Power outlets" msgstr "" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7705,18 +7532,17 @@ msgid "Device Site" msgstr "" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "" @@ -7740,11 +7566,10 @@ msgstr "" msgid "Allocated draw (W)" msgstr "" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 -#: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/views.py:690 netbox/ipam/views.py:791 +#: netbox/netbox/navigation/menu.py:168 netbox/netbox/navigation/menu.py:170 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" @@ -7754,8 +7579,8 @@ msgstr "" msgid "Primary MAC" msgstr "" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "" @@ -7765,7 +7590,7 @@ msgstr "" msgid "FHRP Groups" msgstr "" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -7774,7 +7599,6 @@ msgid "Tunnel" msgstr "" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "" @@ -7782,7 +7606,7 @@ msgstr "" msgid "VDCs" msgstr "" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "" @@ -7791,7 +7615,7 @@ msgstr "" msgid "Mappings" msgstr "" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "" @@ -7815,7 +7639,7 @@ msgstr "" msgid "Installed Asset Tag" msgstr "" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "" @@ -7832,7 +7656,6 @@ msgid "Module Status" msgstr "" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "" @@ -7850,7 +7673,7 @@ msgstr "" msgid "Device Types" msgstr "" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "" @@ -7873,8 +7696,8 @@ msgstr "" msgid "Device Count" msgstr "" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -7884,8 +7707,8 @@ msgstr "" msgid "Console Ports" msgstr "" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -7895,8 +7718,8 @@ msgstr "" msgid "Console Server Ports" msgstr "" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -7906,8 +7729,8 @@ msgstr "" msgid "Power Ports" msgstr "" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -7917,8 +7740,8 @@ msgstr "" msgid "Power Outlets" msgstr "" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -7927,8 +7750,8 @@ msgstr "" msgid "Front Ports" msgstr "" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -7938,16 +7761,16 @@ msgstr "" msgid "Rear Ports" msgstr "" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -7962,11 +7785,10 @@ msgid "Module Count" msgstr "" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "" @@ -7981,7 +7803,7 @@ msgid "Racks" msgstr "" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "" @@ -8029,85 +7851,123 @@ msgstr "" msgid "Test case must set peer_termination_type" msgstr "" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 +#: netbox/dcim/views.py:391 netbox/templates/tenancy/contactgroup.html:47 #: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 #: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 msgid "Application Services" msgstr "" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8115,41 +7975,69 @@ msgstr "" msgid "Config Context" msgstr "" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1095 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "" -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "" -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "" @@ -8799,7 +8687,7 @@ msgstr "" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -10158,6 +10046,7 @@ msgid "Please try reconfiguring the widget, or remove it from your dashboard." msgstr "" #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10848,14 +10737,6 @@ msgstr "" msgid "DNS Name" msgstr "" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "" @@ -11584,12 +11465,6 @@ msgstr "" msgid "Create Group" msgstr "" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "" - #: netbox/ipam/utils.py:30 msgid "1 IP available" msgstr "" @@ -12158,11 +12033,6 @@ msgstr "" msgid "Modules" msgstr "" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "" @@ -12176,12 +12046,11 @@ msgid "Device Components" msgstr "" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "" @@ -12301,7 +12170,6 @@ msgid "Circuit Terminations" msgstr "" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "" @@ -12317,18 +12185,11 @@ msgstr "" msgid "Circuit Groups" msgstr "" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "" @@ -12477,6 +12338,7 @@ msgstr "" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12495,8 +12357,9 @@ msgstr "" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -12508,8 +12371,9 @@ msgstr "" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -12774,17 +12638,23 @@ msgstr "" msgid "Copy" msgstr "" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" msgstr "" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "" @@ -13073,16 +12943,15 @@ msgid "Assigned Groups" msgstr "" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 #: netbox/templates/core/objectchange.html:130 #: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13157,55 +13026,21 @@ msgstr "" msgid "Community" msgstr "" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "" @@ -13215,13 +13050,14 @@ msgstr "" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "" @@ -13235,37 +13071,30 @@ msgstr "" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "" @@ -13273,31 +13102,10 @@ msgstr "" msgid "Add circuit" msgstr "" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "" - #: netbox/templates/core/configrevision.html:35 msgid "Configuration Data" msgstr "" @@ -13775,15 +13583,6 @@ msgstr "" msgid "Incomplete" msgstr "" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 #: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" @@ -13848,10 +13647,6 @@ msgstr "" msgid "Local Config Context Data" msgstr "" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -13877,34 +13672,6 @@ msgstr "" msgid "Add Device" msgstr "" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "" @@ -13930,6 +13697,8 @@ msgid "Path Status" msgstr "" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "" @@ -13938,8 +13707,6 @@ msgid "Path Endpoints" msgstr "" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "" @@ -13985,94 +13752,10 @@ msgstr "" msgid "Loading..." msgstr "" -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "" @@ -14081,6 +13764,64 @@ msgstr "" msgid "Add Module Type" msgstr "" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "" @@ -14100,7 +13841,7 @@ msgstr "" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "" @@ -14124,44 +13865,6 @@ msgstr "" msgid "Labels only" msgstr "" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "" @@ -14200,10 +13903,6 @@ msgstr "" msgid "Attachment" msgstr "" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14253,10 +13952,6 @@ msgid "" "chassis %(name)s?" msgstr "" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -15064,6 +14759,12 @@ msgstr "" msgid "Virtual IP Addresses" msgstr "" +#: netbox/templates/ipam/fhrpgroup.html:74 +#: netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "" + #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" msgstr "" @@ -15451,16 +15152,28 @@ msgstr "" msgid "PFS Group" msgstr "" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "" @@ -16829,10 +16542,6 @@ msgstr "" msgid "Assigned VLANs" msgstr "" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "" From b929e1aa1ba204c99be2054d19a71738817fe809 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 26 Mar 2026 12:13:28 -0400 Subject: [PATCH 16/41] Fixes #21747: Skip search caching when encountering an invalid schema during migrations (#21748) --- netbox/netbox/search/backends.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/netbox/netbox/search/backends.py b/netbox/netbox/search/backends.py index 12dfbdcff..661134c95 100644 --- a/netbox/netbox/search/backends.py +++ b/netbox/netbox/search/backends.py @@ -1,9 +1,11 @@ +import logging from collections import defaultdict import netaddr from django.conf import settings from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ImproperlyConfigured +from django.db import ProgrammingError from django.db.models import F, Q, Window, prefetch_related_objects from django.db.models.fields.related import ForeignKey from django.db.models.functions import window @@ -24,6 +26,8 @@ from . import FieldTypes, LookupTypes, get_indexer DEFAULT_LOOKUP_TYPE = LookupTypes.PARTIAL MAX_RESULTS = 1000 +logger = logging.getLogger(__name__) + class SearchBackend: """ @@ -63,7 +67,12 @@ class SearchBackend: """ Receiver for the post_save signal, responsible for caching object creation/changes. """ - self.cache(instance, remove_existing=not created) + try: + self.cache(instance, remove_existing=not created) + except ProgrammingError as e: + # The schema may be incomplete during migrations; skip caching. + logger.warning(f"Skipping search cache update due to schema error: {e}") + pass def removal_handler(self, sender, instance, **kwargs): """ From ea756b29e9409eef498c38aeff22aadfedc190ff Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Thu, 26 Mar 2026 09:16:31 -0700 Subject: [PATCH 17/41] #20923 - Convert tenancy to new UI layout (#21745) --- netbox/templates/tenancy/attrs/email.html | 1 + netbox/templates/tenancy/attrs/link.html | 1 + netbox/templates/tenancy/attrs/phone.html | 1 + netbox/templates/tenancy/contact.html | 99 -------------------- netbox/templates/tenancy/contactgroup.html | 56 +----------- netbox/templates/tenancy/contactrole.html | 41 --------- netbox/templates/tenancy/tenant.html | 39 +------- netbox/templates/tenancy/tenantgroup.html | 57 +----------- netbox/tenancy/ui/__init__.py | 0 netbox/tenancy/ui/panels.py | 19 ++++ netbox/tenancy/views.py | 100 +++++++++++++++++++++ 11 files changed, 129 insertions(+), 285 deletions(-) create mode 100644 netbox/templates/tenancy/attrs/email.html create mode 100644 netbox/templates/tenancy/attrs/link.html create mode 100644 netbox/templates/tenancy/attrs/phone.html create mode 100644 netbox/tenancy/ui/__init__.py create mode 100644 netbox/tenancy/ui/panels.py diff --git a/netbox/templates/tenancy/attrs/email.html b/netbox/templates/tenancy/attrs/email.html new file mode 100644 index 000000000..2ee254a64 --- /dev/null +++ b/netbox/templates/tenancy/attrs/email.html @@ -0,0 +1 @@ +{{ value }} diff --git a/netbox/templates/tenancy/attrs/link.html b/netbox/templates/tenancy/attrs/link.html new file mode 100644 index 000000000..30b750ba8 --- /dev/null +++ b/netbox/templates/tenancy/attrs/link.html @@ -0,0 +1 @@ +{{ value }} diff --git a/netbox/templates/tenancy/attrs/phone.html b/netbox/templates/tenancy/attrs/phone.html new file mode 100644 index 000000000..93bcde0c6 --- /dev/null +++ b/netbox/templates/tenancy/attrs/phone.html @@ -0,0 +1 @@ +{{ value }} diff --git a/netbox/templates/tenancy/contact.html b/netbox/templates/tenancy/contact.html index 790e08489..f15e1d050 100644 --- a/netbox/templates/tenancy/contact.html +++ b/netbox/templates/tenancy/contact.html @@ -1,100 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} - -{% block breadcrumbs %} - {{ block.super }} - {% if object.group %} - - {% endif %} -{% endblock breadcrumbs %} - -{% block content %} -
    -
    -
    -

    {% trans "Contact" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Groups" %} - {% if object.groups.all|length > 0 %} -
      - {% for group in object.groups.all %} -
    1. {{ group|linkify|placeholder }}
    2. - {% endfor %} -
    - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "Name" %}{{ object.name }}
    {% trans "Title" %}{{ object.title|placeholder }}
    {% trans "Phone" %} - {% if object.phone %} - {{ object.phone }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "Email" %} - {% if object.email %} - {{ object.email }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "Address" %}{{ object.address|linebreaksbr|placeholder }}
    {% trans "Link" %} - {% if object.link %} - {{ object.link }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    {% trans "Assignments" %}

    - {% htmx_table 'tenancy:contactassignment_list' contact_id=object.pk %} -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/tenancy/contactgroup.html b/netbox/templates/tenancy/contactgroup.html index bdcf675dd..20f0e6ef2 100644 --- a/netbox/templates/tenancy/contactgroup.html +++ b/netbox/templates/tenancy/contactgroup.html @@ -1,60 +1,8 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} {% block breadcrumbs %} {{ block.super }} - {% for contactgroup in object.get_ancestors %} - + {% for ancestor in object.get_ancestors %} + {% endfor %} {% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Contact Group" %}

    - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Parent" %}{{ object.parent|linkify|placeholder }}
    -
    - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    -

    - {% trans "Child Groups" %} - {% if perms.tenancy.add_contactgroup %} - - {% endif %} -

    - {% htmx_table 'tenancy:contactgroup_list' parent_id=object.pk %} -
    - {% plugin_full_width_page object %} -
    -{% endblock %} diff --git a/netbox/templates/tenancy/contactrole.html b/netbox/templates/tenancy/contactrole.html index 44e004d21..f15e1d050 100644 --- a/netbox/templates/tenancy/contactrole.html +++ b/netbox/templates/tenancy/contactrole.html @@ -1,42 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} - -{% block breadcrumbs %} - -{% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Contact Role" %}

    - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/tenancy/tenant.html b/netbox/templates/tenancy/tenant.html index a3a977697..09f401fa8 100644 --- a/netbox/templates/tenancy/tenant.html +++ b/netbox/templates/tenancy/tenant.html @@ -1,44 +1,11 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} {% block breadcrumbs %} {{ block.super }} {% if object.group %} + {% for group in object.group.get_ancestors %} + + {% endfor %} {% endif %} -{% endblock breadcrumbs %} - -{% block content %} -
    -
    -
    -

    {% trans "Tenant" %}

    - - - - - - - - - -
    {% trans "Group" %}{{ object.group|linkify|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    {% endblock %} diff --git a/netbox/templates/tenancy/tenantgroup.html b/netbox/templates/tenancy/tenantgroup.html index 5ca3ba554..f4e32b697 100644 --- a/netbox/templates/tenancy/tenantgroup.html +++ b/netbox/templates/tenancy/tenantgroup.html @@ -1,13 +1,10 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} {% load i18n %} {% block breadcrumbs %} {{ block.super }} - {% for tenantgroup in object.get_ancestors %} - + {% for ancestor in object.get_ancestors %} + {% endfor %} {% endblock %} @@ -18,53 +15,3 @@ {% endif %} {% endblock extra_controls %} - -{% block content %} -
    -
    -
    -

    {% trans "Tenant Group" %}

    - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Parent" %}{{ object.parent|linkify|placeholder }}
    -
    - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    - {% trans "Child Groups" %} - {% if perms.tenancy.add_tenantgroup %} - - {% endif %} -

    - {% htmx_table 'tenancy:tenantgroup_list' parent_id=object.pk %} -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/tenancy/ui/__init__.py b/netbox/tenancy/ui/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/netbox/tenancy/ui/panels.py b/netbox/tenancy/ui/panels.py new file mode 100644 index 000000000..75d512385 --- /dev/null +++ b/netbox/tenancy/ui/panels.py @@ -0,0 +1,19 @@ +from django.utils.translation import gettext_lazy as _ + +from netbox.ui import attrs, panels + + +class TenantPanel(panels.ObjectAttributesPanel): + group = attrs.RelatedObjectAttr('group', linkify=True) + description = attrs.TextAttr('description') + + +class ContactPanel(panels.ObjectAttributesPanel): + groups = attrs.RelatedObjectListAttr('groups', linkify=True, label=_('Groups')) + name = attrs.TextAttr('name') + title = attrs.TextAttr('title') + phone = attrs.TemplatedAttr('phone', label=_('Phone'), template_name='tenancy/attrs/phone.html') + email = attrs.TemplatedAttr('email', label=_('Email'), template_name='tenancy/attrs/email.html') + address = attrs.AddressAttr('address', map_url=False) + link = attrs.TemplatedAttr('link', label=_('Link'), template_name='tenancy/attrs/link.html') + description = attrs.TextAttr('description') diff --git a/netbox/tenancy/views.py b/netbox/tenancy/views.py index 3e427a3ce..26b0ac5ab 100644 --- a/netbox/tenancy/views.py +++ b/netbox/tenancy/views.py @@ -1,13 +1,24 @@ from django.contrib.contenttypes.models import ContentType from django.shortcuts import get_object_or_404 +from django.utils.translation import gettext_lazy as _ +from extras.ui.panels import CustomFieldsPanel, TagsPanel from netbox.object_actions import BulkDelete, BulkEdit, BulkExport, BulkImport +from netbox.ui import actions, layout +from netbox.ui.panels import ( + CommentsPanel, + NestedGroupObjectPanel, + ObjectsTablePanel, + OrganizationalObjectPanel, + RelatedObjectsPanel, +) from netbox.views import generic from utilities.query import count_related from utilities.views import GetRelatedModelsMixin, register_model_view from . import filtersets, forms, tables from .models import * +from .ui import panels # # Tenant groups @@ -31,6 +42,31 @@ class TenantGroupListView(generic.ObjectListView): @register_model_view(TenantGroup) class TenantGroupView(GetRelatedModelsMixin, generic.ObjectView): queryset = TenantGroup.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + NestedGroupObjectPanel(), + TagsPanel(), + CommentsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CustomFieldsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + 'tenancy.tenantgroup', + filters={'parent_id': lambda ctx: ctx['object'].pk}, + title=_('Child Groups'), + actions=[ + actions.AddObject( + 'tenancy.tenantgroup', + url_params={'parent': lambda ctx: ctx['object'].pk}, + label=_('Add Tenant Group'), + ), + ], + ), + ], + ) def get_extra_context(self, request, instance): groups = instance.get_descendants(include_self=True) @@ -106,6 +142,17 @@ class TenantListView(generic.ObjectListView): @register_model_view(Tenant) class TenantView(GetRelatedModelsMixin, generic.ObjectView): queryset = Tenant.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.TenantPanel(), + CustomFieldsPanel(), + TagsPanel(), + CommentsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + ], + ) def get_extra_context(self, request, instance): return { @@ -173,6 +220,31 @@ class ContactGroupListView(generic.ObjectListView): @register_model_view(ContactGroup) class ContactGroupView(GetRelatedModelsMixin, generic.ObjectView): queryset = ContactGroup.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + NestedGroupObjectPanel(), + TagsPanel(), + CommentsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CustomFieldsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + 'tenancy.contactgroup', + filters={'parent_id': lambda ctx: ctx['object'].pk}, + title=_('Child Groups'), + actions=[ + actions.AddObject( + 'tenancy.contactgroup', + url_params={'parent': lambda ctx: ctx['object'].pk}, + label=_('Add Contact Group'), + ), + ], + ), + ], + ) def get_extra_context(self, request, instance): groups = instance.get_descendants(include_self=True) @@ -254,6 +326,17 @@ class ContactRoleListView(generic.ObjectListView): @register_model_view(ContactRole) class ContactRoleView(GetRelatedModelsMixin, generic.ObjectView): queryset = ContactRole.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + OrganizationalObjectPanel(), + TagsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CommentsPanel(), + CustomFieldsPanel(), + ], + ) def get_extra_context(self, request, instance): return { @@ -317,6 +400,23 @@ class ContactListView(generic.ObjectListView): @register_model_view(Contact) class ContactView(generic.ObjectView): queryset = Contact.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ContactPanel(), + TagsPanel(), + ], + right_panels=[ + CommentsPanel(), + CustomFieldsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + 'tenancy.contactassignment', + filters={'contact_id': lambda ctx: ctx['object'].pk}, + title=_('Assignments'), + ), + ], + ) @register_model_view(Contact, 'add', detail=False) From 99e9d9678767601d2a718aab5e7c021d9ce72f5b Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Thu, 26 Mar 2026 13:55:12 -0700 Subject: [PATCH 18/41] #20923: Migrate IPAM views to declarative layouts (#21695) * #20923: Migrate IPAM views to declarative layouts * #20923: Migrate IPAM views to declarative layouts * fix VRF view * fix Route Target view * fix addressing details modal * fix add prefix button * fix add aggregate button * fix add VLAN button * fix breadcrumb on Application Service * fix breadcrumb on ANS * move attrs to separate file * review feedback * review feedback * review feedback * review feedback --- netbox/ipam/models/ip.py | 10 + netbox/ipam/ui/attrs.py | 24 ++ netbox/ipam/ui/panels.py | 222 ++++++++++- netbox/ipam/views.py | 350 +++++++++++++++--- netbox/templates/ipam/aggregate.html | 61 --- .../ipam/aggregate/attrs/utilization.html | 2 + netbox/templates/ipam/asn.html | 52 --- netbox/templates/ipam/asnrange.html | 56 --- netbox/templates/ipam/attrs/vrf.html | 2 + netbox/templates/ipam/fhrpgroup.html | 75 ---- netbox/templates/ipam/ipaddress.html | 130 +------ .../ipam/ipaddress/attrs/assigned_object.html | 2 + .../ipam/ipaddress/attrs/nat_inside.html | 2 + .../ipam/ipaddress/attrs/nat_outside.html | 2 + netbox/templates/ipam/iprange.html | 97 ----- .../ipam/iprange/attrs/utilization.html | 6 + .../ipam/panels/prefix_addressing.html | 62 ++++ netbox/templates/ipam/prefix.html | 201 ---------- .../ipam/prefix/attrs/aggregate.html | 2 + netbox/templates/ipam/prefix/base.html | 37 ++ netbox/templates/ipam/rir.html | 40 -- netbox/templates/ipam/role.html | 40 -- netbox/templates/ipam/routetarget.html | 67 ---- netbox/templates/ipam/service.html | 60 +-- .../ipam/service/attrs/ip_addresses.html | 2 + netbox/templates/ipam/servicetemplate.html | 45 --- netbox/templates/ipam/vlan.html | 128 ------- netbox/templates/ipam/vlangroup.html | 53 +-- .../ipam/vlangroup/attrs/vid_ranges.html | 1 + .../templates/ipam/vlantranslationpolicy.html | 64 ---- .../templates/ipam/vlantranslationrule.html | 44 --- netbox/templates/ipam/vrf.html | 60 --- 32 files changed, 683 insertions(+), 1316 deletions(-) create mode 100644 netbox/ipam/ui/attrs.py create mode 100644 netbox/templates/ipam/aggregate/attrs/utilization.html create mode 100644 netbox/templates/ipam/attrs/vrf.html create mode 100644 netbox/templates/ipam/ipaddress/attrs/assigned_object.html create mode 100644 netbox/templates/ipam/ipaddress/attrs/nat_inside.html create mode 100644 netbox/templates/ipam/ipaddress/attrs/nat_outside.html create mode 100644 netbox/templates/ipam/iprange/attrs/utilization.html create mode 100644 netbox/templates/ipam/panels/prefix_addressing.html create mode 100644 netbox/templates/ipam/prefix/attrs/aggregate.html create mode 100644 netbox/templates/ipam/service/attrs/ip_addresses.html create mode 100644 netbox/templates/ipam/vlangroup/attrs/vid_ranges.html diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index 439348152..6d629d89c 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -367,6 +367,16 @@ class Prefix(ContactsMixin, GetAvailablePrefixesMixin, CachedScopeMixin, Primary def get_status_color(self): return PrefixStatusChoices.colors.get(self.status) + @cached_property + def aggregate(self): + """ + Return the containing Aggregate for this Prefix, if any. + """ + try: + return Aggregate.objects.get(prefix__net_contains_or_equals=str(self.prefix)) + except Aggregate.DoesNotExist: + return None + def get_parents(self, include_self=False): """ Return all containing Prefixes in the hierarchy. diff --git a/netbox/ipam/ui/attrs.py b/netbox/ipam/ui/attrs.py new file mode 100644 index 000000000..cd5cba0f2 --- /dev/null +++ b/netbox/ipam/ui/attrs.py @@ -0,0 +1,24 @@ +from django.template.loader import render_to_string + +from netbox.ui import attrs + + +class VRFDisplayAttr(attrs.ObjectAttribute): + """ + Renders a VRF reference, displaying 'Global' when no VRF is assigned. Optionally includes + the route distinguisher (RD). + """ + template_name = 'ipam/attrs/vrf.html' + + def __init__(self, *args, show_rd=False, **kwargs): + super().__init__(*args, **kwargs) + self.show_rd = show_rd + + def render(self, obj, context): + value = self.get_value(obj) + return render_to_string(self.template_name, { + **self.get_context(obj, context), + 'name': context['name'], + 'value': value, + 'show_rd': self.show_rd, + }) diff --git a/netbox/ipam/ui/panels.py b/netbox/ipam/ui/panels.py index a2148057a..c47791cc5 100644 --- a/netbox/ipam/ui/panels.py +++ b/netbox/ipam/ui/panels.py @@ -2,14 +2,15 @@ from django.contrib.contenttypes.models import ContentType from django.urls import reverse from django.utils.translation import gettext_lazy as _ -from netbox.ui import actions, panels +from netbox.ui import actions, attrs, panels + +from .attrs import VRFDisplayAttr class FHRPGroupAssignmentsPanel(panels.ObjectPanel): """ A panel which lists all FHRP group assignments for a given object. """ - template_name = 'ipam/panels/fhrp_groups.html' title = _('FHRP Groups') actions = [ @@ -35,3 +36,220 @@ class FHRPGroupAssignmentsPanel(panels.ObjectPanel): label=_('Assign Group'), ), ] + + +class VRFPanel(panels.ObjectAttributesPanel): + rd = attrs.TextAttr('rd', label=_('Route Distinguisher'), style='font-monospace') + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + enforce_unique = attrs.BooleanAttr('enforce_unique', label=_('Unique IP Space')) + description = attrs.TextAttr('description') + + +class RouteTargetPanel(panels.ObjectAttributesPanel): + name = attrs.TextAttr('name', style='font-monospace') + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + description = attrs.TextAttr('description') + + +class RIRPanel(panels.OrganizationalObjectPanel): + is_private = attrs.BooleanAttr('is_private', label=_('Private')) + + +class ASNRangePanel(panels.ObjectAttributesPanel): + name = attrs.TextAttr('name') + rir = attrs.RelatedObjectAttr('rir', linkify=True, label=_('RIR')) + range = attrs.TextAttr('range_as_string_with_asdot', label=_('Range')) + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + description = attrs.TextAttr('description') + + +class ASNPanel(panels.ObjectAttributesPanel): + asn = attrs.TextAttr('asn_with_asdot', label=_('AS Number')) + rir = attrs.RelatedObjectAttr('rir', linkify=True, label=_('RIR')) + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + description = attrs.TextAttr('description') + + +class AggregatePanel(panels.ObjectAttributesPanel): + family = attrs.TextAttr('family', format_string='IPv{}', label=_('Family')) + rir = attrs.RelatedObjectAttr('rir', linkify=True, label=_('RIR')) + utilization = attrs.TemplatedAttr( + 'prefix', + template_name='ipam/aggregate/attrs/utilization.html', + label=_('Utilization'), + ) + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + date_added = attrs.DateTimeAttr('date_added', spec='date', label=_('Date Added')) + description = attrs.TextAttr('description') + + +class RolePanel(panels.OrganizationalObjectPanel): + weight = attrs.NumericAttr('weight') + + +class IPRangePanel(panels.ObjectAttributesPanel): + family = attrs.TextAttr('family', format_string='IPv{}', label=_('Family')) + start_address = attrs.TextAttr('start_address', label=_('Starting Address')) + end_address = attrs.TextAttr('end_address', label=_('Ending Address')) + size = attrs.NumericAttr('size') + mark_populated = attrs.BooleanAttr('mark_populated', label=_('Marked Populated')) + mark_utilized = attrs.BooleanAttr('mark_utilized', label=_('Marked Utilized')) + utilization = attrs.TemplatedAttr( + 'utilization', + template_name='ipam/iprange/attrs/utilization.html', + label=_('Utilization'), + ) + vrf = VRFDisplayAttr('vrf', label=_('VRF'), show_rd=True) + role = attrs.RelatedObjectAttr('role', linkify=True) + status = attrs.ChoiceAttr('status') + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + description = attrs.TextAttr('description') + + +class IPAddressPanel(panels.ObjectAttributesPanel): + family = attrs.TextAttr('family', format_string='IPv{}', label=_('Family')) + vrf = VRFDisplayAttr('vrf', label=_('VRF')) + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + status = attrs.ChoiceAttr('status') + role = attrs.ChoiceAttr('role') + dns_name = attrs.TextAttr('dns_name', label=_('DNS Name')) + description = attrs.TextAttr('description') + assigned_object = attrs.RelatedObjectAttr( + 'assigned_object', + linkify=True, + grouped_by='parent_object', + label=_('Assignment'), + ) + nat_inside = attrs.TemplatedAttr( + 'nat_inside', + template_name='ipam/ipaddress/attrs/nat_inside.html', + label=_('NAT (inside)'), + ) + nat_outside = attrs.TemplatedAttr( + 'nat_outside', + template_name='ipam/ipaddress/attrs/nat_outside.html', + label=_('NAT (outside)'), + ) + is_primary_ip = attrs.BooleanAttr('is_primary_ip', label=_('Primary IP')) + is_oob_ip = attrs.BooleanAttr('is_oob_ip', label=_('OOB IP')) + + +class PrefixPanel(panels.ObjectAttributesPanel): + family = attrs.TextAttr('family', format_string='IPv{}', label=_('Family')) + vrf = VRFDisplayAttr('vrf', label=_('VRF')) + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + aggregate = attrs.TemplatedAttr( + 'aggregate', + template_name='ipam/prefix/attrs/aggregate.html', + label=_('Aggregate'), + ) + scope = attrs.GenericForeignKeyAttr('scope', linkify=True) + vlan = attrs.RelatedObjectAttr('vlan', linkify=True, label=_('VLAN'), grouped_by='group') + status = attrs.ChoiceAttr('status') + role = attrs.RelatedObjectAttr('role', linkify=True) + description = attrs.TextAttr('description') + is_pool = attrs.BooleanAttr('is_pool', label=_('Is a pool')) + + +class VLANGroupPanel(panels.ObjectAttributesPanel): + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + scope = attrs.GenericForeignKeyAttr('scope', linkify=True) + vid_ranges = attrs.TemplatedAttr( + 'vid_ranges_items', + template_name='ipam/vlangroup/attrs/vid_ranges.html', + label=_('VLAN IDs'), + ) + utilization = attrs.UtilizationAttr('utilization') + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + + +class VLANTranslationPolicyPanel(panels.ObjectAttributesPanel): + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + + +class VLANTranslationRulePanel(panels.ObjectAttributesPanel): + policy = attrs.RelatedObjectAttr('policy', linkify=True) + local_vid = attrs.NumericAttr('local_vid', label=_('Local VID')) + remote_vid = attrs.NumericAttr('remote_vid', label=_('Remote VID')) + description = attrs.TextAttr('description') + + +class FHRPGroupPanel(panels.ObjectAttributesPanel): + protocol = attrs.ChoiceAttr('protocol') + group_id = attrs.NumericAttr('group_id', label=_('Group ID')) + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + member_count = attrs.NumericAttr('member_count', label=_('Members')) + + +class FHRPGroupAuthPanel(panels.ObjectAttributesPanel): + title = _('Authentication') + + auth_type = attrs.ChoiceAttr('auth_type', label=_('Authentication Type')) + auth_key = attrs.TextAttr('auth_key', label=_('Authentication Key')) + + +class VLANPanel(panels.ObjectAttributesPanel): + region = attrs.NestedObjectAttr('site.region', linkify=True, label=_('Region')) + site = attrs.RelatedObjectAttr('site', linkify=True) + group = attrs.RelatedObjectAttr('group', linkify=True) + vid = attrs.NumericAttr('vid', label=_('VLAN ID')) + name = attrs.TextAttr('name') + tenant = attrs.RelatedObjectAttr('tenant', linkify=True, grouped_by='group') + status = attrs.ChoiceAttr('status') + role = attrs.RelatedObjectAttr('role', linkify=True) + description = attrs.TextAttr('description') + qinq_role = attrs.ChoiceAttr('qinq_role', label=_('Q-in-Q Role')) + qinq_svlan = attrs.RelatedObjectAttr('qinq_svlan', linkify=True, label=_('Q-in-Q SVLAN')) + l2vpn = attrs.RelatedObjectAttr('l2vpn_termination.l2vpn', linkify=True, label=_('L2VPN')) + + +class VLANCustomerVLANsPanel(panels.ObjectsTablePanel): + """ + A panel listing customer VLANs (C-VLANs) for an S-VLAN. Only renders when the VLAN has Q-in-Q + role 'svlan'. + """ + def __init__(self): + super().__init__( + 'ipam.vlan', + filters={'qinq_svlan_id': lambda ctx: ctx['object'].pk}, + title=_('Customer VLANs'), + actions=[ + actions.AddObject( + 'ipam.vlan', + url_params={ + 'qinq_role': 'cvlan', + 'qinq_svlan': lambda ctx: ctx['object'].pk, + }, + label=_('Add a VLAN'), + ), + ], + ) + + def render(self, context): + obj = context.get('object') + if not obj or obj.qinq_role != 'svlan': + return '' + return super().render(context) + + +class ServiceTemplatePanel(panels.ObjectAttributesPanel): + name = attrs.TextAttr('name') + protocol = attrs.ChoiceAttr('protocol') + ports = attrs.TextAttr('port_list', label=_('Ports')) + description = attrs.TextAttr('description') + + +class ServicePanel(panels.ObjectAttributesPanel): + name = attrs.TextAttr('name') + parent = attrs.RelatedObjectAttr('parent', linkify=True) + protocol = attrs.ChoiceAttr('protocol') + ports = attrs.TextAttr('port_list', label=_('Ports')) + ip_addresses = attrs.TemplatedAttr( + 'ipaddresses', + template_name='ipam/service/attrs/ip_addresses.html', + label=_('IP Addresses'), + ) + description = attrs.TextAttr('description') diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index cbea4f318..44cba22b2 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -9,8 +9,16 @@ from circuits.models import Provider from dcim.filtersets import InterfaceFilterSet from dcim.forms import InterfaceFilterForm from dcim.models import Device, Interface, Site -from ipam.tables import VLANTranslationRuleTable +from extras.ui.panels import CustomFieldsPanel, TagsPanel from netbox.object_actions import AddObject, BulkDelete, BulkEdit, BulkExport, BulkImport +from netbox.ui import actions, layout +from netbox.ui.panels import ( + CommentsPanel, + ContextTablePanel, + ObjectsTablePanel, + RelatedObjectsPanel, + TemplatePanel, +) from netbox.views import generic from utilities.query import count_related from utilities.tables import get_table_ordering @@ -23,6 +31,7 @@ from . import filtersets, forms, tables from .choices import PrefixStatusChoices from .constants import * from .models import * +from .ui import panels from .utils import add_available_vlans, add_requested_prefixes, annotate_ip_space # @@ -41,6 +50,27 @@ class VRFListView(generic.ObjectListView): @register_model_view(VRF) class VRFView(GetRelatedModelsMixin, generic.ObjectView): queryset = VRF.objects.all() + layout = layout.Layout( + layout.Row( + layout.Column( + panels.VRFPanel(), + TagsPanel(), + ), + layout.Column( + RelatedObjectsPanel(), + CustomFieldsPanel(), + CommentsPanel(), + ), + ), + layout.Row( + layout.Column( + ContextTablePanel('import_targets_table', title=_('Import route targets')), + ), + layout.Column( + ContextTablePanel('export_targets_table', title=_('Export route targets')), + ), + ), + ) def get_extra_context(self, request, instance): import_targets_table = tables.RouteTargetTable( @@ -134,6 +164,50 @@ class RouteTargetListView(generic.ObjectListView): @register_model_view(RouteTarget) class RouteTargetView(generic.ObjectView): queryset = RouteTarget.objects.all() + layout = layout.Layout( + layout.Row( + layout.Column( + panels.RouteTargetPanel(), + TagsPanel(), + ), + layout.Column( + CustomFieldsPanel(), + CommentsPanel(), + ), + ), + layout.Row( + layout.Column( + ObjectsTablePanel( + 'ipam.vrf', + filters={'import_target_id': lambda ctx: ctx['object'].pk}, + title=_('Importing VRFs'), + ), + ), + layout.Column( + ObjectsTablePanel( + 'ipam.vrf', + filters={'export_target_id': lambda ctx: ctx['object'].pk}, + title=_('Exporting VRFs'), + ), + ), + ), + layout.Row( + layout.Column( + ObjectsTablePanel( + 'vpn.l2vpn', + filters={'import_target_id': lambda ctx: ctx['object'].pk}, + title=_('Importing L2VPNs'), + ), + ), + layout.Column( + ObjectsTablePanel( + 'vpn.l2vpn', + filters={'export_target_id': lambda ctx: ctx['object'].pk}, + title=_('Exporting L2VPNs'), + ), + ), + ), + ) @register_model_view(RouteTarget, 'add', detail=False) @@ -192,6 +266,17 @@ class RIRListView(generic.ObjectListView): @register_model_view(RIR) class RIRView(GetRelatedModelsMixin, generic.ObjectView): queryset = RIR.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.RIRPanel(), + TagsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CommentsPanel(), + CustomFieldsPanel(), + ], + ) def get_extra_context(self, request, instance): return { @@ -257,6 +342,16 @@ class ASNRangeListView(generic.ObjectListView): @register_model_view(ASNRange) class ASNRangeView(generic.ObjectView): queryset = ASNRange.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ASNRangePanel(), + TagsPanel(), + ], + right_panels=[ + CommentsPanel(), + CustomFieldsPanel(), + ], + ) @register_model_view(ASNRange, 'asns') @@ -337,6 +432,17 @@ class ASNListView(generic.ObjectListView): @register_model_view(ASN) class ASNView(GetRelatedModelsMixin, generic.ObjectView): queryset = ASN.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ASNPanel(), + TagsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CustomFieldsPanel(), + CommentsPanel(), + ], + ) def get_extra_context(self, request, instance): return { @@ -412,6 +518,16 @@ class AggregateListView(generic.ObjectListView): @register_model_view(Aggregate) class AggregateView(generic.ObjectView): queryset = Aggregate.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.AggregatePanel(), + ], + right_panels=[ + CustomFieldsPanel(), + TagsPanel(), + CommentsPanel(), + ], + ) @register_model_view(Aggregate, 'prefixes') @@ -506,6 +622,17 @@ class RoleListView(generic.ObjectListView): @register_model_view(Role) class RoleView(GetRelatedModelsMixin, generic.ObjectView): queryset = Role.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.RolePanel(), + TagsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CommentsPanel(), + CustomFieldsPanel(), + ], + ) def get_extra_context(self, request, instance): return { @@ -569,15 +696,23 @@ class PrefixListView(generic.ObjectListView): @register_model_view(Prefix) class PrefixView(generic.ObjectView): queryset = Prefix.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.PrefixPanel(), + ], + right_panels=[ + TemplatePanel('ipam/panels/prefix_addressing.html'), + CustomFieldsPanel(), + TagsPanel(), + CommentsPanel(), + ], + bottom_panels=[ + ContextTablePanel('duplicate_prefix_table', title=_('Duplicate prefixes')), + ContextTablePanel('parent_prefix_table', title=_('Parent prefixes')), + ], + ) def get_extra_context(self, request, instance): - try: - aggregate = Aggregate.objects.restrict(request.user, 'view').get( - prefix__net_contains_or_equals=str(instance.prefix) - ) - except Aggregate.DoesNotExist: - aggregate = None - # Parent prefixes table parent_prefixes = Prefix.objects.restrict(request.user, 'view').filter( Q(vrf=instance.vrf) | Q(vrf__isnull=True, status=PrefixStatusChoices.STATUS_CONTAINER) @@ -608,11 +743,12 @@ class PrefixView(generic.ObjectView): ) duplicate_prefix_table.configure(request) - return { - 'aggregate': aggregate, + context = { 'parent_prefix_table': parent_prefix_table, - 'duplicate_prefix_table': duplicate_prefix_table, } + if duplicate_prefixes.exists(): + context['duplicate_prefix_table'] = duplicate_prefix_table + return context @register_model_view(Prefix, 'prefixes') @@ -756,6 +892,19 @@ class IPRangeListView(generic.ObjectListView): @register_model_view(IPRange) class IPRangeView(generic.ObjectView): queryset = IPRange.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.IPRangePanel(), + ], + right_panels=[ + TagsPanel(), + CustomFieldsPanel(), + CommentsPanel(), + ], + bottom_panels=[ + ContextTablePanel('parent_prefixes_table', title=_('Parent prefixes')), + ], + ) def get_extra_context(self, request, instance): @@ -853,6 +1002,23 @@ class IPAddressListView(generic.ObjectListView): @register_model_view(IPAddress) class IPAddressView(generic.ObjectView): queryset = IPAddress.objects.prefetch_related('vrf__tenant', 'tenant') + layout = layout.SimpleLayout( + left_panels=[ + panels.IPAddressPanel(), + TagsPanel(), + CustomFieldsPanel(), + CommentsPanel(), + ], + right_panels=[ + ContextTablePanel('parent_prefixes_table', title=_('Parent prefixes')), + ContextTablePanel('duplicate_ips_table', title=_('Duplicate IPs')), + ObjectsTablePanel( + 'ipam.service', + filters={'ip_address_id': lambda ctx: ctx['object'].pk}, + title=_('Application services'), + ), + ], + ) def get_extra_context(self, request, instance): # Parent prefixes table @@ -885,10 +1051,12 @@ class IPAddressView(generic.ObjectView): duplicate_ips_table = tables.IPAddressTable(duplicate_ips[:10], orderable=False) duplicate_ips_table.configure(request) - return { + context = { 'parent_prefixes_table': parent_prefixes_table, - 'duplicate_ips_table': duplicate_ips_table, } + if duplicate_ips.exists(): + context['duplicate_ips_table'] = duplicate_ips_table + return context @register_model_view(IPAddress, 'add', detail=False) @@ -1038,6 +1206,17 @@ class VLANGroupListView(generic.ObjectListView): @register_model_view(VLANGroup) class VLANGroupView(GetRelatedModelsMixin, generic.ObjectView): queryset = VLANGroup.objects.annotate_utilization() + layout = layout.SimpleLayout( + left_panels=[ + panels.VLANGroupPanel(), + TagsPanel(), + ], + right_panels=[ + RelatedObjectsPanel(), + CommentsPanel(), + CustomFieldsPanel(), + ], + ) def get_extra_context(self, request, instance): return { @@ -1125,19 +1304,32 @@ class VLANTranslationPolicyListView(generic.ObjectListView): @register_model_view(VLANTranslationPolicy) -class VLANTranslationPolicyView(GetRelatedModelsMixin, generic.ObjectView): +class VLANTranslationPolicyView(generic.ObjectView): queryset = VLANTranslationPolicy.objects.all() - - def get_extra_context(self, request, instance): - vlan_translation_table = VLANTranslationRuleTable( - data=instance.rules.all(), - orderable=False - ) - vlan_translation_table.configure(request) - - return { - 'vlan_translation_table': vlan_translation_table, - } + layout = layout.SimpleLayout( + left_panels=[ + panels.VLANTranslationPolicyPanel(), + ], + right_panels=[ + TagsPanel(), + CustomFieldsPanel(), + CommentsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + 'ipam.vlantranslationrule', + filters={'policy_id': lambda ctx: ctx['object'].pk}, + title=_('VLAN translation rules'), + actions=[ + actions.AddObject( + 'ipam.vlantranslationrule', + url_params={'policy': lambda ctx: ctx['object'].pk}, + label=_('Add Rule'), + ), + ], + ), + ], + ) @register_model_view(VLANTranslationPolicy, 'add', detail=False) @@ -1193,13 +1385,17 @@ class VLANTranslationRuleListView(generic.ObjectListView): @register_model_view(VLANTranslationRule) -class VLANTranslationRuleView(GetRelatedModelsMixin, generic.ObjectView): +class VLANTranslationRuleView(generic.ObjectView): queryset = VLANTranslationRule.objects.all() - - def get_extra_context(self, request, instance): - return { - 'related_models': self.get_related_models(request, instance), - } + layout = layout.SimpleLayout( + left_panels=[ + panels.VLANTranslationRulePanel(), + ], + right_panels=[ + TagsPanel(), + CustomFieldsPanel(), + ], + ) @register_model_view(VLANTranslationRule, 'add', detail=False) @@ -1251,7 +1447,36 @@ class FHRPGroupListView(generic.ObjectListView): @register_model_view(FHRPGroup) class FHRPGroupView(GetRelatedModelsMixin, generic.ObjectView): - queryset = FHRPGroup.objects.all() + queryset = FHRPGroup.objects.annotate( + member_count=count_related(FHRPGroupAssignment, 'group') + ) + layout = layout.SimpleLayout( + left_panels=[ + panels.FHRPGroupPanel(), + TagsPanel(), + CommentsPanel(), + ], + right_panels=[ + panels.FHRPGroupAuthPanel(), + RelatedObjectsPanel(), + CustomFieldsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + 'ipam.ipaddress', + filters={'fhrpgroup_id': lambda ctx: ctx['object'].pk}, + title=_('Virtual IP addresses'), + actions=[ + actions.AddObject( + 'ipam.ipaddress', + url_params={'fhrpgroup': lambda ctx: ctx['object'].pk}, + label=_('Add IP Address'), + ), + ], + ), + ContextTablePanel('members_table', title=_('Members')), + ], + ) def get_extra_context(self, request, instance): # Get assigned interfaces @@ -1276,7 +1501,6 @@ class FHRPGroupView(GetRelatedModelsMixin, generic.ObjectView): ), ), 'members_table': members_table, - 'member_count': FHRPGroupAssignment.objects.filter(group=instance).count(), } @@ -1379,17 +1603,35 @@ class VLANListView(generic.ObjectListView): @register_model_view(VLAN) class VLANView(generic.ObjectView): queryset = VLAN.objects.all() - - def get_extra_context(self, request, instance): - prefixes = Prefix.objects.restrict(request.user, 'view').filter(vlan=instance).prefetch_related( - 'vrf', 'scope', 'role', 'tenant' - ) - prefix_table = tables.PrefixTable(list(prefixes), exclude=('vlan', 'utilization'), orderable=False) - prefix_table.configure(request) - - return { - 'prefix_table': prefix_table, - } + layout = layout.SimpleLayout( + left_panels=[ + panels.VLANPanel(), + ], + right_panels=[ + CustomFieldsPanel(), + TagsPanel(), + CommentsPanel(), + ], + bottom_panels=[ + ObjectsTablePanel( + 'ipam.prefix', + filters={'vlan_id': lambda ctx: ctx['object'].pk}, + title=_('Prefixes'), + actions=[ + actions.AddObject( + 'ipam.prefix', + url_params={ + 'tenant': lambda ctx: ctx['object'].tenant.pk if ctx['object'].tenant else None, + 'site': lambda ctx: ctx['object'].site.pk if ctx['object'].site else None, + 'vlan': lambda ctx: ctx['object'].pk, + }, + label=_('Add a Prefix'), + ), + ], + ), + panels.VLANCustomerVLANsPanel(), + ], + ) @register_model_view(VLAN, 'interfaces') @@ -1483,6 +1725,16 @@ class ServiceTemplateListView(generic.ObjectListView): @register_model_view(ServiceTemplate) class ServiceTemplateView(generic.ObjectView): queryset = ServiceTemplate.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ServiceTemplatePanel(), + ], + right_panels=[ + CustomFieldsPanel(), + TagsPanel(), + CommentsPanel(), + ], + ) @register_model_view(ServiceTemplate, 'add', detail=False) @@ -1539,6 +1791,16 @@ class ServiceListView(generic.ObjectListView): @register_model_view(Service) class ServiceView(generic.ObjectView): queryset = Service.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ServicePanel(), + ], + right_panels=[ + CustomFieldsPanel(), + TagsPanel(), + CommentsPanel(), + ], + ) def get_extra_context(self, request, instance): context = {} diff --git a/netbox/templates/ipam/aggregate.html b/netbox/templates/ipam/aggregate.html index 54452f1f3..c02c5f1a3 100644 --- a/netbox/templates/ipam/aggregate.html +++ b/netbox/templates/ipam/aggregate.html @@ -1,62 +1 @@ {% extends 'ipam/aggregate/base.html' %} -{% load buttons %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Aggregate" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Family" %}IPv{{ object.family }}
    {% trans "RIR" %} - {{ object.rir }} -
    {% trans "Utilization" %} - {% utilization_graph object.get_utilization %} -
    {% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
    {% trans "Date Added" %}{{ object.date_added|isodate|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/ipam/aggregate/attrs/utilization.html b/netbox/templates/ipam/aggregate/attrs/utilization.html new file mode 100644 index 000000000..f105ba59c --- /dev/null +++ b/netbox/templates/ipam/aggregate/attrs/utilization.html @@ -0,0 +1,2 @@ +{% load helpers %} +{% utilization_graph object.get_utilization %} diff --git a/netbox/templates/ipam/asn.html b/netbox/templates/ipam/asn.html index 3a54e453b..f10cf5243 100644 --- a/netbox/templates/ipam/asn.html +++ b/netbox/templates/ipam/asn.html @@ -1,8 +1,4 @@ {% extends 'generic/object.html' %} -{% load buttons %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} {% load i18n %} {% block breadcrumbs %} @@ -12,51 +8,3 @@ {% endif %} {% endblock breadcrumbs %} - -{% block content %} -
    -
    -
    -

    {% trans "ASN" %}

    - - - - - - - - - - - - - - - - - -
    {% trans "AS Number" %}{{ object.asn_with_asdot }}
    {% trans "RIR" %} - {{ object.rir }} -
    {% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% plugin_left_page object %} - {% include 'inc/panels/tags.html' %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock content %} diff --git a/netbox/templates/ipam/asnrange.html b/netbox/templates/ipam/asnrange.html index eed3630ef..5ad59ca0c 100644 --- a/netbox/templates/ipam/asnrange.html +++ b/netbox/templates/ipam/asnrange.html @@ -1,57 +1 @@ {% extends 'ipam/asnrange/base.html' %} -{% load buttons %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "ASN Range" %}

    - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "RIR" %} - {{ object.rir }} -
    {% trans "Range" %}{{ object.range_as_string_with_asdot }}
    {% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% plugin_left_page object %} - {% include 'inc/panels/tags.html' %} -
    -
    - {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock content %} diff --git a/netbox/templates/ipam/attrs/vrf.html b/netbox/templates/ipam/attrs/vrf.html new file mode 100644 index 000000000..10280ed8a --- /dev/null +++ b/netbox/templates/ipam/attrs/vrf.html @@ -0,0 +1,2 @@ +{% load helpers i18n %} +{% if value %}{{ value|linkify }}{% if show_rd %} ({{ value.rd }}){% endif %}{% else %}{% trans "Global" %}{% endif %} diff --git a/netbox/templates/ipam/fhrpgroup.html b/netbox/templates/ipam/fhrpgroup.html index 9c414398e..835f26881 100644 --- a/netbox/templates/ipam/fhrpgroup.html +++ b/netbox/templates/ipam/fhrpgroup.html @@ -1,7 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} {% load i18n %} {# Omit assigned IP addresses from object representation #} @@ -11,75 +8,3 @@ {{ block.super }} {% endblock breadcrumbs %} - -{% block content %} -
    -
    -
    -

    {% trans "FHRP Group" %}

    - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Protocol" %}{{ object.get_protocol_display }}
    {% trans "Group ID" %}{{ object.group_id }}
    {% trans "Name" %}{{ object.name|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Members" %}{{ member_count }}
    -
    - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "Authentication" %}

    - - - - - - - - - -
    {% trans "Authentication Type" %}{{ object.get_auth_type_display|placeholder }}
    {% trans "Authentication Key" %}{{ object.auth_key|placeholder }}
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    - {% trans "Virtual IP Addresses" %} - {% if perms.ipam.add_ipaddress %} - - {% endif %} -

    - {% htmx_table 'ipam:ipaddress_list' fhrpgroup_id=object.pk %} -
    - {% include 'inc/panel_table.html' with table=members_table heading='Members' %} - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/ipam/ipaddress.html b/netbox/templates/ipam/ipaddress.html index 8b4473192..18045590d 100644 --- a/netbox/templates/ipam/ipaddress.html +++ b/netbox/templates/ipam/ipaddress.html @@ -1,129 +1 @@ -{% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "IP Address" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Family" %}IPv{{ object.family }}
    {% trans "VRF" %} - {% if object.vrf %} - {{ object.vrf }} - {% else %} - {% trans "Global" %} - {% endif %} -
    {% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
    {% trans "Status" %}{% badge object.get_status_display bg_color=object.get_status_color %}
    {% trans "Role" %} - {% if object.role %} - {{ object.get_role_display }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "DNS Name" %}{{ object.dns_name|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Assignment" %} - {% if object.assigned_object %} - {% if object.assigned_object.parent_object %} - {{ object.assigned_object.parent_object|linkify }} / - {% endif %} - {{ object.assigned_object|linkify }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "NAT (inside)" %} - {% if object.nat_inside %} - {{ object.nat_inside|linkify }} - {% if object.nat_inside.assigned_object %} - ({{ object.nat_inside.assigned_object.parent_object|linkify }}) - {% endif %} - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "NAT (outside)" %} - {% for ip in object.nat_outside.all %} - {{ ip|linkify }} - {% if ip.assigned_object %} - ({{ ip.assigned_object.parent_object|linkify }}) - {% endif %}
    - {% empty %} - {{ ''|placeholder }} - {% endfor %} -
    Primary IP{% checkmark object.is_primary_ip %}
    OOB IP{% checkmark object.is_oob_ip %}
    -
    - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panel_table.html' with table=parent_prefixes_table heading='Parent Prefixes' %} - {% if duplicate_ips_table.rows %} - {% include 'inc/panel_table.html' with table=duplicate_ips_table heading='Duplicate IPs' panel_class='danger' %} - {% endif %} -
    -

    {% trans "Application Services" %}

    - {% htmx_table 'ipam:service_list' ip_address_id=object.pk %} -
    - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} +{% extends 'ipam/ipaddress/base.html' %} diff --git a/netbox/templates/ipam/ipaddress/attrs/assigned_object.html b/netbox/templates/ipam/ipaddress/attrs/assigned_object.html new file mode 100644 index 000000000..7e585a627 --- /dev/null +++ b/netbox/templates/ipam/ipaddress/attrs/assigned_object.html @@ -0,0 +1,2 @@ +{% load helpers %} +{% if value.parent_object %}{{ value.parent_object|linkify }} / {% endif %}{{ value|linkify }} diff --git a/netbox/templates/ipam/ipaddress/attrs/nat_inside.html b/netbox/templates/ipam/ipaddress/attrs/nat_inside.html new file mode 100644 index 000000000..17dd6f8ea --- /dev/null +++ b/netbox/templates/ipam/ipaddress/attrs/nat_inside.html @@ -0,0 +1,2 @@ +{% load helpers %} +{{ value|linkify }}{% if value.assigned_object %} ({{ value.assigned_object.parent_object|linkify }}){% endif %} diff --git a/netbox/templates/ipam/ipaddress/attrs/nat_outside.html b/netbox/templates/ipam/ipaddress/attrs/nat_outside.html new file mode 100644 index 000000000..73dd72035 --- /dev/null +++ b/netbox/templates/ipam/ipaddress/attrs/nat_outside.html @@ -0,0 +1,2 @@ +{% load helpers %} +{% for ip in value.all %}{{ ip|linkify }}{% if ip.assigned_object %} ({{ ip.assigned_object.parent_object|linkify }}){% endif %}
    {% empty %}{% endfor %} diff --git a/netbox/templates/ipam/iprange.html b/netbox/templates/ipam/iprange.html index c4026848b..7fcb860c9 100644 --- a/netbox/templates/ipam/iprange.html +++ b/netbox/templates/ipam/iprange.html @@ -1,98 +1 @@ {% extends 'ipam/iprange/base.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "IP Range" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Family" %}IPv{{ object.family }}
    {% trans "Starting Address" %}{{ object.start_address }}
    {% trans "Ending Address" %}{{ object.end_address }}
    {% trans "Size" %}{{ object.size }}
    {% trans "Marked Populated" %}{% checkmark object.mark_populated %}
    {% trans "Marked Utilized" %}{% checkmark object.mark_utilized %}
    {% trans "Utilization" %} - {% if object.mark_utilized %} - {% utilization_graph 100 warning_threshold=0 danger_threshold=0 %} - {% else %} - {% utilization_graph object.utilization %} - {% endif %} -
    {% trans "VRF" %} - {% if object.vrf %} - {{ object.vrf|linkify }} ({{ object.vrf.rd }}) - {% else %} - {% trans "Global" %} - {% endif %} -
    {% trans "Role" %}{{ object.role|linkify|placeholder }}
    {% trans "Status" %}{% badge object.get_status_display bg_color=object.get_status_color %}
    {% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% include 'inc/panel_table.html' with table=parent_prefixes_table heading='Parent Prefixes' %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/ipam/iprange/attrs/utilization.html b/netbox/templates/ipam/iprange/attrs/utilization.html new file mode 100644 index 000000000..ed9579ed6 --- /dev/null +++ b/netbox/templates/ipam/iprange/attrs/utilization.html @@ -0,0 +1,6 @@ +{% load helpers %} +{% if object.mark_utilized %} + {% utilization_graph 100 warning_threshold=0 danger_threshold=0 %} +{% else %} + {% utilization_graph value %} +{% endif %} diff --git a/netbox/templates/ipam/panels/prefix_addressing.html b/netbox/templates/ipam/panels/prefix_addressing.html new file mode 100644 index 000000000..ff74d6c0a --- /dev/null +++ b/netbox/templates/ipam/panels/prefix_addressing.html @@ -0,0 +1,62 @@ +{% load humanize helpers i18n %} +
    +

    + {% trans "Addressing" %} + {% if object.prefix.version == 4 %} + + {% endif %} +

    + + + + + + {% with child_ip_count=object.get_child_ips.count %} + + + + + {% endwith %} + {% with available_count=object.get_available_ips.size %} + + + + + {% endwith %} + + + + +
    {% trans "Utilization" %} + {% if object.mark_utilized %} + {% utilization_graph 100 warning_threshold=0 danger_threshold=0 %} + ({% trans "Marked fully utilized" %}) + {% else %} + {% utilization_graph object.get_utilization %} + {% endif %} +
    {% trans "Child IPs" %} + {{ child_ip_count }} +
    {% trans "Available IPs" %} + {% if available_count > 1000000 %} + {{ available_count|intword }} + {% else %} + {{ available_count|intcomma }} + {% endif %} +
    {% trans "First available IP" %} + {% with first_available_ip=object.get_first_available_ip %} + {% if first_available_ip %} + {% if perms.ipam.add_ipaddress %} + {{ first_available_ip }} + {% else %} + {{ first_available_ip }} + {% endif %} + {% else %} + {{ ''|placeholder }} + {% endif %} + {% endwith %} +
    +
    diff --git a/netbox/templates/ipam/prefix.html b/netbox/templates/ipam/prefix.html index a582561bd..dbee0253d 100644 --- a/netbox/templates/ipam/prefix.html +++ b/netbox/templates/ipam/prefix.html @@ -1,202 +1 @@ {% extends 'ipam/prefix/base.html' %} -{% load humanize %} -{% load helpers %} -{% load plugins %} -{% load i18n %} -{% load mptt %} - -{% block content %} -
    -
    -
    -

    {% trans "Prefix" %}

    - - - - - - - - - - - - - - - - - - - - {% if object.scope %} - - {% else %} - - {% endif %} - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Family" %}IPv{{ object.family }}
    {% trans "VRF" %} - {% if object.vrf %} - {{ object.vrf }} - {% else %} - {% trans "Global" %} - {% endif %} -
    {% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
    {% trans "Aggregate" %} - {% if aggregate %} - {{ aggregate.prefix }} ({{ aggregate.rir }}) - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "Scope" %}{{ object.scope|linkify }} ({% trans object.scope_type.name %}){{ ''|placeholder }}
    {% trans "VLAN" %} - {% if object.vlan %} - {% if object.vlan.group %} - {{ object.vlan.group|linkify }} / - {% endif %} - {{ object.vlan|linkify }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "Status" %}{% badge object.get_status_display bg_color=object.get_status_color %}
    {% trans "Role" %}{{ object.role|linkify|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Is a pool" %}{% checkmark object.is_pool %}
    -
    - {% plugin_left_page object %} -
    -
    -
    -

    - {% trans "Addressing" %} - {% if object.prefix.version == 4 %} - - {% endif %} -

    - - - - - - {% with child_ip_count=object.get_child_ips.count %} - - - - - {% endwith %} - {% with available_count=object.get_available_ips.size %} - - - - - {% endwith %} - - - - -
    {% trans "Utilization" %} - {% if object.mark_utilized %} - {% utilization_graph 100 warning_threshold=0 danger_threshold=0 %} - ({% trans "Marked fully utilized" %}) - {% else %} - {% utilization_graph object.get_utilization %} - {% endif %} -
    {% trans "Child IPs" %} - {{ child_ip_count }} -
    {% trans "Available IPs" %} - {# Use human-friendly words for counts greater than one million #} - {% if available_count > 1000000 %} - {{ available_count|intword }} - {% else %} - {{ available_count|intcomma }} - {% endif %} -
    {% trans "First available IP" %} - {% with first_available_ip=object.get_first_available_ip %} - {% if first_available_ip %} - {% if perms.ipam.add_ipaddress %} - {{ first_available_ip }} - {% else %} - {{ first_available_ip }} - {% endif %} - {% else %} - {{ ''|placeholder }} - {% endif %} - {% endwith %} -
    -
    - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% if duplicate_prefix_table.rows %} - {% include 'inc/panel_table.html' with table=duplicate_prefix_table heading='Duplicate Prefixes' %} - {% endif %} - {% include 'inc/panel_table.html' with table=parent_prefix_table heading='Parent Prefixes' %} - {% plugin_full_width_page object %} -
    -
    -{% endblock %} - -{% block modals %} - {{ block.super }} - {% if object.prefix.version == 4 %} - - {% endif %} -{% endblock %} diff --git a/netbox/templates/ipam/prefix/attrs/aggregate.html b/netbox/templates/ipam/prefix/attrs/aggregate.html new file mode 100644 index 000000000..924993f4e --- /dev/null +++ b/netbox/templates/ipam/prefix/attrs/aggregate.html @@ -0,0 +1,2 @@ +{% load helpers %} +{{ value|linkify }} ({{ value.rir }}) diff --git a/netbox/templates/ipam/prefix/base.html b/netbox/templates/ipam/prefix/base.html index 7ac307014..9d7f60cb7 100644 --- a/netbox/templates/ipam/prefix/base.html +++ b/netbox/templates/ipam/prefix/base.html @@ -1,6 +1,7 @@ {% extends 'generic/object.html' %} {% load buttons %} {% load helpers %} +{% load i18n %} {% block breadcrumbs %} {{ block.super }} @@ -8,3 +9,39 @@ {% endif %} {% endblock %} + +{% block modals %} + {{ block.super }} + {% if object.prefix.version == 4 %} + + {% endif %} +{% endblock modals %} diff --git a/netbox/templates/ipam/rir.html b/netbox/templates/ipam/rir.html index a9a1b7849..41f31de93 100644 --- a/netbox/templates/ipam/rir.html +++ b/netbox/templates/ipam/rir.html @@ -1,7 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} {% load i18n %} {% block extra_controls %} @@ -11,40 +8,3 @@ {% endif %} {% endblock extra_controls %} - -{% block content %} -
    -
    -
    -

    {% trans "RIR" %}

    - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Private" %}{% checkmark object.is_private %}
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/ipam/role.html b/netbox/templates/ipam/role.html index 8b780d992..b7763170a 100644 --- a/netbox/templates/ipam/role.html +++ b/netbox/templates/ipam/role.html @@ -1,7 +1,4 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} {% load i18n %} {% block extra_controls %} @@ -11,40 +8,3 @@ {% endif %} {% endblock extra_controls %} - -{% block content %} -
    -
    -
    -

    {% trans "Role" %}

    - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Weight" %}{{ object.weight }}
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/ipam/routetarget.html b/netbox/templates/ipam/routetarget.html index 2f7d8e806..f15e1d050 100644 --- a/netbox/templates/ipam/routetarget.html +++ b/netbox/templates/ipam/routetarget.html @@ -1,68 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Route Target" %}

    - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Tenant" %}{{ object.tenant|linkify|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    {% trans "Importing VRFs" %}

    - {% htmx_table 'ipam:vrf_list' import_target_id=object.pk %} -
    -
    -
    -
    -

    {% trans "Exporting VRFs" %}

    - {% htmx_table 'ipam:vrf_list' export_target_id=object.pk %} -
    -
    -
    -
    -
    -
    -

    {% trans "Importing L2VPNs" %}

    - {% htmx_table 'vpn:l2vpn_list' import_target_id=object.pk %} -
    -
    -
    -
    -

    {% trans "Exporting L2VPNs" %}

    - {% htmx_table 'vpn:l2vpn_list' export_target_id=object.pk %} -
    -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/ipam/service.html b/netbox/templates/ipam/service.html index 2a504485b..18aac8b08 100644 --- a/netbox/templates/ipam/service.html +++ b/netbox/templates/ipam/service.html @@ -1,8 +1,4 @@ {% extends 'generic/object.html' %} -{% load buttons %} -{% load helpers %} -{% load perms %} -{% load plugins %} {% load i18n %} {% block breadcrumbs %} @@ -14,58 +10,4 @@ {% endif %} -{% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Service" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Parent" %}{{ object.parent|linkify }}
    {% trans "Protocol" %}{{ object.get_protocol_display }}
    {% trans "Ports" %}{{ object.port_list }}
    {% trans "IP Addresses" %} - {% for ipaddress in object.ipaddresses.all %} - {{ ipaddress|linkify }}
    - {% empty %} - {{ ''|placeholder }} - {% endfor %} -
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} +{% endblock breadcrumbs %} diff --git a/netbox/templates/ipam/service/attrs/ip_addresses.html b/netbox/templates/ipam/service/attrs/ip_addresses.html new file mode 100644 index 000000000..ce0516c69 --- /dev/null +++ b/netbox/templates/ipam/service/attrs/ip_addresses.html @@ -0,0 +1,2 @@ +{% load helpers %} +{% for ipaddress in value.all %}{{ ipaddress|linkify }}
    {% empty %}{% endfor %} diff --git a/netbox/templates/ipam/servicetemplate.html b/netbox/templates/ipam/servicetemplate.html index 5c3e53621..f15e1d050 100644 --- a/netbox/templates/ipam/servicetemplate.html +++ b/netbox/templates/ipam/servicetemplate.html @@ -1,46 +1 @@ {% extends 'generic/object.html' %} -{% load buttons %} -{% load helpers %} -{% load perms %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Application Service Template" %}

    - - - - - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Protocol" %}{{ object.get_protocol_display }}
    {% trans "Ports" %}{{ object.port_list }}
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/ipam/vlan.html b/netbox/templates/ipam/vlan.html index 72f5058aa..f158586cd 100644 --- a/netbox/templates/ipam/vlan.html +++ b/netbox/templates/ipam/vlan.html @@ -1,129 +1 @@ {% extends 'ipam/vlan/base.html' %} -{% load helpers %} -{% load render_table from django_tables2 %} -{% load plugins %} -{% load i18n %} -{% load mptt %} - -{% block content %} -
    -
    -
    -

    {% trans "VLAN" %}

    - - {% if object.site.region %} - - - - - {% endif %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {% if object.qinq_role == 'cvlan' %} - - - - - {% endif %} - - - - -
    {% trans "Region" %} - {% nested_tree object.site.region %} -
    {% trans "Site" %}{{ object.site|linkify|placeholder }}
    {% trans "Group" %}{{ object.group|linkify|placeholder }}
    {% trans "VLAN ID" %}{{ object.vid }}
    {% trans "Name" %}{{ object.name }}
    {% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
    {% trans "Status" %}{% badge object.get_status_display bg_color=object.get_status_color %}
    {% trans "Role" %} - {% if object.role %} - {{ object.role }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Q-in-Q Role" %} - {% if object.qinq_role %} - {% badge object.get_qinq_role_display bg_color=object.get_qinq_role_color %} - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "Q-in-Q SVLAN" %}{{ object.qinq_svlan|linkify|placeholder }}
    {% trans "L2VPN" %}{{ object.l2vpn_termination.l2vpn|linkify|placeholder }}
    -
    - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    - {% trans "Prefixes" %} - {% if perms.ipam.add_prefix %} - - {% endif %} -

    - {% htmx_table 'ipam:prefix_list' vlan_id=object.pk %} -
    - {% if object.qinq_role == 'svlan' %} -
    -

    - {% trans "Customer VLANs" %} - {% if perms.ipam.add_vlan %} - - {% endif %} -

    - {% htmx_table 'ipam:vlan_list' qinq_svlan_id=object.pk %} -
    - {% endif %} - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/ipam/vlangroup.html b/netbox/templates/ipam/vlangroup.html index 86a12dfe0..43908db2c 100644 --- a/netbox/templates/ipam/vlangroup.html +++ b/netbox/templates/ipam/vlangroup.html @@ -1,7 +1,5 @@ {% extends 'generic/object.html' %} {% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} {% load i18n %} {% block breadcrumbs %} @@ -18,53 +16,4 @@ {% trans "Add VLAN" %} {% endif %} -{% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "VLAN Group" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Scope" %}{{ object.scope|linkify|placeholder }}
    {% trans "VLAN IDs" %}{{ object.vid_ranges_items|join:", " }}
    Utilization{% utilization_graph object.utilization %}
    {% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% plugin_right_page object %} -
    -
    -{% endblock %} +{% endblock extra_controls %} diff --git a/netbox/templates/ipam/vlangroup/attrs/vid_ranges.html b/netbox/templates/ipam/vlangroup/attrs/vid_ranges.html new file mode 100644 index 000000000..9ceaf63b1 --- /dev/null +++ b/netbox/templates/ipam/vlangroup/attrs/vid_ranges.html @@ -0,0 +1 @@ +{{ value|join:", " }} diff --git a/netbox/templates/ipam/vlantranslationpolicy.html b/netbox/templates/ipam/vlantranslationpolicy.html index 399054881..f15e1d050 100644 --- a/netbox/templates/ipam/vlantranslationpolicy.html +++ b/netbox/templates/ipam/vlantranslationpolicy.html @@ -1,65 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "VLAN Translation Policy" %}

    - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Rules" %} - {% if object.rules.count %} - {{ object.rules.count }} - {% else %} - 0 - {% endif %} -
    -
    - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    - {% trans "VLAN Translation Rules" %} - {% if perms.ipam.add_vlantranslationrule %} - - {% endif %} -

    - {% htmx_table 'ipam:vlantranslationrule_list' policy_id=object.pk %} -
    -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/ipam/vlantranslationrule.html b/netbox/templates/ipam/vlantranslationrule.html index 042ade7fc..f15e1d050 100644 --- a/netbox/templates/ipam/vlantranslationrule.html +++ b/netbox/templates/ipam/vlantranslationrule.html @@ -1,45 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "VLAN Translation Rule" %}

    - - - - - - - - - - - - - - - - - -
    {% trans "Policy" %}{{ object.policy|linkify }}
    {% trans "Local VID" %}{{ object.local_vid }}
    {% trans "Remote VID" %}{{ object.remote_vid }}
    {% trans "Description" %}{{ object.description }}
    -
    - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/ipam/vrf.html b/netbox/templates/ipam/vrf.html index e632e827d..f15e1d050 100644 --- a/netbox/templates/ipam/vrf.html +++ b/netbox/templates/ipam/vrf.html @@ -1,61 +1 @@ {% extends 'generic/object.html' %} -{% load buttons %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block title %}{% trans "VRF" %} {{ object }}{% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "VRF" %}

    - - - - - - - - - - - - - - - - - -
    {% trans "Route Distinguisher" %}{{ object.rd|placeholder }}
    {% trans "Tenant" %} - {% if object.tenant.group %} - {{ object.tenant.group|linkify }} / - {% endif %} - {{ object.tenant|linkify|placeholder }} -
    {% trans "Unique IP Space" %}{% checkmark object.enforce_unique %}
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    - {% include 'inc/panels/related_objects.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/comments.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% include 'inc/panel_table.html' with table=import_targets_table heading="Import Route Targets" %} -
    -
    - {% include 'inc/panel_table.html' with table=export_targets_table heading="Export Route Targets" %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} From bb73601d80318002e15cbfe79b46b3f5e5951f0b Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Mar 2026 05:31:05 +0000 Subject: [PATCH 19/41] Update source translation strings --- netbox/translations/en/LC_MESSAGES/django.po | 970 +++++++++---------- 1 file changed, 454 insertions(+), 516 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index 5104fb339..d0ab8d81c 100644 --- a/netbox/translations/en/LC_MESSAGES/django.po +++ b/netbox/translations/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-26 05:30+0000\n" +"POT-Creation-Date: 2026-03-27 05:30+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -195,7 +195,7 @@ msgstr "" #: netbox/ipam/tables/vlans.py:90 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:36 -#: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:52 +#: netbox/templates/ipam/vlan_edit.html:52 #: netbox/virtualization/forms/bulk_edit.py:95 #: netbox/virtualization/forms/bulk_import.py:60 #: netbox/virtualization/forms/bulk_import.py:98 @@ -226,7 +226,6 @@ msgstr "" #: netbox/circuits/filtersets.py:85 netbox/circuits/forms/filtersets.py:42 #: netbox/ipam/forms/model_forms.py:162 netbox/ipam/models/asns.py:137 #: netbox/ipam/models/asns.py:154 netbox/ipam/tables/asn.py:51 -#: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "" @@ -404,7 +403,7 @@ msgstr "" #: netbox/dcim/forms/bulk_edit.py:134 netbox/dcim/forms/filtersets.py:225 #: netbox/dcim/forms/model_forms.py:142 netbox/dcim/tables/sites.py:74 #: netbox/ipam/models/asns.py:155 netbox/ipam/tables/asn.py:37 -#: netbox/ipam/views.py:270 netbox/netbox/navigation/menu.py:182 +#: netbox/ipam/views.py:365 netbox/netbox/navigation/menu.py:182 #: netbox/netbox/navigation/menu.py:185 msgid "ASNs" msgstr "" @@ -499,7 +498,6 @@ msgstr "" #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 #: netbox/extras/forms/bulk_import.py:48 netbox/extras/tables/tables.py:510 #: netbox/extras/tables/tables.py:578 netbox/netbox/tables/tables.py:339 -#: netbox/templates/core/datasource.html:38 #: netbox/templates/dcim/panels/interface_connection.html:68 #: netbox/templates/extras/eventrule.html:74 #: netbox/templates/wireless/panels/wirelesslink_interface.html:16 @@ -564,14 +562,10 @@ msgstr "" #: netbox/ipam/forms/model_forms.py:503 netbox/ipam/tables/ip.py:182 #: netbox/ipam/tables/ip.py:261 netbox/ipam/tables/ip.py:314 #: netbox/ipam/tables/ip.py:389 netbox/ipam/tables/ip.py:416 -#: netbox/ipam/tables/vlans.py:98 netbox/templates/core/datasource.html:46 -#: netbox/templates/core/job.html:21 netbox/templates/core/rq_task.html:81 +#: netbox/ipam/tables/vlans.py:98 netbox/templates/core/rq_task.html:81 #: netbox/templates/core/system.html:19 #: netbox/templates/extras/inc/script_list_content.html:35 -#: netbox/templates/ipam/ipaddress.html:37 -#: netbox/templates/ipam/iprange.html:61 netbox/templates/ipam/prefix.html:69 -#: netbox/templates/ipam/vlan.html:48 netbox/users/forms/filtersets.py:36 -#: netbox/users/forms/model_forms.py:223 +#: netbox/users/forms/filtersets.py:36 netbox/users/forms/model_forms.py:223 #: netbox/virtualization/forms/bulk_edit.py:60 #: netbox/virtualization/forms/bulk_edit.py:83 #: netbox/virtualization/forms/bulk_import.py:55 @@ -632,16 +626,9 @@ msgstr "" #: netbox/ipam/forms/filtersets.py:155 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:297 netbox/ipam/forms/filtersets.py:350 #: netbox/ipam/forms/filtersets.py:459 netbox/ipam/forms/filtersets.py:552 -#: netbox/ipam/tables/ip.py:419 netbox/templates/ipam/aggregate.html:30 -#: netbox/templates/ipam/asn.html:33 netbox/templates/ipam/asnrange.html:29 -#: netbox/templates/ipam/ipaddress.html:28 -#: netbox/templates/ipam/iprange.html:65 netbox/templates/ipam/prefix.html:29 -#: netbox/templates/ipam/routetarget.html:17 netbox/templates/ipam/vlan.html:39 -#: netbox/templates/ipam/vlangroup.html:50 netbox/templates/ipam/vrf.html:20 -#: netbox/templates/tenancy/tenant.html:17 -#: netbox/tenancy/forms/filtersets.py:55 netbox/tenancy/forms/forms.py:26 -#: netbox/tenancy/forms/forms.py:50 netbox/tenancy/forms/model_forms.py:51 -#: netbox/tenancy/tables/columns.py:50 +#: netbox/ipam/tables/ip.py:419 netbox/tenancy/forms/filtersets.py:55 +#: netbox/tenancy/forms/forms.py:26 netbox/tenancy/forms/forms.py:50 +#: netbox/tenancy/forms/model_forms.py:51 netbox/tenancy/tables/columns.py:50 #: netbox/virtualization/forms/bulk_edit.py:66 #: netbox/virtualization/forms/bulk_edit.py:126 #: netbox/virtualization/forms/bulk_import.py:67 @@ -786,7 +773,6 @@ msgstr "" #: netbox/netbox/forms/bulk_edit.py:91 netbox/netbox/forms/bulk_edit.py:103 #: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 #: netbox/templates/circuits/inc/circuit_termination_fields.html:85 -#: netbox/templates/core/datasource.html:58 #: netbox/templates/core/plugin.html:80 #: netbox/templates/extras/configcontext.html:25 #: netbox/templates/extras/configcontextprofile.html:17 @@ -802,23 +788,6 @@ msgstr "" #: netbox/templates/extras/tableconfig.html:17 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:151 -#: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 -#: netbox/templates/ipam/asnrange.html:38 -#: netbox/templates/ipam/fhrpgroup.html:34 -#: netbox/templates/ipam/ipaddress.html:55 -#: netbox/templates/ipam/iprange.html:74 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/rir.html:26 netbox/templates/ipam/role.html:26 -#: netbox/templates/ipam/routetarget.html:21 -#: netbox/templates/ipam/service.html:52 -#: netbox/templates/ipam/servicetemplate.html:27 -#: netbox/templates/ipam/vlan.html:62 netbox/templates/ipam/vlangroup.html:34 -#: netbox/templates/ipam/vlantranslationpolicy.html:18 -#: netbox/templates/ipam/vlantranslationrule.html:26 -#: netbox/templates/ipam/vrf.html:33 netbox/templates/tenancy/contact.html:77 -#: netbox/templates/tenancy/contactgroup.html:25 -#: netbox/templates/tenancy/contactrole.html:22 -#: netbox/templates/tenancy/tenant.html:24 -#: netbox/templates/tenancy/tenantgroup.html:33 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:12 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:12 #: netbox/users/forms/bulk_edit.py:62 netbox/users/forms/bulk_edit.py:80 @@ -925,9 +894,6 @@ msgstr "" #: netbox/templates/dcim/panels/component_inventory_items.html:10 #: netbox/templates/dcim/panels/interface_virtual_circuit.html:19 #: netbox/templates/dcim/panels/interface_wireless.html:17 -#: netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:57 netbox/templates/ipam/prefix.html:73 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 #: netbox/templates/wireless/panels/wirelesslink_interface.html:20 #: netbox/tenancy/forms/bulk_edit.py:136 netbox/tenancy/forms/filtersets.py:136 #: netbox/tenancy/forms/model_forms.py:137 netbox/tenancy/tables/contacts.py:96 @@ -1184,7 +1150,7 @@ msgstr "" #: netbox/dcim/tables/devices.py:147 netbox/dcim/tables/sites.py:65 #: netbox/extras/filtersets.py:685 netbox/ipam/forms/bulk_edit.py:404 #: netbox/ipam/forms/filtersets.py:241 netbox/ipam/forms/filtersets.py:466 -#: netbox/ipam/forms/filtersets.py:559 netbox/templates/ipam/vlan.html:16 +#: netbox/ipam/forms/filtersets.py:559 netbox/ipam/ui/panels.py:195 #: netbox/virtualization/forms/filtersets.py:67 #: netbox/virtualization/forms/filtersets.py:147 #: netbox/virtualization/forms/model_forms.py:86 @@ -1225,8 +1191,7 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:296 netbox/dcim/forms/bulk_edit.py:1540 #: netbox/extras/forms/model_forms.py:706 netbox/ipam/forms/filtersets.py:154 #: netbox/ipam/forms/filtersets.py:642 netbox/ipam/forms/model_forms.py:329 -#: netbox/templates/extras/configcontext.html:36 -#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/ipam/ui/panels.py:121 netbox/templates/extras/configcontext.html:36 #: netbox/templates/ipam/vlan_edit.html:42 #: netbox/tenancy/forms/filtersets.py:116 netbox/users/forms/model_forms.py:375 msgid "Assignment" @@ -1243,7 +1208,6 @@ msgstr "" #: netbox/templates/dcim/panels/interface_wireless_lans.html:8 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 #: netbox/templates/ipam/panels/fhrp_groups.html:9 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/tenant.html:20 #: netbox/tenancy/forms/bulk_edit.py:44 netbox/tenancy/forms/bulk_import.py:46 #: netbox/tenancy/forms/filtersets.py:63 netbox/tenancy/forms/filtersets.py:126 #: netbox/tenancy/forms/model_forms.py:45 @@ -1320,8 +1284,8 @@ msgstr "" #: netbox/dcim/models/modules.py:219 netbox/dcim/models/power.py:95 #: netbox/dcim/models/racks.py:301 netbox/dcim/models/racks.py:685 #: netbox/dcim/models/sites.py:163 netbox/dcim/models/sites.py:287 -#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:528 -#: netbox/ipam/models/ip.py:757 netbox/ipam/models/vlans.py:228 +#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:538 +#: netbox/ipam/models/ip.py:767 netbox/ipam/models/vlans.py:228 #: netbox/virtualization/models/clusters.py:70 #: netbox/virtualization/models/virtualmachines.py:80 #: netbox/vpn/models/l2vpn.py:36 netbox/vpn/models/tunnels.py:38 @@ -1543,7 +1507,7 @@ msgid "virtual circuits" msgstr "" #: netbox/circuits/models/virtual_circuits.py:135 netbox/ipam/models/ip.py:201 -#: netbox/ipam/models/ip.py:764 netbox/vpn/models/tunnels.py:109 +#: netbox/ipam/models/ip.py:774 netbox/vpn/models/tunnels.py:109 msgid "role" msgstr "" @@ -1591,7 +1555,6 @@ msgstr "" #: netbox/ipam/tables/vlans.py:205 netbox/ipam/tables/vrfs.py:26 #: netbox/ipam/tables/vrfs.py:65 netbox/netbox/tables/tables.py:325 #: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:17 #: netbox/templates/core/plugin.html:54 netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/inc/interface_vlans_table.html:5 #: netbox/templates/dcim/inc/panels/inventory_items.html:18 @@ -1610,17 +1573,6 @@ msgstr "" #: netbox/templates/extras/savedfilter.html:13 #: netbox/templates/extras/tableconfig.html:13 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 -#: netbox/templates/ipam/asnrange.html:15 -#: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 -#: netbox/templates/ipam/role.html:22 netbox/templates/ipam/routetarget.html:13 -#: netbox/templates/ipam/service.html:26 -#: netbox/templates/ipam/servicetemplate.html:15 -#: netbox/templates/ipam/vlan.html:35 netbox/templates/ipam/vlangroup.html:30 -#: netbox/templates/ipam/vlantranslationpolicy.html:14 -#: netbox/templates/tenancy/contact.html:35 -#: netbox/templates/tenancy/contactgroup.html:21 -#: netbox/templates/tenancy/contactrole.html:18 -#: netbox/templates/tenancy/tenantgroup.html:29 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:8 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:8 #: netbox/tenancy/tables/contacts.py:38 netbox/tenancy/tables/contacts.py:53 @@ -1673,8 +1625,7 @@ msgid "Commit Rate" msgstr "" #: netbox/circuits/tables/circuits.py:85 netbox/dcim/forms/filtersets.py:1973 -#: netbox/templates/tenancy/contact.html:94 -#: netbox/tenancy/tables/contacts.py:67 +#: netbox/tenancy/tables/contacts.py:67 netbox/tenancy/views.py:416 msgid "Assignments" msgstr "" @@ -1780,7 +1731,7 @@ msgstr "" msgid "Group Assignments" msgstr "" -#: netbox/circuits/ui/panels.py:46 netbox/ipam/ui/panels.py:35 +#: netbox/circuits/ui/panels.py:46 netbox/ipam/ui/panels.py:36 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 msgid "Assign Group" msgstr "" @@ -1831,7 +1782,7 @@ msgid "Syncing" msgstr "" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:43 netbox/templates/core/job.html:59 +#: netbox/core/tables/jobs.py:43 msgid "Completed" msgstr "" @@ -1862,7 +1813,6 @@ msgstr "" #: netbox/core/choices.py:55 netbox/core/constants.py:24 #: netbox/core/tables/jobs.py:34 netbox/core/tables/tasks.py:39 -#: netbox/templates/core/job.html:46 msgid "Scheduled" msgstr "" @@ -1901,10 +1851,9 @@ msgstr "" #: netbox/core/choices.py:102 netbox/core/tables/jobs.py:31 #: netbox/core/tables/tasks.py:80 netbox/extras/tables/tables.py:436 #: netbox/extras/tables/tables.py:742 -#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision.html:23 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:42 netbox/templates/core/rq_task.html:16 -#: netbox/templates/core/rq_task.html:73 +#: netbox/templates/core/rq_task.html:16 netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 #: netbox/templates/extras/journalentry.html:22 @@ -1926,7 +1875,6 @@ msgid "Finished" msgstr "" #: netbox/core/constants.py:22 netbox/core/tables/jobs.py:40 -#: netbox/templates/core/job.html:55 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "" @@ -1958,7 +1906,6 @@ msgid "Warning" msgstr "" #: netbox/core/constants.py:33 netbox/netbox/tables/columns.py:589 -#: netbox/templates/core/job.html:26 msgid "Error" msgstr "" @@ -2034,7 +1981,6 @@ msgstr "" #: netbox/extras/tables/tables.py:188 netbox/extras/tables/tables.py:319 #: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:520 #: netbox/netbox/preferences.py:46 netbox/netbox/preferences.py:71 -#: netbox/templates/core/datasource.html:42 #: netbox/templates/extras/customlink.html:17 #: netbox/templates/extras/eventrule.html:17 #: netbox/templates/extras/savedfilter.html:25 @@ -2048,7 +1994,7 @@ msgid "Enabled" msgstr "" #: netbox/core/forms/bulk_edit.py:30 netbox/core/forms/filtersets.py:54 -#: netbox/core/tables/data.py:31 netbox/templates/core/datasource.html:50 +#: netbox/core/tables/data.py:31 netbox/core/ui/panels.py:12 msgid "Sync interval" msgstr "" @@ -2062,17 +2008,17 @@ msgstr "" msgid "Parameters" msgstr "" -#: netbox/core/forms/bulk_edit.py:37 netbox/templates/core/datasource.html:72 +#: netbox/core/forms/bulk_edit.py:37 netbox/core/ui/panels.py:22 msgid "Ignore rules" msgstr "" #: netbox/core/forms/filtersets.py:33 netbox/core/forms/model_forms.py:100 -#: netbox/extras/forms/model_forms.py:280 +#: netbox/core/ui/panels.py:7 netbox/extras/forms/model_forms.py:280 #: netbox/extras/forms/model_forms.py:613 #: netbox/extras/forms/model_forms.py:702 #: netbox/extras/forms/model_forms.py:755 netbox/extras/tables/tables.py:230 #: netbox/extras/tables/tables.py:600 netbox/extras/tables/tables.py:630 -#: netbox/extras/tables/tables.py:672 netbox/templates/core/datasource.html:31 +#: netbox/extras/tables/tables.py:672 #: netbox/templates/core/inc/datafile_panel.html:7 #: netbox/templates/extras/configtemplate.html:37 #: netbox/templates/extras/object_render_config.html:19 @@ -2099,15 +2045,14 @@ msgstr "" #: netbox/extras/forms/filtersets.py:580 netbox/extras/tables/tables.py:283 #: netbox/extras/tables/tables.py:350 netbox/extras/tables/tables.py:376 #: netbox/extras/tables/tables.py:395 netbox/extras/tables/tables.py:427 -#: netbox/extras/tables/tables.py:747 netbox/templates/core/job.html:11 -#: netbox/templates/core/objectchange.html:52 +#: netbox/extras/tables/tables.py:747 #: netbox/templates/extras/tableconfig.html:21 #: netbox/tenancy/tables/contacts.py:84 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "" #: netbox/core/forms/filtersets.py:95 netbox/core/tables/jobs.py:46 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:61 +#: netbox/core/ui/panels.py:65 netbox/templates/core/rq_task.html:61 msgid "Queue" msgstr "" @@ -2144,11 +2089,10 @@ msgid "Completed before" msgstr "" #: netbox/core/forms/filtersets.py:141 netbox/core/forms/filtersets.py:170 -#: netbox/dcim/forms/bulk_edit.py:458 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/model_forms.py:336 netbox/extras/forms/filtersets.py:575 -#: netbox/extras/forms/filtersets.py:595 netbox/extras/tables/tables.py:403 -#: netbox/extras/tables/tables.py:443 -#: netbox/templates/core/objectchange.html:36 +#: netbox/core/ui/panels.py:73 netbox/dcim/forms/bulk_edit.py:458 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:336 +#: netbox/extras/forms/filtersets.py:575 netbox/extras/forms/filtersets.py:595 +#: netbox/extras/tables/tables.py:403 netbox/extras/tables/tables.py:443 #: netbox/templates/extras/savedfilter.html:21 #: netbox/templates/extras/tableconfig.html:29 #: netbox/templates/inc/user_menu.html:31 netbox/users/filtersets.py:135 @@ -2161,7 +2105,6 @@ msgstr "" #: netbox/core/forms/filtersets.py:149 netbox/core/tables/change_logging.py:16 #: netbox/core/tables/jobs.py:72 netbox/extras/tables/tables.py:785 #: netbox/extras/tables/tables.py:840 -#: netbox/templates/core/objectchange.html:32 msgid "Time" msgstr "" @@ -2175,20 +2118,18 @@ msgstr "" #: netbox/core/forms/filtersets.py:163 netbox/core/tables/change_logging.py:30 #: netbox/extras/forms/model_forms.py:490 -#: netbox/templates/core/objectchange.html:46 #: netbox/templates/extras/eventrule.html:71 msgid "Action" msgstr "" #: netbox/core/forms/model_forms.py:55 netbox/core/tables/data.py:57 -#: netbox/templates/core/datafile.html:21 #: netbox/templates/extras/report/base.html:33 #: netbox/templates/extras/script/base.html:32 msgid "Source" msgstr "" -#: netbox/core/forms/model_forms.py:57 netbox/templates/core/datasource.html:14 -#: netbox/templates/core/datasource.html:20 +#: netbox/core/forms/model_forms.py:57 netbox/templates/core/datasource.html:10 +#: netbox/templates/core/datasource.html:16 #: netbox/utilities/templatetags/buttons.py:156 msgid "Sync" msgstr "" @@ -2376,10 +2317,9 @@ msgstr "" msgid "type" msgstr "" -#: netbox/core/models/data.py:50 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:183 netbox/extras/tables/tables.py:850 -#: netbox/templates/core/datasource.html:62 -#: netbox/templates/core/plugin.html:66 +#: netbox/core/models/data.py:50 netbox/core/ui/panels.py:17 +#: netbox/extras/choices.py:37 netbox/extras/models/models.py:183 +#: netbox/extras/tables/tables.py:850 netbox/templates/core/plugin.html:66 msgid "URL" msgstr "" @@ -2453,7 +2393,7 @@ msgstr "" msgid "File path relative to the data source's root" msgstr "" -#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:509 +#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:519 msgid "size" msgstr "" @@ -2600,27 +2540,24 @@ msgid "Full Name" msgstr "" #: netbox/core/tables/change_logging.py:38 netbox/core/tables/jobs.py:23 -#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:286 -#: netbox/extras/tables/tables.py:379 netbox/extras/tables/tables.py:398 -#: netbox/extras/tables/tables.py:430 netbox/extras/tables/tables.py:514 -#: netbox/extras/tables/tables.py:583 netbox/extras/tables/tables.py:752 -#: netbox/extras/tables/tables.py:793 netbox/extras/tables/tables.py:847 -#: netbox/netbox/tables/tables.py:343 -#: netbox/templates/core/objectchange.html:58 +#: netbox/core/ui/panels.py:83 netbox/extras/choices.py:41 +#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:379 +#: netbox/extras/tables/tables.py:398 netbox/extras/tables/tables.py:430 +#: netbox/extras/tables/tables.py:514 netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:752 netbox/extras/tables/tables.py:793 +#: netbox/extras/tables/tables.py:847 netbox/netbox/tables/tables.py:343 #: netbox/templates/extras/eventrule.html:78 #: netbox/templates/extras/journalentry.html:18 #: netbox/tenancy/tables/contacts.py:87 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "" -#: netbox/core/tables/change_logging.py:43 -#: netbox/templates/core/objectchange.html:74 +#: netbox/core/tables/change_logging.py:43 netbox/core/ui/panels.py:89 msgid "Request ID" msgstr "" #: netbox/core/tables/change_logging.py:46 netbox/core/tables/jobs.py:79 #: netbox/extras/tables/tables.py:796 netbox/extras/tables/tables.py:853 -#: netbox/templates/core/objectchange.html:68 msgid "Message" msgstr "" @@ -2633,11 +2570,11 @@ msgstr "" msgid "Last Synced" msgstr "" -#: netbox/core/tables/data.py:37 netbox/templates/core/datasource.html:118 +#: netbox/core/tables/data.py:37 msgid "Files" msgstr "" -#: netbox/core/tables/data.py:61 netbox/templates/core/datafile.html:25 +#: netbox/core/tables/data.py:61 msgid "Path" msgstr "" @@ -2661,7 +2598,7 @@ msgstr "" msgid "Interval" msgstr "" -#: netbox/core/tables/jobs.py:49 +#: netbox/core/tables/jobs.py:49 netbox/core/views.py:255 msgid "Log Entries" msgstr "" @@ -2681,7 +2618,7 @@ msgstr "" msgid "Version" msgstr "" -#: netbox/core/tables/plugins.py:21 netbox/templates/core/datafile.html:32 +#: netbox/core/tables/plugins.py:21 msgid "Last Updated" msgstr "" @@ -2777,7 +2714,60 @@ msgstr "" msgid "No workers found" msgstr "" -#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:447 +#: netbox/core/ui/panels.py:13 +msgid "Last synced" +msgstr "" + +#: netbox/core/ui/panels.py:29 +msgid "Backend" +msgstr "" + +#: netbox/core/ui/panels.py:33 netbox/extras/tables/tables.py:234 +#: netbox/extras/tables/tables.py:604 netbox/extras/tables/tables.py:634 +#: netbox/extras/tables/tables.py:676 +#: netbox/templates/core/inc/datafile_panel.html:4 +#: netbox/templates/core/inc/datafile_panel.html:17 +#: netbox/templates/extras/configtemplate.html:47 +#: netbox/templates/extras/object_render_config.html:23 +#: netbox/templates/generic/bulk_import.html:35 +msgid "Data File" +msgstr "" + +#: netbox/core/ui/panels.py:38 +msgid "SHA256 hash" +msgstr "" + +#: netbox/core/ui/panels.py:43 +msgid "Content" +msgstr "" + +#: netbox/core/ui/panels.py:47 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 +msgid "Job" +msgstr "" + +#: netbox/core/ui/panels.py:50 netbox/core/ui/panels.py:79 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 +#: netbox/extras/forms/filtersets.py:335 netbox/extras/forms/model_forms.py:338 +#: netbox/extras/forms/model_forms.py:398 +#: netbox/extras/forms/model_forms.py:435 +#: netbox/tenancy/forms/filtersets.py:121 +msgid "Object type" +msgstr "" + +#: netbox/core/ui/panels.py:56 +msgid "Created by" +msgstr "" + +#: netbox/core/ui/panels.py:60 +msgid "Scheduling" +msgstr "" + +#: netbox/core/ui/panels.py:69 netbox/users/ui/panels.py:53 +msgid "Change" +msgstr "" + +#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "" @@ -2787,55 +2777,62 @@ msgstr "" msgid "Job {id} not found." msgstr "" -#: netbox/core/views.py:95 +#: netbox/core/views.py:125 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "" -#: netbox/core/views.py:199 netbox/templates/extras/htmx/script_result.html:43 +#: netbox/core/views.py:237 netbox/extras/forms/filtersets.py:179 +#: netbox/extras/forms/filtersets.py:380 netbox/extras/forms/filtersets.py:403 +#: netbox/extras/forms/filtersets.py:499 netbox/extras/forms/model_forms.py:696 +#: netbox/templates/extras/eventrule.html:84 +msgid "Data" +msgstr "" + +#: netbox/core/views.py:248 netbox/templates/extras/htmx/script_result.html:43 msgid "Log" msgstr "" -#: netbox/core/views.py:383 +#: netbox/core/views.py:467 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "" -#: netbox/core/views.py:486 +#: netbox/core/views.py:570 #, python-brace-format msgid "Job {id} has been deleted." msgstr "" -#: netbox/core/views.py:488 +#: netbox/core/views.py:572 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "" -#: netbox/core/views.py:497 +#: netbox/core/views.py:581 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "" -#: netbox/core/views.py:506 +#: netbox/core/views.py:590 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "" -#: netbox/core/views.py:515 +#: netbox/core/views.py:599 #, python-brace-format msgid "Job {id} has been stopped." msgstr "" -#: netbox/core/views.py:517 +#: netbox/core/views.py:601 #, python-brace-format msgid "Failed to stop job {id}" msgstr "" -#: netbox/core/views.py:671 +#: netbox/core/views.py:755 msgid "Plugins catalog could not be loaded" msgstr "" -#: netbox/core/views.py:707 +#: netbox/core/views.py:791 #, python-brace-format msgid "Plugin {name} not found" msgstr "" @@ -2985,9 +2982,6 @@ msgstr "" #: netbox/ipam/forms/model_forms.py:758 netbox/ipam/tables/fhrp.py:56 #: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/services.py:42 #: netbox/netbox/tables/tables.py:329 netbox/netbox/ui/panels.py:207 -#: netbox/templates/ipam/service.html:30 -#: netbox/templates/tenancy/contactgroup.html:29 -#: netbox/templates/tenancy/tenantgroup.html:37 #: netbox/tenancy/forms/bulk_edit.py:33 netbox/tenancy/forms/bulk_edit.py:62 #: netbox/tenancy/forms/bulk_import.py:31 #: netbox/tenancy/forms/bulk_import.py:64 @@ -3904,12 +3898,11 @@ msgstr "" #: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:303 #: netbox/ipam/forms/model_forms.py:466 netbox/ipam/forms/model_forms.py:480 #: netbox/ipam/forms/model_forms.py:494 netbox/ipam/models/ip.py:224 -#: netbox/ipam/models/ip.py:518 netbox/ipam/models/ip.py:747 +#: netbox/ipam/models/ip.py:528 netbox/ipam/models/ip.py:757 #: netbox/ipam/models/vrfs.py:61 netbox/ipam/tables/ip.py:187 #: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:311 -#: netbox/ipam/tables/ip.py:413 netbox/templates/ipam/ipaddress.html:18 -#: netbox/templates/ipam/iprange.html:47 netbox/templates/ipam/prefix.html:19 -#: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 +#: netbox/ipam/tables/ip.py:413 netbox/ipam/ui/panels.py:102 +#: netbox/ipam/ui/panels.py:111 netbox/ipam/ui/panels.py:139 #: netbox/virtualization/forms/bulk_edit.py:226 #: netbox/virtualization/forms/bulk_import.py:218 #: netbox/virtualization/forms/filtersets.py:250 @@ -3934,7 +3927,7 @@ msgstr "" #: netbox/dcim/filtersets.py:2092 netbox/dcim/forms/filtersets.py:1692 #: netbox/dcim/tables/devices.py:607 netbox/dcim/ui/panels.py:487 #: netbox/ipam/filtersets.py:1087 netbox/ipam/forms/filtersets.py:613 -#: netbox/ipam/tables/vlans.py:116 netbox/templates/ipam/vlan.html:82 +#: netbox/ipam/tables/vlans.py:116 netbox/ipam/ui/panels.py:206 #: netbox/virtualization/forms/filtersets.py:255 #: netbox/vpn/forms/bulk_import.py:285 netbox/vpn/forms/filtersets.py:268 #: netbox/vpn/forms/model_forms.py:407 netbox/vpn/forms/model_forms.py:425 @@ -3951,7 +3944,6 @@ msgstr "" #: netbox/dcim/forms/model_forms.py:1572 #: netbox/dcim/models/device_components.py:668 #: netbox/ipam/forms/filtersets.py:531 netbox/ipam/forms/model_forms.py:703 -#: netbox/templates/ipam/vlantranslationpolicy.html:11 #: netbox/virtualization/forms/bulk_edit.py:231 #: netbox/virtualization/forms/filtersets.py:265 #: netbox/virtualization/forms/model_forms.py:364 @@ -4204,7 +4196,7 @@ msgstr "" #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 #: netbox/templates/extras/tableconfig.html:41 -#: netbox/templates/extras/tag.html:32 netbox/templates/ipam/role.html:30 +#: netbox/templates/extras/tag.html:32 msgid "Weight" msgstr "" @@ -4645,7 +4637,7 @@ msgstr "" #: netbox/dcim/forms/model_forms.py:1579 netbox/dcim/ui/panels.py:499 #: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:313 #: netbox/ipam/forms/filtersets.py:191 netbox/netbox/navigation/menu.py:112 -#: netbox/templates/ipam/prefix.html:91 +#: netbox/templates/ipam/panels/prefix_addressing.html:4 #: netbox/virtualization/forms/filtersets.py:218 #: netbox/virtualization/forms/model_forms.py:369 #: netbox/virtualization/ui/panels.py:68 @@ -5485,9 +5477,7 @@ msgstr "" #: netbox/ipam/forms/bulk_edit.py:382 netbox/ipam/forms/filtersets.py:195 #: netbox/ipam/forms/model_forms.py:225 netbox/ipam/forms/model_forms.py:603 #: netbox/ipam/forms/model_forms.py:613 netbox/ipam/tables/ip.py:193 -#: netbox/ipam/tables/vlans.py:40 netbox/templates/ipam/prefix.html:48 -#: netbox/templates/ipam/vlangroup.html:38 -#: netbox/virtualization/forms/bulk_edit.py:74 +#: netbox/ipam/tables/vlans.py:40 netbox/virtualization/forms/bulk_edit.py:74 #: netbox/virtualization/forms/filtersets.py:53 #: netbox/virtualization/forms/model_forms.py:73 #: netbox/virtualization/tables/clusters.py:81 @@ -5774,9 +5764,9 @@ msgid "" msgstr "" #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "" @@ -6278,7 +6268,7 @@ msgstr "" #: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 #: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 #: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 -#: netbox/ipam/tables/vlans.py:109 netbox/templates/ipam/vlan.html:77 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "" @@ -7443,7 +7433,7 @@ msgstr "" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "" @@ -7568,10 +7558,11 @@ msgstr "" #: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 #: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 -#: netbox/ipam/views.py:690 netbox/ipam/views.py:791 -#: netbox/netbox/navigation/menu.py:168 netbox/netbox/navigation/menu.py:170 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 +#: netbox/netbox/navigation/menu.py:170 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "" @@ -7584,7 +7575,7 @@ msgstr "" msgid "MAC Addresses" msgstr "" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" @@ -7937,8 +7928,8 @@ msgstr "" msgid "Child Regions" msgstr "" -#: netbox/dcim/views.py:391 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "" @@ -7963,7 +7954,7 @@ msgid "Child Platforms" msgstr "" #: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "" @@ -7991,7 +7982,7 @@ msgstr "" #: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 #: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 -#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1095 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 #: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 msgid "VLANs" msgstr "" @@ -8133,9 +8124,9 @@ msgstr "" msgid "No" msgstr "" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/tenancy/forms/bulk_import.py:91 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "" @@ -8581,14 +8572,6 @@ msgstr "" msgid "Field data type (e.g. text, integer, etc.)" msgstr "" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "" @@ -8713,14 +8696,13 @@ msgstr "" #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "" @@ -8746,13 +8728,6 @@ msgstr "" msgid "Choices" msgstr "" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -9966,17 +9941,6 @@ msgstr "" msgid "As Attachment" msgstr "" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -9992,9 +9956,8 @@ msgstr "" msgid "Filename" msgstr "" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "" @@ -10188,7 +10151,7 @@ msgstr "" msgid "Plaintext" msgstr "" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "" @@ -10251,7 +10214,6 @@ msgstr "" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "" @@ -10301,7 +10263,6 @@ msgstr "" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "" @@ -10358,7 +10319,7 @@ msgstr "" msgid "IP address (ID)" msgstr "" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "" @@ -10425,8 +10386,8 @@ msgstr "" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "" @@ -10437,15 +10398,13 @@ msgstr "" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10460,7 +10419,7 @@ msgid "Prefix length" msgstr "" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "" @@ -10479,23 +10438,21 @@ msgstr "" msgid "Treat as populated" msgstr "" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "" @@ -10515,9 +10472,9 @@ msgid "Authentication key" msgstr "" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 netbox/wireless/forms/bulk_edit.py:135 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 +#: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 #: netbox/wireless/forms/model_forms.py:57 @@ -10545,23 +10502,22 @@ msgstr "" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "" @@ -10590,7 +10546,7 @@ msgstr "" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 -#: netbox/ipam/forms/model_forms.py:507 netbox/templates/ipam/fhrpgroup.html:19 +#: netbox/ipam/forms/model_forms.py:507 msgid "FHRP Group" msgstr "" @@ -10696,7 +10652,7 @@ msgid "Exported by VRF" msgstr "" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "" @@ -10705,7 +10661,7 @@ msgstr "" msgid "Address family" msgstr "" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "" @@ -10733,7 +10689,7 @@ msgstr "" msgid "Parent Prefix" msgstr "" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "" @@ -10754,25 +10710,24 @@ msgid "Q-in-Q/802.1ad" msgstr "" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "" @@ -10819,7 +10774,7 @@ msgstr "" msgid "Assignment already exists" msgstr "" -#: netbox/ipam/forms/model_forms.py:594 netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "" @@ -10835,7 +10790,6 @@ msgid "" msgstr "" #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "" @@ -10846,7 +10800,6 @@ msgid "" msgstr "" #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "" @@ -11015,7 +10968,7 @@ msgstr "" msgid "All IP addresses within this prefix are considered usable" msgstr "" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "" @@ -11027,12 +10980,12 @@ msgstr "" msgid "Cannot create prefix with /0 mask." msgstr "" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "" @@ -11041,136 +10994,136 @@ msgstr "" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "" -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "" -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "" -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "" -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" msgstr "" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" msgstr "" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "" @@ -11355,17 +11308,17 @@ msgid "Added" msgstr "" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "" @@ -11392,7 +11345,7 @@ msgid "Pool" msgstr "" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "" @@ -11400,7 +11353,7 @@ msgstr "" msgid "Start address" msgstr "" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "" @@ -11430,17 +11383,14 @@ msgid "VID" msgstr "" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "" @@ -11460,11 +11410,72 @@ msgstr "" msgid "Export Targets" msgstr "" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "" + #: netbox/ipam/utils.py:30 msgid "1 IP available" msgstr "" @@ -11499,26 +11510,79 @@ msgid "" "are allowed in DNS names" msgstr "" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "" @@ -12013,7 +12077,6 @@ msgid "Contact Groups" msgstr "" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "" @@ -12091,7 +12154,6 @@ msgid "VLAN Translation Policies" msgstr "" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "" @@ -12285,7 +12347,7 @@ msgid "Journal Entries" msgstr "" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "" @@ -12920,8 +12982,7 @@ msgid "Account Details" msgstr "" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "" @@ -12945,8 +13006,8 @@ msgstr "" #: netbox/templates/account/profile.html:52 #: netbox/templates/circuits/inc/circuit_termination.html:65 #: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/panels/component_inventory_items.html:35 #: netbox/templates/dcim/panels/installed_device.html:19 @@ -13106,14 +13167,6 @@ msgstr "" msgid "Add Virtual Circuit" msgstr "" -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13136,31 +13189,11 @@ msgstr "" msgid "Changed" msgstr "" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "" @@ -13219,70 +13252,11 @@ msgstr "" msgid "Data Synced" msgstr "" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -13298,6 +13272,59 @@ msgstr "" msgid "Indefinite" msgstr "" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "" @@ -14254,6 +14281,10 @@ msgstr "" msgid "Journal Entry" msgstr "" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "" @@ -14727,42 +14758,14 @@ msgstr "" msgid "Log In" msgstr "" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "" - -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" msgstr "" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 @@ -14798,15 +14801,6 @@ msgstr "" msgid "Show All" msgstr "" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "" @@ -14823,51 +14817,43 @@ msgstr "" msgid "Bulk Add IP Addresses" msgstr "" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "" @@ -14879,58 +14865,14 @@ msgstr "" msgid "Hide Depth Indicators" msgstr "" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -14990,58 +14932,14 @@ msgid "" "Click here to attempt loading NetBox again." msgstr "" -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 netbox/tenancy/forms/model_forms.py:32 -#: netbox/tenancy/tables/columns.py:37 netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -15208,6 +15106,19 @@ msgstr "" msgid "Contact role (slug)" msgstr "" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "" @@ -15240,6 +15151,15 @@ msgstr "" msgid "Remove groups" msgstr "" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group 1," @@ -15250,6 +15170,16 @@ msgstr "" msgid "Assigned contact" msgstr "" +#: netbox/tenancy/forms/filtersets.py:40 netbox/tenancy/forms/model_forms.py:32 +#: netbox/tenancy/tables/columns.py:37 netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "" @@ -15351,6 +15281,14 @@ msgstr "" msgid "Contact Description" msgstr "" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "" + #: netbox/users/choices.py:15 msgid "v1" msgstr "" From f30786d8fed1acd6a064c552b253b7eec439567c Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 27 Mar 2026 16:42:43 -0400 Subject: [PATCH 20/41] Fixes #21763: Replace M2M selection field with separate add/remove fields --- netbox/circuits/forms/model_forms.py | 23 ++++++++++--- netbox/circuits/tests/test_views.py | 2 +- netbox/dcim/forms/model_forms.py | 24 +++++++++++--- netbox/dcim/tests/test_views.py | 2 +- netbox/ipam/forms/model_forms.py | 32 ++++++++++--------- netbox/netbox/forms/model_forms.py | 12 +++++++ netbox/netbox/views/generic/object_views.py | 11 +++++++ netbox/utilities/forms/rendering.py | 16 ++++++++++ netbox/utilities/templatetags/form_helpers.py | 9 +++++- 9 files changed, 103 insertions(+), 28 deletions(-) diff --git a/netbox/circuits/forms/model_forms.py b/netbox/circuits/forms/model_forms.py index 5a48455d8..a84906ffb 100644 --- a/netbox/circuits/forms/model_forms.py +++ b/netbox/circuits/forms/model_forms.py @@ -22,7 +22,7 @@ from utilities.forms.fields import ( SlugField, ) from utilities.forms.mixins import DistanceValidationMixin -from utilities.forms.rendering import FieldSet, InlineFields +from utilities.forms.rendering import FieldSet, InlineFields, M2MAddRemoveFields from utilities.forms.widgets import DatePicker, HTMXSelect, NumberWithOptions from utilities.templatetags.builtins.filters import bettertitle @@ -43,22 +43,35 @@ __all__ = ( class ProviderForm(PrimaryModelForm): slug = SlugField() - asns = DynamicModelMultipleChoiceField( + add_asns = DynamicModelMultipleChoiceField( queryset=ASN.objects.all(), - label=_('ASNs'), + label=_('Add ASNs'), + required=False + ) + remove_asns = DynamicModelMultipleChoiceField( + queryset=ASN.objects.all(), + label=_('Remove ASNs'), required=False ) fieldsets = ( - FieldSet('name', 'slug', 'asns', 'description', 'tags'), + FieldSet('name', 'slug', M2MAddRemoveFields('asns'), 'description', 'tags'), ) class Meta: model = Provider fields = [ - 'name', 'slug', 'asns', 'description', 'owner', 'comments', 'tags', + 'name', 'slug', 'description', 'owner', 'comments', 'tags', ] + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if self.instance.pk: + self.fields['remove_asns'].widget.add_query_param('provider_id', self.instance.pk) + else: + self.fields.pop('remove_asns') + self.fields['add_asns'].label = _('ASNs') + class ProviderAccountForm(PrimaryModelForm): provider = DynamicModelChoiceField( diff --git a/netbox/circuits/tests/test_views.py b/netbox/circuits/tests/test_views.py index 6ced9a958..3a3e2a50c 100644 --- a/netbox/circuits/tests/test_views.py +++ b/netbox/circuits/tests/test_views.py @@ -42,7 +42,7 @@ class ProviderTestCase(ViewTestCases.PrimaryObjectViewTestCase): cls.form_data = { 'name': 'Provider X', 'slug': 'provider-x', - 'asns': [asns[6].pk, asns[7].pk], + 'add_asns': [asns[6].pk, asns[7].pk], 'comments': 'Another provider', 'tags': [t.pk for t in tags], } diff --git a/netbox/dcim/forms/model_forms.py b/netbox/dcim/forms/model_forms.py index 741315323..1507bdfe3 100644 --- a/netbox/dcim/forms/model_forms.py +++ b/netbox/dcim/forms/model_forms.py @@ -23,7 +23,7 @@ from utilities.forms.fields import ( NumericArrayField, SlugField, ) -from utilities.forms.rendering import FieldSet, InlineFields, TabbedGroups +from utilities.forms.rendering import FieldSet, InlineFields, M2MAddRemoveFields, TabbedGroups from utilities.forms.widgets import ( APISelect, ClearableFileInput, @@ -137,9 +137,14 @@ class SiteForm(TenancyForm, PrimaryModelForm): required=False, quick_add=True ) - asns = DynamicModelMultipleChoiceField( + add_asns = DynamicModelMultipleChoiceField( queryset=ASN.objects.all(), - label=_('ASNs'), + label=_('Add ASNs'), + required=False + ) + remove_asns = DynamicModelMultipleChoiceField( + queryset=ASN.objects.all(), + label=_('Remove ASNs'), required=False ) slug = SlugField() @@ -151,7 +156,8 @@ class SiteForm(TenancyForm, PrimaryModelForm): fieldsets = ( FieldSet( - 'name', 'slug', 'status', 'region', 'group', 'facility', 'asns', 'time_zone', 'description', 'tags', + 'name', 'slug', 'status', 'region', 'group', 'facility', M2MAddRemoveFields('asns'), 'time_zone', + 'description', 'tags', name=_('Site') ), FieldSet('tenant_group', 'tenant', name=_('Tenancy')), @@ -161,7 +167,7 @@ class SiteForm(TenancyForm, PrimaryModelForm): class Meta: model = Site fields = ( - 'name', 'slug', 'status', 'region', 'group', 'tenant_group', 'tenant', 'facility', 'asns', 'time_zone', + 'name', 'slug', 'status', 'region', 'group', 'tenant_group', 'tenant', 'facility', 'time_zone', 'description', 'physical_address', 'shipping_address', 'latitude', 'longitude', 'owner', 'comments', 'tags', ) widgets = { @@ -177,6 +183,14 @@ class SiteForm(TenancyForm, PrimaryModelForm): ), } + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if self.instance.pk: + self.fields['remove_asns'].widget.add_query_param('site_id', self.instance.pk) + else: + self.fields.pop('remove_asns') + self.fields['add_asns'].label = _('ASNs') + class LocationForm(TenancyForm, NestedGroupModelForm): site = DynamicModelChoiceField( diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index 1aac72875..3d7426013 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -160,7 +160,7 @@ class SiteTestCase(ViewTestCases.PrimaryObjectViewTestCase): 'group': groups[1].pk, 'tenant': None, 'facility': 'Facility X', - 'asns': [asns[6].pk, asns[7].pk], + 'add_asns': [asns[6].pk, asns[7].pk], 'time_zone': ZoneInfo('UTC'), 'description': 'Site description', 'physical_address': '742 Evergreen Terrace, Springfield, USA', diff --git a/netbox/ipam/forms/model_forms.py b/netbox/ipam/forms/model_forms.py index 1bdcff2d8..ff3cac503 100644 --- a/netbox/ipam/forms/model_forms.py +++ b/netbox/ipam/forms/model_forms.py @@ -21,7 +21,7 @@ from utilities.forms.fields import ( NumericArrayField, NumericRangeArrayField, ) -from utilities.forms.rendering import FieldSet, InlineFields, ObjectAttribute, TabbedGroups +from utilities.forms.rendering import FieldSet, InlineFields, M2MAddRemoveFields, ObjectAttribute, TabbedGroups from utilities.forms.utils import get_field_value from utilities.forms.widgets import DatePicker, HTMXSelect from utilities.templatetags.builtins.filters import bettertitle @@ -152,36 +152,38 @@ class ASNForm(TenancyForm, PrimaryModelForm): label=_('RIR'), quick_add=True ) - sites = DynamicModelMultipleChoiceField( + add_sites = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), - label=_('Sites'), + label=_('Add sites'), + required=False + ) + remove_sites = DynamicModelMultipleChoiceField( + queryset=Site.objects.all(), + label=_('Remove sites'), required=False ) fieldsets = ( - FieldSet('asn', 'rir', 'sites', 'description', 'tags', name=_('ASN')), + FieldSet('asn', 'rir', M2MAddRemoveFields('sites'), 'description', 'tags', name=_('ASN')), FieldSet('tenant_group', 'tenant', name=_('Tenancy')), ) class Meta: model = ASN fields = [ - 'asn', 'rir', 'sites', 'tenant_group', 'tenant', 'description', 'owner', 'comments', 'tags' + 'asn', 'rir', 'tenant_group', 'tenant', 'description', 'owner', 'comments', 'tags' ] widgets = { 'date_added': DatePicker(), } - def __init__(self, data=None, instance=None, *args, **kwargs): - super().__init__(data=data, instance=instance, *args, **kwargs) - - if self.instance and self.instance.pk is not None: - self.fields['sites'].initial = self.instance.sites.all().values_list('id', flat=True) - - def save(self, *args, **kwargs): - instance = super().save(*args, **kwargs) - instance.sites.set(self.cleaned_data['sites']) - return instance + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if self.instance.pk: + self.fields['remove_sites'].widget.add_query_param('asn_id', self.instance.pk) + else: + self.fields.pop('remove_sites') + self.fields['add_sites'].label = _('Sites') class RoleForm(OrganizationalModelForm): diff --git a/netbox/netbox/forms/model_forms.py b/netbox/netbox/forms/model_forms.py index a500365f9..97215d55a 100644 --- a/netbox/netbox/forms/model_forms.py +++ b/netbox/netbox/forms/model_forms.py @@ -75,7 +75,19 @@ class NetBoxModelForm( self.instance._m2m_values = {} for field in self.instance._meta.local_many_to_many: if field.name in self.cleaned_data: + # Standard M2M field (set-based) self.instance._m2m_values[field.name] = list(self.cleaned_data[field.name]) + elif f'add_{field.name}' in self.cleaned_data or f'remove_{field.name}' in self.cleaned_data: + # Add/remove M2M field pair: compute the effective set + current = set(getattr(self.instance, field.name).values_list('pk', flat=True)) \ + if self.instance.pk else set() + add_values = set( + v.pk for v in self.cleaned_data.get(f'add_{field.name}', []) + ) + remove_values = set( + v.pk for v in self.cleaned_data.get(f'remove_{field.name}', []) + ) + self.instance._m2m_values[field.name] = list((current | add_values) - remove_values) return super()._post_clean() diff --git a/netbox/netbox/views/generic/object_views.py b/netbox/netbox/views/generic/object_views.py index c6630d341..2aaa92830 100644 --- a/netbox/netbox/views/generic/object_views.py +++ b/netbox/netbox/views/generic/object_views.py @@ -299,6 +299,17 @@ class ObjectEditView(GetReturnURLMixin, BaseObjectView): object_created = form.instance.pk is None obj = form.save() + # Process any add/remove M2M field pairs + for field in obj._meta.local_many_to_many: + add_key = f'add_{field.name}' + remove_key = f'remove_{field.name}' + if add_key in form.cleaned_data or remove_key in form.cleaned_data: + m2m_manager = getattr(obj, field.name) + if add_values := form.cleaned_data.get(add_key): + m2m_manager.add(*add_values) + if remove_values := form.cleaned_data.get(remove_key): + m2m_manager.remove(*remove_values) + # Check that the new object conforms with any assigned object-level permissions if not self.queryset.filter(pk=obj.pk).exists(): raise PermissionsViolation() diff --git a/netbox/utilities/forms/rendering.py b/netbox/utilities/forms/rendering.py index 723e911e6..17235e107 100644 --- a/netbox/utilities/forms/rendering.py +++ b/netbox/utilities/forms/rendering.py @@ -5,6 +5,7 @@ from functools import cached_property __all__ = ( 'FieldSet', 'InlineFields', + 'M2MAddRemoveFields', 'ObjectAttribute', 'TabbedGroups', ) @@ -73,6 +74,21 @@ class TabbedGroups: ] +class M2MAddRemoveFields: + """ + Represents an add/remove field pair for a many-to-many relationship. Rather than rendering + a single multi-select pre-populated with all current values (which can crash the browser for + large datasets), this renders two fields: one for adding new relations and one for removing + existing relations. + + Parameters: + name: The name of the M2M field on the model (e.g. 'asns'). The form must define + corresponding 'add_{name}' and 'remove_{name}' fields. + """ + def __init__(self, name): + self.name = name + + class ObjectAttribute: """ Renders the value for a specific attribute on the form's instance. This may be used to diff --git a/netbox/utilities/templatetags/form_helpers.py b/netbox/utilities/templatetags/form_helpers.py index 0a3078ccf..974fcc633 100644 --- a/netbox/utilities/templatetags/form_helpers.py +++ b/netbox/utilities/templatetags/form_helpers.py @@ -1,6 +1,6 @@ from django import template -from utilities.forms.rendering import InlineFields, ObjectAttribute, TabbedGroups +from utilities.forms.rendering import InlineFields, M2MAddRemoveFields, ObjectAttribute, TabbedGroups __all__ = ( 'getfield', @@ -80,6 +80,13 @@ def render_fieldset(form, fieldset): ('tabs', None, tabs) ) + elif type(item) is M2MAddRemoveFields: + for field_name in (f'add_{item.name}', f'remove_{item.name}'): + if field_name in form.fields: + rows.append( + ('field', None, [form[field_name]]) + ) + elif type(item) is ObjectAttribute: value = getattr(form.instance, item.name) label = value._meta.verbose_name if hasattr(value, '_meta') else item.name From d5f37d7a87eb3d276daceff6daeecb231d1435b7 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 30 Mar 2026 09:07:15 -0400 Subject: [PATCH 21/41] Use add/remove fields only when assignment count is 100+ --- netbox/circuits/forms/model_forms.py | 14 +++++- netbox/circuits/tests/test_views.py | 2 +- netbox/dcim/forms/model_forms.py | 14 +++++- netbox/dcim/tests/test_views.py | 2 +- netbox/ipam/forms/model_forms.py | 14 +++++- netbox/netbox/forms/model_forms.py | 43 ++++++++++++++----- netbox/netbox/views/generic/object_views.py | 11 ----- netbox/utilities/forms/rendering.py | 18 +++++--- netbox/utilities/templatetags/form_helpers.py | 17 +++++--- 9 files changed, 95 insertions(+), 40 deletions(-) diff --git a/netbox/circuits/forms/model_forms.py b/netbox/circuits/forms/model_forms.py index a84906ffb..dfc41f590 100644 --- a/netbox/circuits/forms/model_forms.py +++ b/netbox/circuits/forms/model_forms.py @@ -43,6 +43,11 @@ __all__ = ( class ProviderForm(PrimaryModelForm): slug = SlugField() + asns = DynamicModelMultipleChoiceField( + queryset=ASN.objects.all(), + label=_('ASNs'), + required=False + ) add_asns = DynamicModelMultipleChoiceField( queryset=ASN.objects.all(), label=_('Add ASNs'), @@ -66,11 +71,16 @@ class ProviderForm(PrimaryModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if self.instance.pk: + if self.instance.pk and self.instance.asns.count() >= M2MAddRemoveFields.THRESHOLD: + # Add/remove mode for large M2M sets + self.fields.pop('asns') self.fields['remove_asns'].widget.add_query_param('provider_id', self.instance.pk) else: + # Simple mode for new objects or small M2M sets + self.fields.pop('add_asns') self.fields.pop('remove_asns') - self.fields['add_asns'].label = _('ASNs') + if self.instance.pk: + self.initial['asns'] = list(self.instance.asns.values_list('pk', flat=True)) class ProviderAccountForm(PrimaryModelForm): diff --git a/netbox/circuits/tests/test_views.py b/netbox/circuits/tests/test_views.py index 3a3e2a50c..6ced9a958 100644 --- a/netbox/circuits/tests/test_views.py +++ b/netbox/circuits/tests/test_views.py @@ -42,7 +42,7 @@ class ProviderTestCase(ViewTestCases.PrimaryObjectViewTestCase): cls.form_data = { 'name': 'Provider X', 'slug': 'provider-x', - 'add_asns': [asns[6].pk, asns[7].pk], + 'asns': [asns[6].pk, asns[7].pk], 'comments': 'Another provider', 'tags': [t.pk for t in tags], } diff --git a/netbox/dcim/forms/model_forms.py b/netbox/dcim/forms/model_forms.py index 1507bdfe3..ee428d241 100644 --- a/netbox/dcim/forms/model_forms.py +++ b/netbox/dcim/forms/model_forms.py @@ -137,6 +137,11 @@ class SiteForm(TenancyForm, PrimaryModelForm): required=False, quick_add=True ) + asns = DynamicModelMultipleChoiceField( + queryset=ASN.objects.all(), + label=_('ASNs'), + required=False + ) add_asns = DynamicModelMultipleChoiceField( queryset=ASN.objects.all(), label=_('Add ASNs'), @@ -185,11 +190,16 @@ class SiteForm(TenancyForm, PrimaryModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if self.instance.pk: + if self.instance.pk and self.instance.asns.count() >= M2MAddRemoveFields.THRESHOLD: + # Add/remove mode for large M2M sets + self.fields.pop('asns') self.fields['remove_asns'].widget.add_query_param('site_id', self.instance.pk) else: + # Simple mode for new objects or small M2M sets + self.fields.pop('add_asns') self.fields.pop('remove_asns') - self.fields['add_asns'].label = _('ASNs') + if self.instance.pk: + self.initial['asns'] = list(self.instance.asns.values_list('pk', flat=True)) class LocationForm(TenancyForm, NestedGroupModelForm): diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index 3d7426013..1aac72875 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -160,7 +160,7 @@ class SiteTestCase(ViewTestCases.PrimaryObjectViewTestCase): 'group': groups[1].pk, 'tenant': None, 'facility': 'Facility X', - 'add_asns': [asns[6].pk, asns[7].pk], + 'asns': [asns[6].pk, asns[7].pk], 'time_zone': ZoneInfo('UTC'), 'description': 'Site description', 'physical_address': '742 Evergreen Terrace, Springfield, USA', diff --git a/netbox/ipam/forms/model_forms.py b/netbox/ipam/forms/model_forms.py index ff3cac503..2900a1ff3 100644 --- a/netbox/ipam/forms/model_forms.py +++ b/netbox/ipam/forms/model_forms.py @@ -152,6 +152,11 @@ class ASNForm(TenancyForm, PrimaryModelForm): label=_('RIR'), quick_add=True ) + sites = DynamicModelMultipleChoiceField( + queryset=Site.objects.all(), + label=_('Sites'), + required=False + ) add_sites = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), label=_('Add sites'), @@ -179,11 +184,16 @@ class ASNForm(TenancyForm, PrimaryModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if self.instance.pk: + if self.instance.pk and self.instance.sites.count() >= M2MAddRemoveFields.THRESHOLD: + # Add/remove mode for large M2M sets + self.fields.pop('sites') self.fields['remove_sites'].widget.add_query_param('asn_id', self.instance.pk) else: + # Simple mode for new objects or small M2M sets + self.fields.pop('add_sites') self.fields.pop('remove_sites') - self.fields['add_sites'].label = _('Sites') + if self.instance.pk: + self.initial['sites'] = list(self.instance.sites.values_list('pk', flat=True)) class RoleForm(OrganizationalModelForm): diff --git a/netbox/netbox/forms/model_forms.py b/netbox/netbox/forms/model_forms.py index 97215d55a..45948e174 100644 --- a/netbox/netbox/forms/model_forms.py +++ b/netbox/netbox/forms/model_forms.py @@ -2,6 +2,8 @@ import json from django import forms from django.contrib.contenttypes.models import ContentType +from django.db import models +from django.db.models.fields.related import ManyToManyRel from extras.choices import * from utilities.forms.fields import CommentField, SlugField @@ -71,26 +73,47 @@ class NetBoxModelForm( def _post_clean(self): """ Override BaseModelForm's _post_clean() to store many-to-many field values on the model instance. + Handles both forward and reverse M2M relationships, and supports both simple (single field) + and add/remove (dual field) modes. """ self.instance._m2m_values = {} - for field in self.instance._meta.local_many_to_many: - if field.name in self.cleaned_data: - # Standard M2M field (set-based) - self.instance._m2m_values[field.name] = list(self.cleaned_data[field.name]) - elif f'add_{field.name}' in self.cleaned_data or f'remove_{field.name}' in self.cleaned_data: - # Add/remove M2M field pair: compute the effective set - current = set(getattr(self.instance, field.name).values_list('pk', flat=True)) \ + for field in self.instance._meta.get_fields(): + # Determine the accessor name for this M2M relationship + if isinstance(field, models.ManyToManyField): + name = field.name + elif isinstance(field, ManyToManyRel): + name = field.get_accessor_name() + else: + continue + + if name in self.cleaned_data: + # Simple mode: single multi-select field + self.instance._m2m_values[name] = list(self.cleaned_data[name]) + elif f'add_{name}' in self.cleaned_data or f'remove_{name}' in self.cleaned_data: + # Add/remove mode: compute the effective set + current = set(getattr(self.instance, name).values_list('pk', flat=True)) \ if self.instance.pk else set() add_values = set( - v.pk for v in self.cleaned_data.get(f'add_{field.name}', []) + v.pk for v in self.cleaned_data.get(f'add_{name}', []) ) remove_values = set( - v.pk for v in self.cleaned_data.get(f'remove_{field.name}', []) + v.pk for v in self.cleaned_data.get(f'remove_{name}', []) ) - self.instance._m2m_values[field.name] = list((current | add_values) - remove_values) + self.instance._m2m_values[name] = list((current | add_values) - remove_values) return super()._post_clean() + def _save_m2m(self): + """ + Save many-to-many field values that were computed in _post_clean(). This handles M2M fields + not included in Meta.fields (e.g. those managed via M2MAddRemoveFields). + """ + super()._save_m2m() + meta_fields = self._meta.fields + for field_name, values in self.instance._m2m_values.items(): + if not meta_fields or field_name not in meta_fields: + getattr(self.instance, field_name).set(values) + class PrimaryModelForm(OwnerMixin, NetBoxModelForm): """ diff --git a/netbox/netbox/views/generic/object_views.py b/netbox/netbox/views/generic/object_views.py index 2aaa92830..c6630d341 100644 --- a/netbox/netbox/views/generic/object_views.py +++ b/netbox/netbox/views/generic/object_views.py @@ -299,17 +299,6 @@ class ObjectEditView(GetReturnURLMixin, BaseObjectView): object_created = form.instance.pk is None obj = form.save() - # Process any add/remove M2M field pairs - for field in obj._meta.local_many_to_many: - add_key = f'add_{field.name}' - remove_key = f'remove_{field.name}' - if add_key in form.cleaned_data or remove_key in form.cleaned_data: - m2m_manager = getattr(obj, field.name) - if add_values := form.cleaned_data.get(add_key): - m2m_manager.add(*add_values) - if remove_values := form.cleaned_data.get(remove_key): - m2m_manager.remove(*remove_values) - # Check that the new object conforms with any assigned object-level permissions if not self.queryset.filter(pk=obj.pk).exists(): raise PermissionsViolation() diff --git a/netbox/utilities/forms/rendering.py b/netbox/utilities/forms/rendering.py index 17235e107..c7bb324d8 100644 --- a/netbox/utilities/forms/rendering.py +++ b/netbox/utilities/forms/rendering.py @@ -76,15 +76,21 @@ class TabbedGroups: class M2MAddRemoveFields: """ - Represents an add/remove field pair for a many-to-many relationship. Rather than rendering - a single multi-select pre-populated with all current values (which can crash the browser for - large datasets), this renders two fields: one for adding new relations and one for removing - existing relations. + Represents a many-to-many relationship field on a form. It supports two rendering modes: + + 1. Simple mode: A single multi-select field pre-populated with current values. This is used + for new objects or existing objects with fewer than THRESHOLD current assignments. + 2. Add/remove mode: Two separate fields for adding and removing relations. This avoids + crashing the browser when an object has a very large number of current assignments. + + The form must define three fields: '{name}', 'add_{name}', and 'remove_{name}'. The form's + __init__() method determines the mode and removes the unused fields. Parameters: - name: The name of the M2M field on the model (e.g. 'asns'). The form must define - corresponding 'add_{name}' and 'remove_{name}' fields. + name: The name of the M2M field on the model (e.g. 'asns'). """ + THRESHOLD = 100 + def __init__(self, name): self.name = name diff --git a/netbox/utilities/templatetags/form_helpers.py b/netbox/utilities/templatetags/form_helpers.py index 974fcc633..156bd72c2 100644 --- a/netbox/utilities/templatetags/form_helpers.py +++ b/netbox/utilities/templatetags/form_helpers.py @@ -81,11 +81,18 @@ def render_fieldset(form, fieldset): ) elif type(item) is M2MAddRemoveFields: - for field_name in (f'add_{item.name}', f'remove_{item.name}'): - if field_name in form.fields: - rows.append( - ('field', None, [form[field_name]]) - ) + if item.name in form.fields: + # Simple mode: render a single multi-select field + rows.append( + ('field', None, [form[item.name]]) + ) + else: + # Add/remove mode: render separate add and remove fields + for field_name in (f'add_{item.name}', f'remove_{item.name}'): + if field_name in form.fields: + rows.append( + ('field', None, [form[field_name]]) + ) elif type(item) is ObjectAttribute: value = getattr(form.instance, item.name) From 757c4f69d23a660c3a0177d4bb7f4208e9af0966 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 30 Mar 2026 09:15:35 -0400 Subject: [PATCH 22/41] Annotate current number of assignments if >100 --- netbox/circuits/forms/model_forms.py | 3 ++- netbox/dcim/forms/model_forms.py | 3 ++- netbox/ipam/forms/model_forms.py | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/netbox/circuits/forms/model_forms.py b/netbox/circuits/forms/model_forms.py index dfc41f590..0535bac5c 100644 --- a/netbox/circuits/forms/model_forms.py +++ b/netbox/circuits/forms/model_forms.py @@ -71,10 +71,11 @@ class ProviderForm(PrimaryModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if self.instance.pk and self.instance.asns.count() >= M2MAddRemoveFields.THRESHOLD: + if self.instance.pk and (count := self.instance.asns.count()) >= M2MAddRemoveFields.THRESHOLD: # Add/remove mode for large M2M sets self.fields.pop('asns') self.fields['remove_asns'].widget.add_query_param('provider_id', self.instance.pk) + self.fields['remove_asns'].help_text = _("{count} ASNs currently assigned").format(count=count) else: # Simple mode for new objects or small M2M sets self.fields.pop('add_asns') diff --git a/netbox/dcim/forms/model_forms.py b/netbox/dcim/forms/model_forms.py index ee428d241..cf7a3a80e 100644 --- a/netbox/dcim/forms/model_forms.py +++ b/netbox/dcim/forms/model_forms.py @@ -190,10 +190,11 @@ class SiteForm(TenancyForm, PrimaryModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if self.instance.pk and self.instance.asns.count() >= M2MAddRemoveFields.THRESHOLD: + if self.instance.pk and (count := self.instance.asns.count()) >= M2MAddRemoveFields.THRESHOLD: # Add/remove mode for large M2M sets self.fields.pop('asns') self.fields['remove_asns'].widget.add_query_param('site_id', self.instance.pk) + self.fields['remove_asns'].help_text = _("{count} ASNs currently assigned").format(count=count) else: # Simple mode for new objects or small M2M sets self.fields.pop('add_asns') diff --git a/netbox/ipam/forms/model_forms.py b/netbox/ipam/forms/model_forms.py index 2900a1ff3..a2968e0c9 100644 --- a/netbox/ipam/forms/model_forms.py +++ b/netbox/ipam/forms/model_forms.py @@ -184,10 +184,11 @@ class ASNForm(TenancyForm, PrimaryModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if self.instance.pk and self.instance.sites.count() >= M2MAddRemoveFields.THRESHOLD: + if self.instance.pk and (count := self.instance.sites.count()) >= M2MAddRemoveFields.THRESHOLD: # Add/remove mode for large M2M sets self.fields.pop('sites') self.fields['remove_sites'].widget.add_query_param('asn_id', self.instance.pk) + self.fields['remove_sites'].help_text = _("{count} sites currently assigned").format(count=count) else: # Simple mode for new objects or small M2M sets self.fields.pop('add_sites') From 0154a09856ef830f18f9a9ee5c774543b979f93d Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 30 Mar 2026 09:22:56 -0400 Subject: [PATCH 23/41] Limit 'add' field choices to objects not already assigned --- netbox/circuits/forms/model_forms.py | 1 + netbox/dcim/forms/model_forms.py | 1 + netbox/ipam/forms/model_forms.py | 1 + 3 files changed, 3 insertions(+) diff --git a/netbox/circuits/forms/model_forms.py b/netbox/circuits/forms/model_forms.py index 0535bac5c..446ec0eed 100644 --- a/netbox/circuits/forms/model_forms.py +++ b/netbox/circuits/forms/model_forms.py @@ -74,6 +74,7 @@ class ProviderForm(PrimaryModelForm): if self.instance.pk and (count := self.instance.asns.count()) >= M2MAddRemoveFields.THRESHOLD: # Add/remove mode for large M2M sets self.fields.pop('asns') + self.fields['add_asns'].widget.add_query_param('provider_id__n', self.instance.pk) self.fields['remove_asns'].widget.add_query_param('provider_id', self.instance.pk) self.fields['remove_asns'].help_text = _("{count} ASNs currently assigned").format(count=count) else: diff --git a/netbox/dcim/forms/model_forms.py b/netbox/dcim/forms/model_forms.py index cf7a3a80e..cb5809d4c 100644 --- a/netbox/dcim/forms/model_forms.py +++ b/netbox/dcim/forms/model_forms.py @@ -193,6 +193,7 @@ class SiteForm(TenancyForm, PrimaryModelForm): if self.instance.pk and (count := self.instance.asns.count()) >= M2MAddRemoveFields.THRESHOLD: # Add/remove mode for large M2M sets self.fields.pop('asns') + self.fields['add_asns'].widget.add_query_param('site_id__n', self.instance.pk) self.fields['remove_asns'].widget.add_query_param('site_id', self.instance.pk) self.fields['remove_asns'].help_text = _("{count} ASNs currently assigned").format(count=count) else: diff --git a/netbox/ipam/forms/model_forms.py b/netbox/ipam/forms/model_forms.py index a2968e0c9..f9f2acf71 100644 --- a/netbox/ipam/forms/model_forms.py +++ b/netbox/ipam/forms/model_forms.py @@ -187,6 +187,7 @@ class ASNForm(TenancyForm, PrimaryModelForm): if self.instance.pk and (count := self.instance.sites.count()) >= M2MAddRemoveFields.THRESHOLD: # Add/remove mode for large M2M sets self.fields.pop('sites') + self.fields['add_sites'].widget.add_query_param('asn_id__n', self.instance.pk) self.fields['remove_sites'].widget.add_query_param('asn_id', self.instance.pk) self.fields['remove_sites'].help_text = _("{count} sites currently assigned").format(count=count) else: From a45e8571da8663036dd8174b241600a2994cc5cd Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 30 Mar 2026 09:29:08 -0400 Subject: [PATCH 24/41] Revert changes to ASNForm --- netbox/ipam/forms/model_forms.py | 40 +++++++++++--------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/netbox/ipam/forms/model_forms.py b/netbox/ipam/forms/model_forms.py index f9f2acf71..1bdcff2d8 100644 --- a/netbox/ipam/forms/model_forms.py +++ b/netbox/ipam/forms/model_forms.py @@ -21,7 +21,7 @@ from utilities.forms.fields import ( NumericArrayField, NumericRangeArrayField, ) -from utilities.forms.rendering import FieldSet, InlineFields, M2MAddRemoveFields, ObjectAttribute, TabbedGroups +from utilities.forms.rendering import FieldSet, InlineFields, ObjectAttribute, TabbedGroups from utilities.forms.utils import get_field_value from utilities.forms.widgets import DatePicker, HTMXSelect from utilities.templatetags.builtins.filters import bettertitle @@ -157,45 +157,31 @@ class ASNForm(TenancyForm, PrimaryModelForm): label=_('Sites'), required=False ) - add_sites = DynamicModelMultipleChoiceField( - queryset=Site.objects.all(), - label=_('Add sites'), - required=False - ) - remove_sites = DynamicModelMultipleChoiceField( - queryset=Site.objects.all(), - label=_('Remove sites'), - required=False - ) fieldsets = ( - FieldSet('asn', 'rir', M2MAddRemoveFields('sites'), 'description', 'tags', name=_('ASN')), + FieldSet('asn', 'rir', 'sites', 'description', 'tags', name=_('ASN')), FieldSet('tenant_group', 'tenant', name=_('Tenancy')), ) class Meta: model = ASN fields = [ - 'asn', 'rir', 'tenant_group', 'tenant', 'description', 'owner', 'comments', 'tags' + 'asn', 'rir', 'sites', 'tenant_group', 'tenant', 'description', 'owner', 'comments', 'tags' ] widgets = { 'date_added': DatePicker(), } - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - if self.instance.pk and (count := self.instance.sites.count()) >= M2MAddRemoveFields.THRESHOLD: - # Add/remove mode for large M2M sets - self.fields.pop('sites') - self.fields['add_sites'].widget.add_query_param('asn_id__n', self.instance.pk) - self.fields['remove_sites'].widget.add_query_param('asn_id', self.instance.pk) - self.fields['remove_sites'].help_text = _("{count} sites currently assigned").format(count=count) - else: - # Simple mode for new objects or small M2M sets - self.fields.pop('add_sites') - self.fields.pop('remove_sites') - if self.instance.pk: - self.initial['sites'] = list(self.instance.sites.values_list('pk', flat=True)) + def __init__(self, data=None, instance=None, *args, **kwargs): + super().__init__(data=data, instance=instance, *args, **kwargs) + + if self.instance and self.instance.pk is not None: + self.fields['sites'].initial = self.instance.sites.all().values_list('id', flat=True) + + def save(self, *args, **kwargs): + instance = super().save(*args, **kwargs) + instance.sites.set(self.cleaned_data['sites']) + return instance class RoleForm(OrganizationalModelForm): From 55daf4c52fba71f89fdeae470af4c6f5a3d0a2d9 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 30 Mar 2026 10:02:38 -0400 Subject: [PATCH 25/41] Add/fix tests --- netbox/dcim/tests/test_forms.py | 111 ++++++++++++++++++++++++++++- netbox/netbox/forms/model_forms.py | 19 ++--- 2 files changed, 120 insertions(+), 10 deletions(-) diff --git a/netbox/dcim/tests/test_forms.py b/netbox/dcim/tests/test_forms.py index 118c347fd..2f01525fc 100644 --- a/netbox/dcim/tests/test_forms.py +++ b/netbox/dcim/tests/test_forms.py @@ -10,7 +10,8 @@ from dcim.choices import ( ) from dcim.forms import * from dcim.models import * -from ipam.models import VLAN +from ipam.models import ASN, RIR, VLAN +from utilities.forms.rendering import M2MAddRemoveFields from utilities.testing import create_test_device from virtualization.models import Cluster, ClusterGroup, ClusterType @@ -417,3 +418,111 @@ class InterfaceTestCase(TestCase): self.assertNotIn('untagged_vlan', form.cleaned_data.keys()) self.assertNotIn('tagged_vlans', form.cleaned_data.keys()) self.assertNotIn('qinq_svlan', form.cleaned_data.keys()) + + +class SiteFormTestCase(TestCase): + """ + Tests for M2MAddRemoveFields using Site ASN assignments as the test case. + Covers both simple mode (single multi-select field) and add/remove mode (dual fields). + """ + + @classmethod + def setUpTestData(cls): + cls.rir = RIR.objects.create(name='RIR 1', slug='rir-1') + # Create 110 ASNs: 100 to pre-assign (triggering add/remove mode) plus 10 extras + ASN.objects.bulk_create([ASN(asn=i, rir=cls.rir) for i in range(1, 111)]) + cls.asns = list(ASN.objects.order_by('asn')) + + def _site_data(self, **kwargs): + data = {'name': 'Test Site', 'slug': 'test-site', 'status': 'active'} + data.update(kwargs) + return data + + def test_new_site_uses_simple_mode(self): + """A form for a new site uses the single 'asns' field (simple mode).""" + form = SiteForm(data=self._site_data()) + self.assertIn('asns', form.fields) + self.assertNotIn('add_asns', form.fields) + self.assertNotIn('remove_asns', form.fields) + + def test_existing_site_below_threshold_uses_simple_mode(self): + """A form for an existing site with fewer than THRESHOLD ASNs uses simple mode.""" + site = Site.objects.create(name='Site 1', slug='site-1') + site.asns.set(self.asns[:5]) + form = SiteForm(instance=site) + self.assertIn('asns', form.fields) + self.assertNotIn('add_asns', form.fields) + self.assertNotIn('remove_asns', form.fields) + + def test_existing_site_at_threshold_uses_add_remove_mode(self): + """A form for an existing site with THRESHOLD or more ASNs uses add/remove mode.""" + site = Site.objects.create(name='Site 2', slug='site-2') + site.asns.set(self.asns[:M2MAddRemoveFields.THRESHOLD]) + form = SiteForm(instance=site) + self.assertNotIn('asns', form.fields) + self.assertIn('add_asns', form.fields) + self.assertIn('remove_asns', form.fields) + + def test_simple_mode_assigns_asns_on_create(self): + """Saving a new site via simple mode assigns the selected ASNs.""" + asn_pks = [asn.pk for asn in self.asns[:3]] + form = SiteForm(data=self._site_data(asns=asn_pks)) + self.assertTrue(form.is_valid(), form.errors) + site = form.save() + self.assertEqual(set(site.asns.values_list('pk', flat=True)), set(asn_pks)) + + def test_simple_mode_replaces_asns_on_edit(self): + """Saving an existing site via simple mode replaces the current ASN assignments.""" + site = Site.objects.create(name='Site 3', slug='site-3') + site.asns.set(self.asns[:3]) + new_asn_pks = [asn.pk for asn in self.asns[3:6]] + form = SiteForm( + data=self._site_data(name='Site 3', slug='site-3', asns=new_asn_pks), + instance=site + ) + self.assertTrue(form.is_valid(), form.errors) + site = form.save() + self.assertEqual(set(site.asns.values_list('pk', flat=True)), set(new_asn_pks)) + + def test_add_remove_mode_adds_asns(self): + """In add/remove mode, specifying 'add_asns' appends to current assignments.""" + site = Site.objects.create(name='Site 4', slug='site-4') + site.asns.set(self.asns[:M2MAddRemoveFields.THRESHOLD]) + new_asn_pks = [asn.pk for asn in self.asns[M2MAddRemoveFields.THRESHOLD:]] + form = SiteForm( + data=self._site_data(name='Site 4', slug='site-4', add_asns=new_asn_pks), + instance=site + ) + self.assertTrue(form.is_valid(), form.errors) + site = form.save() + self.assertEqual(site.asns.count(), len(self.asns)) + + def test_add_remove_mode_removes_asns(self): + """In add/remove mode, specifying 'remove_asns' drops those assignments.""" + site = Site.objects.create(name='Site 5', slug='site-5') + site.asns.set(self.asns[:M2MAddRemoveFields.THRESHOLD]) + remove_pks = [asn.pk for asn in self.asns[:5]] + form = SiteForm( + data=self._site_data(name='Site 5', slug='site-5', remove_asns=remove_pks), + instance=site + ) + self.assertTrue(form.is_valid(), form.errors) + site = form.save() + self.assertEqual(site.asns.count(), M2MAddRemoveFields.THRESHOLD - 5) + self.assertFalse(site.asns.filter(pk__in=remove_pks).exists()) + + def test_add_remove_mode_simultaneous_add_and_remove(self): + """In add/remove mode, add and remove operations are applied together.""" + site = Site.objects.create(name='Site 6', slug='site-6') + site.asns.set(self.asns[:M2MAddRemoveFields.THRESHOLD]) + add_pks = [asn.pk for asn in self.asns[M2MAddRemoveFields.THRESHOLD:M2MAddRemoveFields.THRESHOLD + 3]] + remove_pks = [asn.pk for asn in self.asns[:3]] + form = SiteForm( + data=self._site_data(name='Site 6', slug='site-6', add_asns=add_pks, remove_asns=remove_pks), + instance=site + ) + self.assertTrue(form.is_valid(), form.errors) + site = form.save() + self.assertEqual(site.asns.count(), M2MAddRemoveFields.THRESHOLD) + self.assertTrue(site.asns.filter(pk__in=add_pks).count() == 3) + self.assertFalse(site.asns.filter(pk__in=remove_pks).exists()) diff --git a/netbox/netbox/forms/model_forms.py b/netbox/netbox/forms/model_forms.py index 45948e174..cfca17255 100644 --- a/netbox/netbox/forms/model_forms.py +++ b/netbox/netbox/forms/model_forms.py @@ -2,7 +2,6 @@ import json from django import forms from django.contrib.contenttypes.models import ContentType -from django.db import models from django.db.models.fields.related import ManyToManyRel from extras.choices import * @@ -77,15 +76,17 @@ class NetBoxModelForm( and add/remove (dual field) modes. """ self.instance._m2m_values = {} - for field in self.instance._meta.get_fields(): - # Determine the accessor name for this M2M relationship - if isinstance(field, models.ManyToManyField): - name = field.name - elif isinstance(field, ManyToManyRel): - name = field.get_accessor_name() - else: - continue + # Collect names to process: local M2M fields (includes TaggableManager from django-taggit) + # plus reverse M2M relations (ManyToManyRel). + names = [field.name for field in self.instance._meta.local_many_to_many] + names += [ + field.get_accessor_name() + for field in self.instance._meta.get_fields() + if isinstance(field, ManyToManyRel) + ] + + for name in names: if name in self.cleaned_data: # Simple mode: single multi-select field self.instance._m2m_values[name] = list(self.cleaned_data[name]) From 5ab9608e38b487218e041d63621084c793d627a9 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 30 Mar 2026 17:31:41 -0400 Subject: [PATCH 26/41] Revert "Fixes #21747: Skip search caching when encountering an invalid schema during migrations (#21748)" (#21787) This reverts commit 296b89ae02c8f1812d77b0273f5df8197742fd43. --- netbox/netbox/search/backends.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/netbox/netbox/search/backends.py b/netbox/netbox/search/backends.py index 661134c95..12dfbdcff 100644 --- a/netbox/netbox/search/backends.py +++ b/netbox/netbox/search/backends.py @@ -1,11 +1,9 @@ -import logging from collections import defaultdict import netaddr from django.conf import settings from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ImproperlyConfigured -from django.db import ProgrammingError from django.db.models import F, Q, Window, prefetch_related_objects from django.db.models.fields.related import ForeignKey from django.db.models.functions import window @@ -26,8 +24,6 @@ from . import FieldTypes, LookupTypes, get_indexer DEFAULT_LOOKUP_TYPE = LookupTypes.PARTIAL MAX_RESULTS = 1000 -logger = logging.getLogger(__name__) - class SearchBackend: """ @@ -67,12 +63,7 @@ class SearchBackend: """ Receiver for the post_save signal, responsible for caching object creation/changes. """ - try: - self.cache(instance, remove_existing=not created) - except ProgrammingError as e: - # The schema may be incomplete during migrations; skip caching. - logger.warning(f"Skipping search cache update due to schema error: {e}") - pass + self.cache(instance, remove_existing=not created) def removal_handler(self, sender, instance, **kwargs): """ From ee17e83da6750100bf0e12850add366eddfe2b7b Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 30 Mar 2026 17:33:10 -0400 Subject: [PATCH 27/41] Update `CLAUDE.md` (#21777) --- CLAUDE.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index 710d209b0..5ba40d78a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -54,7 +54,8 @@ python manage.py nbshell # NetBox-enhanced shell ## Architecture Conventions - **Apps**: Each Django app owns its models, views, API serializers, filtersets, forms, and tests. -- **REST API**: DRF serializers live in `/api/serializers.py`; viewsets in `/api/views.py`; URLs auto-registered in `/api/urls.py`. +- **Views**: Use `register_model_view()` to register model views by action (e.g. "add", "list", etc.). List views typically don't need to add `select_related()` or `prefetch_related()` on their querysets: Prefetching is handled dynamically by the table class so that only relevant fields are prefetched. +- **REST API**: DRF serializers live in `/api/serializers.py`; viewsets in `/api/views.py`; URLs auto-registered in `/api/urls.py`. REST API views typically don't need to add `select_related()` or `prefetch_related()` on their querysets: Prefetching is handled dynamically by the serializer so that only relevant fields are prefetched. - **GraphQL**: Strawberry types in `/graphql/types.py`. - **Filtersets**: `/filtersets.py` — used for both UI filtering and API `?filter=` params. - **Tables**: `django-tables2` used for all object list views (`/tables.py`). @@ -68,6 +69,8 @@ python manage.py nbshell # NetBox-enhanced shell - API serializers must include a `url` field (absolute URL of the object). - Use `FeatureQuery` for generic relations (config contexts, custom fields, tags, etc.). - Avoid adding new dependencies without strong justification. +- Avoid running `ruff format` on existing files, as this tends to introduce unnecessary style changes. +- Don't craft Django database migrations manually: Prompt the user to run `manage.py makemigrations` instead. ## Branch & PR Conventions - Branch naming: `-short-description` (e.g., `1234-device-typerror`) From 6d13bc8b96756f1c938ba9f7f79cfab782de09f1 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 31 Mar 2026 05:31:31 +0000 Subject: [PATCH 28/41] Update source translation strings --- netbox/translations/en/LC_MESSAGES/django.po | 365 ++++++++++--------- 1 file changed, 189 insertions(+), 176 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index d0ab8d81c..8f946e717 100644 --- a/netbox/translations/en/LC_MESSAGES/django.po +++ b/netbox/translations/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-27 05:30+0000\n" +"POT-Creation-Date: 2026-03-31 05:31+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -182,9 +182,9 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1172 netbox/dcim/forms/filtersets.py:1268 #: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:2024 #: netbox/dcim/forms/filtersets.py:2048 netbox/dcim/forms/filtersets.py:2072 -#: netbox/dcim/forms/model_forms.py:155 netbox/dcim/forms/model_forms.py:183 -#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:570 -#: netbox/dcim/forms/model_forms.py:839 netbox/dcim/forms/object_create.py:294 +#: netbox/dcim/forms/model_forms.py:166 netbox/dcim/forms/model_forms.py:209 +#: netbox/dcim/forms/model_forms.py:280 netbox/dcim/forms/model_forms.py:596 +#: netbox/dcim/forms/model_forms.py:865 netbox/dcim/forms/object_create.py:294 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:26 #: netbox/dcim/tables/power.py:90 netbox/dcim/tables/racks.py:111 #: netbox/dcim/tables/racks.py:194 netbox/dcim/tables/sites.py:102 @@ -322,9 +322,9 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:232 #: netbox/circuits/forms/filtersets.py:259 #: netbox/circuits/forms/filtersets.py:306 -#: netbox/circuits/forms/model_forms.py:143 -#: netbox/circuits/forms/model_forms.py:166 -#: netbox/circuits/forms/model_forms.py:264 +#: netbox/circuits/forms/model_forms.py:168 +#: netbox/circuits/forms/model_forms.py:191 +#: netbox/circuits/forms/model_forms.py:289 #: netbox/circuits/tables/circuits.py:103 #: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 #: netbox/templates/circuits/panels/circuit_termination.html:7 @@ -385,8 +385,8 @@ msgstr "" #: netbox/circuits/forms/bulk_import.py:248 #: netbox/circuits/forms/filtersets.py:384 #: netbox/circuits/forms/filtersets.py:390 -#: netbox/circuits/forms/model_forms.py:342 -#: netbox/circuits/forms/model_forms.py:357 +#: netbox/circuits/forms/model_forms.py:367 +#: netbox/circuits/forms/model_forms.py:382 #: netbox/circuits/tables/virtual_circuits.py:84 msgid "Virtual circuit" msgstr "" @@ -424,9 +424,9 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:349 #: netbox/circuits/forms/filtersets.py:385 #: netbox/circuits/forms/filtersets.py:408 -#: netbox/circuits/forms/model_forms.py:65 -#: netbox/circuits/forms/model_forms.py:84 -#: netbox/circuits/forms/model_forms.py:115 +#: netbox/circuits/forms/model_forms.py:90 +#: netbox/circuits/forms/model_forms.py:109 +#: netbox/circuits/forms/model_forms.py:140 #: netbox/circuits/tables/circuits.py:56 netbox/circuits/tables/circuits.py:107 #: netbox/circuits/tables/circuits.py:192 #: netbox/circuits/tables/providers.py:67 @@ -492,7 +492,7 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1602 netbox/dcim/forms/filtersets.py:1707 #: netbox/dcim/forms/filtersets.py:1756 netbox/dcim/forms/filtersets.py:1775 #: netbox/dcim/forms/filtersets.py:1799 netbox/dcim/forms/filtersets.py:1818 -#: netbox/dcim/forms/model_forms.py:820 netbox/dcim/forms/model_forms.py:826 +#: netbox/dcim/forms/model_forms.py:846 netbox/dcim/forms/model_forms.py:852 #: netbox/dcim/forms/object_import.py:85 netbox/dcim/forms/object_import.py:114 #: netbox/dcim/forms/object_import.py:127 netbox/dcim/tables/devices.py:182 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 @@ -519,8 +519,8 @@ msgstr "" #: netbox/circuits/forms/bulk_import.py:213 #: netbox/circuits/forms/filtersets.py:159 #: netbox/circuits/forms/filtersets.py:357 -#: netbox/circuits/forms/model_forms.py:121 -#: netbox/circuits/forms/model_forms.py:330 +#: netbox/circuits/forms/model_forms.py:146 +#: netbox/circuits/forms/model_forms.py:355 msgid "Provider account" msgstr "" @@ -663,7 +663,7 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:159 #: netbox/circuits/forms/filtersets.py:217 -#: netbox/circuits/forms/model_forms.py:140 +#: netbox/circuits/forms/model_forms.py:165 #: netbox/wireless/forms/bulk_edit.py:121 #: netbox/wireless/forms/filtersets.py:137 #: netbox/wireless/forms/model_forms.py:166 @@ -682,7 +682,7 @@ msgid "Distance unit" msgstr "" #: netbox/circuits/forms/bulk_edit.py:173 -#: netbox/circuits/forms/model_forms.py:145 +#: netbox/circuits/forms/model_forms.py:170 msgid "Service Parameters" msgstr "" @@ -731,12 +731,12 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:175 #: netbox/circuits/forms/bulk_edit.py:317 -#: netbox/circuits/forms/model_forms.py:146 -#: netbox/circuits/forms/model_forms.py:242 -#: netbox/circuits/forms/model_forms.py:344 -#: netbox/dcim/forms/model_forms.py:157 netbox/dcim/forms/model_forms.py:198 -#: netbox/dcim/forms/model_forms.py:285 netbox/dcim/forms/model_forms.py:342 -#: netbox/dcim/forms/model_forms.py:883 netbox/dcim/forms/model_forms.py:1897 +#: netbox/circuits/forms/model_forms.py:171 +#: netbox/circuits/forms/model_forms.py:267 +#: netbox/circuits/forms/model_forms.py:369 +#: netbox/dcim/forms/model_forms.py:168 netbox/dcim/forms/model_forms.py:224 +#: netbox/dcim/forms/model_forms.py:311 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/forms/model_forms.py:909 netbox/dcim/forms/model_forms.py:1923 #: netbox/ipam/forms/bulk_edit.py:383 netbox/ipam/forms/model_forms.py:70 #: netbox/ipam/forms/model_forms.py:87 netbox/ipam/forms/model_forms.py:118 #: netbox/ipam/forms/model_forms.py:139 netbox/ipam/forms/model_forms.py:163 @@ -799,7 +799,7 @@ msgid "Description" msgstr "" #: netbox/circuits/forms/bulk_edit.py:192 -#: netbox/circuits/forms/model_forms.py:174 +#: netbox/circuits/forms/model_forms.py:199 #: netbox/dcim/forms/bulk_import.py:1419 netbox/dcim/forms/bulk_import.py:1444 msgid "Termination type" msgstr "" @@ -807,7 +807,7 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:195 #: netbox/circuits/forms/bulk_import.py:133 #: netbox/circuits/forms/filtersets.py:234 -#: netbox/circuits/forms/model_forms.py:177 netbox/circuits/ui/panels.py:14 +#: netbox/circuits/forms/model_forms.py:202 netbox/circuits/ui/panels.py:14 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/panels/circuit_circuit_termination.html:6 #: netbox/vpn/forms/bulk_import.py:99 netbox/vpn/forms/filtersets.py:87 @@ -831,7 +831,7 @@ msgid "Mark connected" msgstr "" #: netbox/circuits/forms/bulk_edit.py:220 -#: netbox/circuits/forms/model_forms.py:188 netbox/circuits/views.py:513 +#: netbox/circuits/forms/model_forms.py:213 netbox/circuits/views.py:513 #: netbox/dcim/views.py:3465 netbox/dcim/views.py:3566 #: netbox/templates/circuits/inc/circuit_termination_fields.html:55 #: netbox/templates/dcim/panels/interface_connection.html:92 @@ -839,14 +839,14 @@ msgid "Circuit Termination" msgstr "" #: netbox/circuits/forms/bulk_edit.py:222 -#: netbox/circuits/forms/model_forms.py:190 +#: netbox/circuits/forms/model_forms.py:215 msgid "Termination Details" msgstr "" #: netbox/circuits/forms/bulk_edit.py:261 #: netbox/circuits/forms/bulk_import.py:188 #: netbox/circuits/forms/filtersets.py:314 -#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:666 +#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:692 #: netbox/templates/dcim/panels/virtual_chassis_members.html:11 #: netbox/templates/dcim/virtualchassis_edit.html:68 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 @@ -861,7 +861,7 @@ msgstr "" #: netbox/circuits/forms/filtersets.py:272 #: netbox/circuits/forms/filtersets.py:365 #: netbox/circuits/forms/filtersets.py:403 -#: netbox/circuits/forms/model_forms.py:325 +#: netbox/circuits/forms/model_forms.py:350 #: netbox/circuits/tables/virtual_circuits.py:51 #: netbox/circuits/tables/virtual_circuits.py:95 msgid "Provider network" @@ -870,13 +870,13 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:326 #: netbox/circuits/forms/bulk_import.py:253 #: netbox/circuits/forms/filtersets.py:393 -#: netbox/circuits/forms/model_forms.py:364 netbox/dcim/forms/bulk_edit.py:351 +#: netbox/circuits/forms/model_forms.py:389 netbox/dcim/forms/bulk_edit.py:351 #: netbox/dcim/forms/bulk_edit.py:1245 netbox/dcim/forms/bulk_edit.py:1681 #: netbox/dcim/forms/bulk_import.py:270 netbox/dcim/forms/bulk_import.py:1199 #: netbox/dcim/forms/filtersets.py:404 netbox/dcim/forms/filtersets.py:879 #: netbox/dcim/forms/filtersets.py:1902 netbox/dcim/forms/filtersets.py:1942 -#: netbox/dcim/forms/model_forms.py:267 netbox/dcim/forms/model_forms.py:1234 -#: netbox/dcim/forms/model_forms.py:1717 netbox/dcim/forms/object_import.py:182 +#: netbox/dcim/forms/model_forms.py:293 netbox/dcim/forms/model_forms.py:1260 +#: netbox/dcim/forms/model_forms.py:1743 netbox/dcim/forms/object_import.py:182 #: netbox/dcim/tables/devices.py:173 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:318 netbox/dcim/tables/racks.py:118 #: netbox/extras/filtersets.py:734 netbox/ipam/forms/bulk_edit.py:209 @@ -987,12 +987,12 @@ msgid "Operational role" msgstr "" #: netbox/circuits/forms/bulk_import.py:258 -#: netbox/circuits/forms/model_forms.py:367 +#: netbox/circuits/forms/model_forms.py:392 #: netbox/circuits/tables/virtual_circuits.py:108 #: netbox/circuits/ui/panels.py:134 netbox/dcim/forms/bulk_import.py:1330 -#: netbox/dcim/forms/model_forms.py:1308 netbox/dcim/forms/model_forms.py:1577 -#: netbox/dcim/forms/model_forms.py:1758 netbox/dcim/forms/model_forms.py:1793 -#: netbox/dcim/forms/model_forms.py:1918 netbox/dcim/tables/connections.py:66 +#: netbox/dcim/forms/model_forms.py:1334 netbox/dcim/forms/model_forms.py:1603 +#: netbox/dcim/forms/model_forms.py:1784 netbox/dcim/forms/model_forms.py:1819 +#: netbox/dcim/forms/model_forms.py:1944 netbox/dcim/tables/connections.py:66 #: netbox/dcim/tables/devices.py:1199 netbox/dcim/views.py:3457 #: netbox/dcim/views.py:3560 netbox/ipam/forms/bulk_import.py:323 #: netbox/ipam/forms/model_forms.py:283 netbox/ipam/forms/model_forms.py:292 @@ -1031,8 +1031,8 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1746 #: netbox/dcim/forms/filtersets.py:1790 netbox/dcim/forms/filtersets.py:1833 #: netbox/dcim/forms/filtersets.py:1865 netbox/dcim/forms/filtersets.py:1892 -#: netbox/dcim/forms/model_forms.py:197 netbox/dcim/forms/model_forms.py:259 -#: netbox/dcim/forms/model_forms.py:575 netbox/dcim/forms/model_forms.py:844 +#: netbox/dcim/forms/model_forms.py:223 netbox/dcim/forms/model_forms.py:285 +#: netbox/dcim/forms/model_forms.py:601 netbox/dcim/forms/model_forms.py:870 #: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:30 #: netbox/dcim/tables/racks.py:107 netbox/dcim/tables/racks.py:199 #: netbox/extras/filtersets.py:718 netbox/extras/forms/filtersets.py:404 @@ -1198,7 +1198,7 @@ msgid "Assignment" msgstr "" #: netbox/circuits/forms/filtersets.py:311 -#: netbox/circuits/forms/model_forms.py:254 +#: netbox/circuits/forms/model_forms.py:279 #: netbox/circuits/tables/circuits.py:187 netbox/dcim/forms/bulk_edit.py:118 #: netbox/dcim/forms/bulk_import.py:115 netbox/dcim/forms/model_forms.py:135 #: netbox/dcim/tables/sites.py:69 netbox/extras/forms/filtersets.py:600 @@ -1232,15 +1232,28 @@ msgstr "" msgid "Group" msgstr "" -#: netbox/circuits/forms/model_forms.py:241 +#: netbox/circuits/forms/model_forms.py:53 netbox/dcim/forms/model_forms.py:147 +msgid "Add ASNs" +msgstr "" + +#: netbox/circuits/forms/model_forms.py:58 netbox/dcim/forms/model_forms.py:152 +msgid "Remove ASNs" +msgstr "" + +#: netbox/circuits/forms/model_forms.py:79 netbox/dcim/forms/model_forms.py:198 +#, python-brace-format +msgid "{count} ASNs currently assigned" +msgstr "" + +#: netbox/circuits/forms/model_forms.py:266 msgid "Circuit Group" msgstr "" -#: netbox/circuits/forms/model_forms.py:261 +#: netbox/circuits/forms/model_forms.py:286 msgid "Circuit type" msgstr "" -#: netbox/circuits/forms/model_forms.py:272 +#: netbox/circuits/forms/model_forms.py:297 msgid "Group Assignment" msgstr "" @@ -1692,9 +1705,9 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1868 netbox/dcim/forms/filtersets.py:1880 #: netbox/dcim/forms/filtersets.py:1895 netbox/dcim/forms/filtersets.py:1937 #: netbox/dcim/forms/filtersets.py:2032 netbox/dcim/forms/filtersets.py:2056 -#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:748 -#: netbox/dcim/forms/model_forms.py:963 netbox/dcim/forms/model_forms.py:1375 -#: netbox/dcim/forms/model_forms.py:1869 netbox/dcim/forms/model_forms.py:1942 +#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:774 +#: netbox/dcim/forms/model_forms.py:989 netbox/dcim/forms/model_forms.py:1401 +#: netbox/dcim/forms/model_forms.py:1895 netbox/dcim/forms/model_forms.py:1968 #: netbox/dcim/forms/object_create.py:207 netbox/dcim/tables/connections.py:23 #: netbox/dcim/tables/connections.py:42 netbox/dcim/tables/connections.py:61 #: netbox/dcim/tables/devices.py:293 netbox/dcim/tables/devices.py:388 @@ -2090,7 +2103,7 @@ msgstr "" #: netbox/core/forms/filtersets.py:141 netbox/core/forms/filtersets.py:170 #: netbox/core/ui/panels.py:73 netbox/dcim/forms/bulk_edit.py:458 -#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:336 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:362 #: netbox/extras/forms/filtersets.py:575 netbox/extras/forms/filtersets.py:595 #: netbox/extras/tables/tables.py:403 netbox/extras/tables/tables.py:443 #: netbox/templates/extras/savedfilter.html:21 @@ -2973,9 +2986,9 @@ msgstr "" #: netbox/dcim/forms/bulk_import.py:1211 netbox/dcim/forms/filtersets.py:265 #: netbox/dcim/forms/filtersets.py:780 netbox/dcim/forms/filtersets.py:796 #: netbox/dcim/forms/model_forms.py:93 netbox/dcim/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:188 netbox/dcim/forms/model_forms.py:514 -#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1709 netbox/dcim/forms/object_import.py:177 +#: netbox/dcim/forms/model_forms.py:214 netbox/dcim/forms/model_forms.py:540 +#: netbox/dcim/forms/model_forms.py:561 netbox/dcim/forms/model_forms.py:1252 +#: netbox/dcim/forms/model_forms.py:1735 netbox/dcim/forms/object_import.py:177 #: netbox/dcim/tables/devices.py:702 netbox/dcim/tables/devices.py:737 #: netbox/dcim/tables/devices.py:965 netbox/dcim/tables/devices.py:1052 #: netbox/dcim/tables/devices.py:1205 netbox/ipam/forms/bulk_import.py:601 @@ -3099,8 +3112,8 @@ msgstr "" #: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 -#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125 -#: netbox/dcim/forms/model_forms.py:1589 netbox/dcim/ui/panels.py:546 +#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1151 +#: netbox/dcim/forms/model_forms.py:1615 netbox/dcim/ui/panels.py:546 #: netbox/netbox/navigation/menu.py:150 netbox/netbox/navigation/menu.py:154 msgid "Wireless" msgstr "" @@ -3110,7 +3123,7 @@ msgid "Virtual interfaces" msgstr "" #: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 -#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107 +#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1133 #: netbox/dcim/tables/devices.py:741 #: netbox/virtualization/forms/bulk_edit.py:177 #: netbox/virtualization/forms/bulk_import.py:171 @@ -3718,7 +3731,7 @@ msgstr "" #: netbox/dcim/filtersets.py:1323 netbox/dcim/forms/filtersets.py:920 #: netbox/dcim/forms/filtersets.py:1634 netbox/dcim/forms/filtersets.py:1979 -#: netbox/dcim/forms/model_forms.py:1915 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/forms/model_forms.py:1941 netbox/dcim/models/devices.py:1313 #: netbox/dcim/models/devices.py:1336 netbox/dcim/ui/panels.py:366 #: netbox/dcim/ui/panels.py:504 netbox/virtualization/filtersets.py:230 #: netbox/virtualization/filtersets.py:318 @@ -3884,7 +3897,7 @@ msgstr "" #: netbox/dcim/filtersets.py:2074 netbox/dcim/forms/bulk_edit.py:1512 #: netbox/dcim/forms/bulk_import.py:1034 netbox/dcim/forms/filtersets.py:1687 -#: netbox/dcim/forms/model_forms.py:1555 +#: netbox/dcim/forms/model_forms.py:1581 #: netbox/dcim/models/device_components.py:867 #: netbox/dcim/tables/devices.py:667 netbox/dcim/ui/panels.py:507 #: netbox/ipam/filtersets.py:360 netbox/ipam/filtersets.py:372 @@ -3941,7 +3954,7 @@ msgid "VLAN Translation Policy (ID)" msgstr "" #: netbox/dcim/filtersets.py:2105 netbox/dcim/forms/filtersets.py:1658 -#: netbox/dcim/forms/model_forms.py:1572 +#: netbox/dcim/forms/model_forms.py:1598 #: netbox/dcim/models/device_components.py:668 #: netbox/ipam/forms/filtersets.py:531 netbox/ipam/forms/model_forms.py:703 #: netbox/virtualization/forms/bulk_edit.py:231 @@ -3991,14 +4004,14 @@ msgstr "" msgid "Primary MAC address (ID)" msgstr "" -#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1559 +#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1585 #: netbox/virtualization/filtersets.py:331 #: netbox/virtualization/forms/model_forms.py:302 msgid "Primary MAC address" msgstr "" #: netbox/dcim/filtersets.py:2225 netbox/dcim/filtersets.py:2237 -#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1895 +#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1921 msgid "Virtual Device Context" msgstr "" @@ -4065,8 +4078,8 @@ msgid "Tags" msgstr "" #: netbox/dcim/forms/bulk_create.py:116 netbox/dcim/forms/filtersets.py:1842 -#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:595 -#: netbox/dcim/forms/model_forms.py:661 netbox/dcim/forms/object_create.py:155 +#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:621 +#: netbox/dcim/forms/model_forms.py:687 netbox/dcim/forms/object_create.py:155 #: netbox/dcim/forms/object_create.py:256 netbox/dcim/tables/devices.py:169 #: netbox/templates/dcim/panels/front_port_mappings.html:9 #: netbox/templates/dcim/panels/rear_port_mappings.html:9 @@ -4099,7 +4112,7 @@ msgid "Contact E-mail" msgstr "" #: netbox/dcim/forms/bulk_edit.py:152 netbox/dcim/forms/bulk_import.py:138 -#: netbox/dcim/forms/model_forms.py:147 +#: netbox/dcim/forms/model_forms.py:157 msgid "Time zone" msgstr "" @@ -4114,10 +4127,10 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:546 netbox/dcim/forms/filtersets.py:695 #: netbox/dcim/forms/filtersets.py:801 netbox/dcim/forms/filtersets.py:884 #: netbox/dcim/forms/filtersets.py:1096 netbox/dcim/forms/filtersets.py:1907 -#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:223 -#: netbox/dcim/forms/model_forms.py:354 netbox/dcim/forms/model_forms.py:366 -#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:540 -#: netbox/dcim/forms/model_forms.py:1239 netbox/dcim/forms/model_forms.py:1722 +#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:249 +#: netbox/dcim/forms/model_forms.py:380 netbox/dcim/forms/model_forms.py:392 +#: netbox/dcim/forms/model_forms.py:462 netbox/dcim/forms/model_forms.py:566 +#: netbox/dcim/forms/model_forms.py:1265 netbox/dcim/forms/model_forms.py:1748 #: netbox/dcim/forms/object_import.py:188 netbox/dcim/tables/devices.py:101 #: netbox/dcim/tables/devices.py:176 netbox/dcim/tables/devices.py:1035 #: netbox/dcim/tables/devicetypes.py:87 netbox/dcim/tables/devicetypes.py:322 @@ -4182,7 +4195,7 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:362 netbox/dcim/forms/filtersets.py:441 #: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:651 #: netbox/dcim/forms/filtersets.py:683 netbox/dcim/forms/filtersets.py:755 -#: netbox/dcim/forms/model_forms.py:237 netbox/dcim/forms/model_forms.py:318 +#: netbox/dcim/forms/model_forms.py:263 netbox/dcim/forms/model_forms.py:344 #: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:55 #: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:162 #: netbox/dcim/views.py:893 netbox/dcim/views.py:1021 @@ -4215,17 +4228,17 @@ msgid "Weight unit" msgstr "" #: netbox/dcim/forms/bulk_edit.py:290 netbox/dcim/forms/filtersets.py:335 -#: netbox/dcim/forms/model_forms.py:233 netbox/dcim/forms/model_forms.py:272 +#: netbox/dcim/forms/model_forms.py:259 netbox/dcim/forms/model_forms.py:298 msgid "Rack Type" msgstr "" #: netbox/dcim/forms/bulk_edit.py:292 netbox/dcim/forms/bulk_edit.py:440 -#: netbox/dcim/forms/model_forms.py:236 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/model_forms.py:262 netbox/dcim/forms/model_forms.py:343 msgid "Outer Dimensions" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:238 -#: netbox/dcim/forms/model_forms.py:319 netbox/dcim/ui/panels.py:137 +#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:345 netbox/dcim/ui/panels.py:137 #: netbox/dcim/views.py:887 netbox/dcim/views.py:1019 #: netbox/extras/tables/tables.py:278 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 @@ -4234,7 +4247,7 @@ msgid "Dimensions" msgstr "" #: netbox/dcim/forms/bulk_edit.py:297 netbox/dcim/forms/filtersets.py:336 -#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:240 +#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:266 #: netbox/dcim/views.py:892 netbox/dcim/views.py:1020 #: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" @@ -4274,8 +4287,8 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/filtersets.py:501 #: netbox/dcim/forms/filtersets.py:874 netbox/dcim/forms/filtersets.py:1086 #: netbox/dcim/forms/filtersets.py:1186 netbox/dcim/forms/filtersets.py:1325 -#: netbox/dcim/forms/model_forms.py:282 netbox/dcim/forms/model_forms.py:326 -#: netbox/dcim/forms/model_forms.py:586 netbox/dcim/forms/model_forms.py:871 +#: netbox/dcim/forms/model_forms.py:308 netbox/dcim/forms/model_forms.py:352 +#: netbox/dcim/forms/model_forms.py:612 netbox/dcim/forms/model_forms.py:897 #: netbox/dcim/forms/object_create.py:303 netbox/dcim/tables/devices.py:165 #: netbox/dcim/tables/power.py:67 netbox/dcim/tables/racks.py:204 #: netbox/ipam/forms/filtersets.py:486 @@ -4289,14 +4302,14 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:360 netbox/dcim/forms/filtersets.py:440 #: netbox/dcim/forms/filtersets.py:532 netbox/dcim/forms/filtersets.py:677 #: netbox/dcim/forms/filtersets.py:822 netbox/dcim/forms/filtersets.py:1043 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:787 -#: netbox/dcim/forms/model_forms.py:1790 +#: netbox/dcim/forms/model_forms.py:470 netbox/dcim/forms/model_forms.py:813 +#: netbox/dcim/forms/model_forms.py:1816 #: netbox/templates/dcim/device_edit.html:22 msgid "Hardware" msgstr "" #: netbox/dcim/forms/bulk_edit.py:490 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:397 msgid "Default platform" msgstr "" @@ -4313,16 +4326,16 @@ msgstr "" msgid "Exclude from utilization" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:385 -#: netbox/dcim/forms/model_forms.py:1022 netbox/dcim/forms/model_forms.py:1064 -#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1119 -#: netbox/dcim/forms/model_forms.py:1140 netbox/dcim/forms/model_forms.py:1180 -#: netbox/dcim/forms/model_forms.py:1198 netbox/dcim/forms/object_create.py:119 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:411 +#: netbox/dcim/forms/model_forms.py:1048 netbox/dcim/forms/model_forms.py:1090 +#: netbox/dcim/forms/model_forms.py:1117 netbox/dcim/forms/model_forms.py:1145 +#: netbox/dcim/forms/model_forms.py:1166 netbox/dcim/forms/model_forms.py:1206 +#: netbox/dcim/forms/model_forms.py:1224 netbox/dcim/forms/object_create.py:119 #: netbox/dcim/tables/devicetypes.py:84 netbox/dcim/ui/panels.py:127 msgid "Device Type" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:412 +#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:438 #: netbox/dcim/views.py:1592 netbox/extras/forms/model_forms.py:601 msgid "Schema" msgstr "" @@ -4330,8 +4343,8 @@ msgstr "" #: netbox/dcim/forms/bulk_edit.py:549 netbox/dcim/forms/bulk_edit.py:556 #: netbox/dcim/forms/bulk_edit.py:787 netbox/dcim/forms/bulk_import.py:460 #: netbox/dcim/forms/bulk_import.py:1459 netbox/dcim/forms/filtersets.py:690 -#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:418 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/tables/modules.py:43 +#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:444 +#: netbox/dcim/forms/model_forms.py:457 netbox/dcim/tables/modules.py:43 #: netbox/extras/forms/filtersets.py:413 netbox/extras/forms/model_forms.py:626 #: netbox/extras/tables/tables.py:627 netbox/templates/account/base.html:7 #: netbox/templates/extras/configcontext.html:21 @@ -4341,16 +4354,16 @@ msgid "Profile" msgstr "" #: netbox/dcim/forms/bulk_edit.py:588 netbox/dcim/forms/filtersets.py:1379 -#: netbox/dcim/forms/model_forms.py:443 netbox/dcim/forms/model_forms.py:1023 -#: netbox/dcim/forms/model_forms.py:1065 netbox/dcim/forms/model_forms.py:1092 -#: netbox/dcim/forms/model_forms.py:1120 netbox/dcim/forms/model_forms.py:1141 -#: netbox/dcim/forms/model_forms.py:1181 netbox/dcim/forms/model_forms.py:1199 +#: netbox/dcim/forms/model_forms.py:469 netbox/dcim/forms/model_forms.py:1049 +#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1118 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1167 +#: netbox/dcim/forms/model_forms.py:1207 netbox/dcim/forms/model_forms.py:1225 #: netbox/dcim/forms/object_create.py:120 netbox/dcim/tables/modules.py:52 #: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2851 msgid "Module Type" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:388 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:414 msgid "Chassis" msgstr "" @@ -4365,8 +4378,8 @@ msgstr "" #: netbox/dcim/forms/bulk_import.py:561 netbox/dcim/forms/bulk_import.py:686 #: netbox/dcim/forms/bulk_import.py:690 netbox/dcim/forms/filtersets.py:775 #: netbox/dcim/forms/filtersets.py:806 netbox/dcim/forms/filtersets.py:925 -#: netbox/dcim/forms/model_forms.py:509 netbox/dcim/forms/model_forms.py:546 -#: netbox/dcim/forms/model_forms.py:670 +#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:572 +#: netbox/dcim/forms/model_forms.py:696 #: netbox/virtualization/forms/bulk_import.py:145 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/filtersets.py:207 @@ -4376,21 +4389,21 @@ msgstr "" #: netbox/dcim/forms/bulk_edit.py:657 netbox/dcim/forms/bulk_edit.py:1040 #: netbox/dcim/forms/bulk_import.py:592 netbox/dcim/forms/filtersets.py:133 -#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:616 -#: netbox/dcim/forms/model_forms.py:986 netbox/dcim/forms/model_forms.py:1003 +#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:642 +#: netbox/dcim/forms/model_forms.py:1012 netbox/dcim/forms/model_forms.py:1029 #: netbox/extras/filtersets.py:729 #: netbox/templates/dcim/panels/installed_device.html:13 msgid "Device type" msgstr "" #: netbox/dcim/forms/bulk_edit.py:668 netbox/dcim/forms/bulk_import.py:573 -#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:624 +#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:650 msgid "Device role" msgstr "" #: netbox/dcim/forms/bulk_edit.py:691 netbox/dcim/forms/bulk_import.py:598 #: netbox/dcim/forms/filtersets.py:789 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/model_forms.py:557 netbox/dcim/forms/model_forms.py:629 +#: netbox/dcim/forms/model_forms.py:583 netbox/dcim/forms/model_forms.py:655 #: netbox/dcim/tables/devices.py:191 netbox/extras/filtersets.py:745 #: netbox/virtualization/forms/bulk_edit.py:131 #: netbox/virtualization/forms/bulk_import.py:135 @@ -4402,7 +4415,7 @@ msgstr "" #: netbox/dcim/forms/bulk_edit.py:716 netbox/dcim/forms/bulk_import.py:617 #: netbox/dcim/forms/filtersets.py:830 netbox/dcim/forms/filtersets.py:1000 -#: netbox/dcim/forms/model_forms.py:638 netbox/dcim/tables/devices.py:211 +#: netbox/dcim/forms/model_forms.py:664 netbox/dcim/tables/devices.py:211 #: netbox/extras/filtersets.py:778 netbox/extras/forms/filtersets.py:406 #: netbox/ipam/forms/filtersets.py:457 netbox/ipam/forms/filtersets.py:491 #: netbox/virtualization/filtersets.py:148 @@ -4431,7 +4444,7 @@ msgid "Virtualization" msgstr "" #: netbox/dcim/forms/bulk_edit.py:744 netbox/dcim/forms/bulk_import.py:759 -#: netbox/dcim/forms/model_forms.py:765 netbox/dcim/forms/model_forms.py:1011 +#: netbox/dcim/forms/model_forms.py:791 netbox/dcim/forms/model_forms.py:1037 #: netbox/templates/dcim/panels/installed_module.html:17 msgid "Module type" msgstr "" @@ -4464,7 +4477,7 @@ msgid "Domain" msgstr "" #: netbox/dcim/forms/bulk_edit.py:886 netbox/dcim/forms/bulk_import.py:1646 -#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:865 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:891 msgid "Power panel" msgstr "" @@ -4511,8 +4524,8 @@ msgid "Allocated power draw (watts)" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_import.py:892 -#: netbox/dcim/forms/model_forms.py:1080 netbox/dcim/forms/model_forms.py:1445 -#: netbox/dcim/forms/model_forms.py:1774 netbox/dcim/forms/object_import.py:56 +#: netbox/dcim/forms/model_forms.py:1106 netbox/dcim/forms/model_forms.py:1471 +#: netbox/dcim/forms/model_forms.py:1800 netbox/dcim/forms/object_import.py:56 msgid "Power port" msgstr "" @@ -4546,8 +4559,8 @@ msgstr "" msgid "Wireless role" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:786 -#: netbox/dcim/forms/model_forms.py:1390 netbox/dcim/tables/devices.py:330 +#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:812 +#: netbox/dcim/forms/model_forms.py:1416 netbox/dcim/tables/devices.py:330 #: netbox/templates/dcim/panels/installed_module.html:9 msgid "Module" msgstr "" @@ -4557,7 +4570,7 @@ msgstr "" msgid "LAG" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1472 +#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1498 msgid "Virtual device contexts" msgstr "" @@ -4582,7 +4595,7 @@ msgid "Mode" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1461 netbox/dcim/forms/bulk_import.py:1000 -#: netbox/dcim/forms/model_forms.py:1521 netbox/ipam/forms/bulk_import.py:177 +#: netbox/dcim/forms/model_forms.py:1547 netbox/ipam/forms/bulk_import.py:177 #: netbox/ipam/forms/filtersets.py:582 netbox/ipam/models/vlans.py:93 #: netbox/virtualization/forms/bulk_edit.py:205 #: netbox/virtualization/forms/bulk_import.py:184 @@ -4591,7 +4604,7 @@ msgid "VLAN group" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1470 netbox/dcim/forms/bulk_import.py:1007 -#: netbox/dcim/forms/model_forms.py:1527 netbox/dcim/tables/devices.py:616 +#: netbox/dcim/forms/model_forms.py:1553 netbox/dcim/tables/devices.py:616 #: netbox/dcim/ui/panels.py:484 netbox/virtualization/forms/bulk_edit.py:213 #: netbox/virtualization/forms/bulk_import.py:191 #: netbox/virtualization/forms/model_forms.py:331 @@ -4599,7 +4612,7 @@ msgid "Untagged VLAN" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/bulk_import.py:1014 -#: netbox/dcim/forms/model_forms.py:1536 netbox/dcim/tables/devices.py:622 +#: netbox/dcim/forms/model_forms.py:1562 netbox/dcim/tables/devices.py:622 #: netbox/virtualization/forms/bulk_edit.py:221 #: netbox/virtualization/forms/bulk_import.py:198 #: netbox/virtualization/forms/model_forms.py:340 @@ -4615,18 +4628,18 @@ msgid "Remove tagged VLANs" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1502 netbox/dcim/forms/bulk_import.py:1027 -#: netbox/dcim/forms/model_forms.py:1545 +#: netbox/dcim/forms/model_forms.py:1571 #: netbox/virtualization/forms/bulk_import.py:211 #: netbox/virtualization/forms/model_forms.py:349 msgid "Q-in-Q Service VLAN" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1508 +#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1534 #: netbox/wireless/forms/filtersets.py:26 msgid "Wireless LAN group" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1513 +#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1539 #: netbox/dcim/tables/devices.py:660 netbox/dcim/ui/panels.py:561 #: netbox/netbox/navigation/menu.py:156 #: netbox/wireless/tables/wirelesslan.py:20 @@ -4634,7 +4647,7 @@ msgid "Wireless LANs" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1531 netbox/dcim/forms/filtersets.py:1574 -#: netbox/dcim/forms/model_forms.py:1579 netbox/dcim/ui/panels.py:499 +#: netbox/dcim/forms/model_forms.py:1605 netbox/dcim/ui/panels.py:499 #: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:313 #: netbox/ipam/forms/filtersets.py:191 netbox/netbox/navigation/menu.py:112 #: netbox/templates/ipam/panels/prefix_addressing.html:4 @@ -4645,25 +4658,25 @@ msgid "Addressing" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1532 netbox/dcim/forms/filtersets.py:821 -#: netbox/dcim/forms/model_forms.py:1580 +#: netbox/dcim/forms/model_forms.py:1606 #: netbox/virtualization/forms/model_forms.py:370 msgid "Operation" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1533 netbox/dcim/forms/filtersets.py:1575 -#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1124 -#: netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1150 +#: netbox/dcim/forms/model_forms.py:1608 msgid "PoE" msgstr "" -#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1581 +#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1607 #: netbox/dcim/ui/panels.py:491 netbox/virtualization/forms/bulk_edit.py:237 #: netbox/virtualization/forms/model_forms.py:371 msgid "Related Interfaces" msgstr "" #: netbox/dcim/forms/bulk_edit.py:1536 netbox/dcim/forms/filtersets.py:1576 -#: netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1611 #: netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/filtersets.py:219 #: netbox/virtualization/forms/model_forms.py:374 @@ -4771,7 +4784,7 @@ msgstr "" msgid "Rack's location (if any)" msgstr "" -#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:331 +#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:357 #: netbox/dcim/tables/racks.py:209 netbox/templates/dcim/rackreservation.html:7 msgid "Units" msgstr "" @@ -4851,7 +4864,7 @@ msgid "Assigned platform" msgstr "" #: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/bulk_import.py:614 -#: netbox/dcim/forms/model_forms.py:651 +#: netbox/dcim/forms/model_forms.py:677 msgid "Virtual chassis" msgstr "" @@ -4867,7 +4880,7 @@ msgstr "" msgid "Assigned rack (if any)" msgstr "" -#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:634 msgid "Face" msgstr "" @@ -4891,7 +4904,7 @@ msgstr "" msgid "The device in which this module is installed" msgstr "" -#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:755 +#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:781 msgid "Module bay" msgstr "" @@ -4903,7 +4916,7 @@ msgstr "" msgid "The type of module" msgstr "" -#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:773 +#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:799 msgid "Replicate components" msgstr "" @@ -4913,11 +4926,11 @@ msgid "" "by default)" msgstr "" -#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:779 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:805 msgid "Adopt components" msgstr "" -#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:782 +#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:808 msgid "Adopt already existing components" msgstr "" @@ -4942,13 +4955,13 @@ msgstr "" msgid "Electrical phase (for three-phase circuits)" msgstr "" -#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1483 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1509 #: netbox/virtualization/forms/bulk_import.py:168 #: netbox/virtualization/forms/model_forms.py:310 msgid "Parent interface" msgstr "" -#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1491 +#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1517 #: netbox/virtualization/forms/bulk_import.py:175 #: netbox/virtualization/forms/model_forms.py:318 msgid "Bridged interface" @@ -5200,7 +5213,7 @@ msgid "" "characters: invalid hex." msgstr "" -#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:900 +#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:926 #: netbox/dcim/tables/devices.py:1124 #: netbox/templates/dcim/panels/virtual_chassis_members.html:10 msgid "Master" @@ -5230,7 +5243,7 @@ msgstr "" msgid "Single or three-phase" msgstr "" -#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1875 +#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1901 #: netbox/dcim/ui/panels.py:110 netbox/dcim/ui/panels.py:354 #: netbox/virtualization/ui/panels.py:28 msgid "Primary IPv4" @@ -5240,7 +5253,7 @@ msgstr "" msgid "IPv4 address with mask, e.g. 1.2.3.4/24" msgstr "" -#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1884 +#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1910 #: netbox/dcim/ui/panels.py:115 netbox/dcim/ui/panels.py:359 #: netbox/virtualization/ui/panels.py:33 msgid "Primary IPv6" @@ -5286,14 +5299,14 @@ msgstr "" msgid "A {model} named {name} already exists" msgstr "" -#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:853 +#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:879 #: netbox/dcim/tables/power.py:63 #: netbox/templates/dcim/inc/cable_termination.html:40 #: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "" -#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:880 +#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:906 #: netbox/dcim/views.py:3106 msgid "Power Feed" msgstr "" @@ -5322,12 +5335,12 @@ msgstr "" msgid "Function" msgstr "" -#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:341 +#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:367 #: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1166 msgid "Reservation" msgstr "" -#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:390 +#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:416 #: netbox/netbox/views/generic/feature_views.py:97 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" @@ -5350,7 +5363,7 @@ msgstr "" msgid "Module count" msgstr "" -#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:548 msgid "Device Role" msgstr "" @@ -5405,7 +5418,7 @@ msgstr "" msgid "Mgmt only" msgstr "" -#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1567 +#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1593 #: netbox/dcim/models/device_components.py:792 netbox/dcim/ui/panels.py:506 msgid "WWN" msgstr "" @@ -5540,63 +5553,63 @@ msgid "" "selected number of rear port positions ({rearport_count})." msgstr "" -#: netbox/dcim/forms/model_forms.py:158 +#: netbox/dcim/forms/model_forms.py:169 msgid "Contact Info" msgstr "" -#: netbox/dcim/forms/model_forms.py:211 +#: netbox/dcim/forms/model_forms.py:237 msgid "Rack Role" msgstr "" -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:380 -#: netbox/dcim/forms/model_forms.py:551 +#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:406 +#: netbox/dcim/forms/model_forms.py:577 #: netbox/utilities/forms/fields/fields.py:58 msgid "Slug" msgstr "" -#: netbox/dcim/forms/model_forms.py:276 +#: netbox/dcim/forms/model_forms.py:302 msgid "Select a pre-defined rack type, or set physical characteristics below." msgstr "" -#: netbox/dcim/forms/model_forms.py:284 +#: netbox/dcim/forms/model_forms.py:310 msgid "Inventory Control" msgstr "" -#: netbox/dcim/forms/model_forms.py:333 +#: netbox/dcim/forms/model_forms.py:359 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." msgstr "" -#: netbox/dcim/forms/model_forms.py:414 netbox/extras/forms/model_forms.py:603 +#: netbox/dcim/forms/model_forms.py:440 netbox/extras/forms/model_forms.py:603 msgid "Enter a valid JSON schema to define supported attributes." msgstr "" -#: netbox/dcim/forms/model_forms.py:445 +#: netbox/dcim/forms/model_forms.py:471 msgid "Profile & Attributes" msgstr "" -#: netbox/dcim/forms/model_forms.py:597 netbox/dcim/models/devices.py:579 +#: netbox/dcim/forms/model_forms.py:623 netbox/dcim/models/devices.py:579 msgid "The lowest-numbered unit occupied by the device" msgstr "" -#: netbox/dcim/forms/model_forms.py:662 +#: netbox/dcim/forms/model_forms.py:688 msgid "The position in the virtual chassis this device is identified by" msgstr "" -#: netbox/dcim/forms/model_forms.py:667 +#: netbox/dcim/forms/model_forms.py:693 msgid "The priority of the device in the virtual chassis" msgstr "" -#: netbox/dcim/forms/model_forms.py:776 +#: netbox/dcim/forms/model_forms.py:802 msgid "Automatically populate components associated with this module type" msgstr "" -#: netbox/dcim/forms/model_forms.py:882 +#: netbox/dcim/forms/model_forms.py:908 msgid "Characteristics" msgstr "" -#: netbox/dcim/forms/model_forms.py:1038 +#: netbox/dcim/forms/model_forms.py:1064 #, python-brace-format msgid "" "Alphanumeric ranges are supported for bulk creation. Mixed cases and types " @@ -5605,46 +5618,46 @@ msgid "" "replaced with the position value when creating a new module." msgstr "" -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 #: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 #: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 #: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 #: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 #: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 @@ -5653,7 +5666,7 @@ msgstr "" msgid "Front Port" msgstr "" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 #: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 #: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 @@ -5662,76 +5675,76 @@ msgstr "" msgid "Rear Port" msgstr "" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 #: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 #: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "" -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "" -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the " "parent device." msgstr "" -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "" -#: netbox/dcim/forms/model_forms.py:1750 netbox/dcim/forms/object_import.py:140 +#: netbox/dcim/forms/model_forms.py:1776 netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "" -#: netbox/dcim/forms/model_forms.py:1782 netbox/dcim/forms/object_import.py:145 +#: netbox/dcim/forms/model_forms.py:1808 netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "" -#: netbox/dcim/forms/model_forms.py:1788 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "" -#: netbox/dcim/forms/model_forms.py:1857 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -5745,7 +5758,7 @@ msgstr "" msgid "Virtual Machine" msgstr "" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "" From 80b9c256740ed14066e449f5b10c9d2f0432f7fd Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Tue, 31 Mar 2026 14:09:44 +0200 Subject: [PATCH 29/41] feat(dcim): Add 2.5GE SFP interface type (#21794) Add the `SFP (2.5GE)` interface type for devices with dedicated 2.5G SFP slots that do not fit the existing SFP or SFP+ options. --- netbox/dcim/choices.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index 84b22119a..e92a1e9a7 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -1012,6 +1012,7 @@ class InterfaceTypeChoices(ChoiceSet): TYPE_100ME_SFP = '100base-x-sfp' TYPE_1GE_GBIC = '1000base-x-gbic' TYPE_1GE_SFP = '1000base-x-sfp' + TYPE_2GE_SFP = '2.5gbase-x-sfp' TYPE_10GE_SFP_PLUS = '10gbase-x-sfpp' TYPE_10GE_XFP = '10gbase-x-xfp' TYPE_10GE_XENPAK = '10gbase-x-xenpak' @@ -1039,8 +1040,8 @@ class InterfaceTypeChoices(ChoiceSet): TYPE_400GE_OSFP_RHS = '400gbase-x-osfp-rhs' TYPE_400GE_CDFP = '400gbase-x-cdfp' TYPE_400GE_CFP8 = '400gbase-x-cfp8' - TYPE_800GE_QSFP_DD = '800gbase-x-qsfpdd' - TYPE_800GE_OSFP = '800gbase-x-osfp' + TYPE_800GE_QSFP_DD = '800gbase-x-qsfpdd' # TODO: Rename to _QSFP_DD800 + TYPE_800GE_OSFP = '800gbase-x-osfp' # TODO: Rename to _OSFP800 TYPE_1TE_OSFP1600 = '1.6tbase-x-osfp1600' TYPE_1TE_OSFP1600_RHS = '1.6tbase-x-osfp1600-rhs' TYPE_1TE_QSFP_DD1600 = '1.6tbase-x-qsfpdd1600' @@ -1321,6 +1322,7 @@ class InterfaceTypeChoices(ChoiceSet): (TYPE_100ME_SFP, 'SFP (100ME)'), (TYPE_1GE_GBIC, 'GBIC (1GE)'), (TYPE_1GE_SFP, 'SFP (1GE)'), + (TYPE_2GE_SFP, 'SFP (2.5GE)'), (TYPE_10GE_SFP_PLUS, 'SFP+ (10GE)'), (TYPE_10GE_XENPAK, 'XENPAK (10GE)'), (TYPE_10GE_XFP, 'XFP (10GE)'), From 0923a3dec8753a0371aabfc3b2b2a8948d70061a Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Thu, 26 Mar 2026 19:48:09 +0100 Subject: [PATCH 30/41] fix(tables): Disable ordering on non-orderable accessor columns Mark provider, member, and action_object columns as non-orderable since they use complex accessors that cannot be sorted. Add regression tests to verify all orderable columns render without exceptions. Fixes table rendering errors when attempting to sort columns with multi-level field accessors that don't support database ordering. --- netbox/circuits/tables/circuits.py | 6 +++-- netbox/circuits/tests/test_tables.py | 39 +++++++++++++++++++++++----- netbox/extras/tables/tables.py | 3 ++- netbox/extras/tests/test_tables.py | 24 +++++++++++++++++ 4 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 netbox/extras/tests/test_tables.py diff --git a/netbox/circuits/tables/circuits.py b/netbox/circuits/tables/circuits.py index 2b024f580..9ee9bd37b 100644 --- a/netbox/circuits/tables/circuits.py +++ b/netbox/circuits/tables/circuits.py @@ -190,14 +190,16 @@ class CircuitGroupAssignmentTable(NetBoxTable): provider = tables.Column( accessor='member__provider', verbose_name=_('Provider'), - linkify=True + orderable=False, + linkify=True, ) member_type = columns.ContentTypeColumn( verbose_name=_('Type') ) member = tables.Column( verbose_name=_('Circuit'), - linkify=True + orderable=False, + linkify=True, ) priority = tables.Column( verbose_name=_('Priority'), diff --git a/netbox/circuits/tests/test_tables.py b/netbox/circuits/tests/test_tables.py index 0e3ac1156..fd142f01b 100644 --- a/netbox/circuits/tests/test_tables.py +++ b/netbox/circuits/tests/test_tables.py @@ -1,23 +1,48 @@ from django.test import RequestFactory, TestCase, tag -from circuits.models import CircuitTermination -from circuits.tables import CircuitTerminationTable +from circuits.models import CircuitGroupAssignment, CircuitTermination +from circuits.tables import CircuitGroupAssignmentTable, CircuitTerminationTable @tag('regression') class CircuitTerminationTableTest(TestCase): def test_every_orderable_field_does_not_throw_exception(self): terminations = CircuitTermination.objects.all() - disallowed = {'actions', } + disallowed = { + 'actions', + } orderable_columns = [ - column.name for column in CircuitTerminationTable(terminations).columns + column.name + for column in CircuitTerminationTable(terminations).columns if column.orderable and column.name not in disallowed ] - fake_request = RequestFactory().get("/") + fake_request = RequestFactory().get('/') for col in orderable_columns: - for dir in ('-', ''): + for direction in ('-', ''): table = CircuitTerminationTable(terminations) - table.order_by = f'{dir}{col}' + table.order_by = f'{direction}{col}' + table.as_html(fake_request) + + +@tag('regression') +class CircuitGroupAssignmentTableTest(TestCase): + def test_every_orderable_field_does_not_throw_exception(self): + assignment = CircuitGroupAssignment.objects.all() + disallowed = { + 'actions', + } + + orderable_columns = [ + column.name + for column in CircuitGroupAssignmentTable(assignment).columns + if column.orderable and column.name not in disallowed + ] + fake_request = RequestFactory().get('/') + + for col in orderable_columns: + for direction in ('-', ''): + table = CircuitGroupAssignmentTable(assignment) + table.order_by = f'{direction}{col}' table.as_html(fake_request) diff --git a/netbox/extras/tables/tables.py b/netbox/extras/tables/tables.py index a4026fe39..cc1165e7c 100644 --- a/netbox/extras/tables/tables.py +++ b/netbox/extras/tables/tables.py @@ -510,8 +510,9 @@ class EventRuleTable(NetBoxTable): verbose_name=_('Type'), ) action_object = tables.Column( - linkify=True, verbose_name=_('Object'), + orderable=False, + linkify=True, ) object_types = columns.ContentTypesColumn( verbose_name=_('Object Types'), diff --git a/netbox/extras/tests/test_tables.py b/netbox/extras/tests/test_tables.py new file mode 100644 index 000000000..7fb6380c9 --- /dev/null +++ b/netbox/extras/tests/test_tables.py @@ -0,0 +1,24 @@ +from django.test import RequestFactory, TestCase, tag + +from extras.models import EventRule +from extras.tables import EventRuleTable + + +@tag('regression') +class EventRuleTableTest(TestCase): + def test_every_orderable_field_does_not_throw_exception(self): + rule = EventRule.objects.all() + disallowed = { + 'actions', + } + + orderable_columns = [ + column.name for column in EventRuleTable(rule).columns if column.orderable and column.name not in disallowed + ] + fake_request = RequestFactory().get('/') + + for col in orderable_columns: + for direction in ('-', ''): + table = EventRuleTable(rule) + table.order_by = f'{direction}{col}' + table.as_html(fake_request) From c99d8481b24f1aab7f4f1ef88e0c4b99846348e5 Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Mon, 30 Mar 2026 19:06:02 +0200 Subject: [PATCH 31/41] refactor(ui): Improve object change diff styling and layout Update change data diff styling with CSS custom properties, better color contrast, and consistent borders. Replace btn-group with card-actions for navigation buttons and improve spacing. --- netbox/project-static/dist/netbox.css | 2 +- .../project-static/styles/custom/_code.scss | 30 +++++++++++-------- .../core/panels/objectchange_difference.html | 6 ++-- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/netbox/project-static/dist/netbox.css b/netbox/project-static/dist/netbox.css index 604299143..434660498 100644 --- a/netbox/project-static/dist/netbox.css +++ b/netbox/project-static/dist/netbox.css @@ -1 +1 @@ -@charset "UTF-8";:root,[data-bs-theme=light]{--tblr-black: #000000;--tblr-white: #ffffff;--tblr-gray: #4b5563;--tblr-gray-dark: #1f2937;--tblr-gray-100: #f3f4f6;--tblr-gray-200: #e5e7eb;--tblr-gray-300: #d1d5db;--tblr-gray-400: #9ca3af;--tblr-gray-500: #6b7280;--tblr-gray-600: #4b5563;--tblr-gray-700: #374151;--tblr-gray-800: #1f2937;--tblr-gray-900: #111827;--tblr-primary: #00857D;--tblr-secondary: #6b7280;--tblr-success: #2fb344;--tblr-info: #4299e1;--tblr-warning: #f59f00;--tblr-danger: #d63939;--tblr-light: #f9fafb;--tblr-dark: #1f2937;--tblr-muted: #6b7280;--tblr-blue: #066fd1;--tblr-azure: #4299e1;--tblr-indigo: #4263eb;--tblr-purple: #ae3ec9;--tblr-pink: #d6336c;--tblr-red: #d63939;--tblr-orange: #f76707;--tblr-yellow: #f59f00;--tblr-lime: #74b816;--tblr-green: #2fb344;--tblr-teal: #0ca678;--tblr-cyan: #17a2b8;--tblr-primary-rgb: 0, 133, 125;--tblr-secondary-rgb: 107, 114, 128;--tblr-success-rgb: 47, 179, 68;--tblr-info-rgb: 66, 153, 225;--tblr-warning-rgb: 245, 159, 0;--tblr-danger-rgb: 214, 57, 57;--tblr-light-rgb: 249, 250, 251;--tblr-dark-rgb: 31, 41, 55;--tblr-muted-rgb: 107, 114, 128;--tblr-blue-rgb: 6, 111, 209;--tblr-azure-rgb: 66, 153, 225;--tblr-indigo-rgb: 66, 99, 235;--tblr-purple-rgb: 174, 62, 201;--tblr-pink-rgb: 214, 51, 108;--tblr-red-rgb: 214, 57, 57;--tblr-orange-rgb: 247, 103, 7;--tblr-yellow-rgb: 245, 159, 0;--tblr-lime-rgb: 116, 184, 22;--tblr-green-rgb: 47, 179, 68;--tblr-teal-rgb: 12, 166, 120;--tblr-cyan-rgb: 23, 162, 184;--tblr-primary-text-emphasis: rgb(0, 53.2, 50);--tblr-secondary-text-emphasis: rgb(42.8, 45.6, 51.2);--tblr-success-text-emphasis: rgb(18.8, 71.6, 27.2);--tblr-info-text-emphasis: rgb(26.4, 61.2, 90);--tblr-warning-text-emphasis: rgb(98, 63.6, 0);--tblr-danger-text-emphasis: rgb(85.6, 22.8, 22.8);--tblr-light-text-emphasis: #374151;--tblr-dark-text-emphasis: #374151;--tblr-primary-bg-subtle: rgb(204, 230.6, 229);--tblr-secondary-bg-subtle: rgb(225.4, 226.8, 229.6);--tblr-success-bg-subtle: rgb(213.4, 239.8, 217.6);--tblr-info-bg-subtle: rgb(217.2, 234.6, 249);--tblr-warning-bg-subtle: rgb(253, 235.8, 204);--tblr-danger-bg-subtle: rgb(246.8, 215.4, 215.4);--tblr-light-bg-subtle: rgb(249, 249.5, 250.5);--tblr-dark-bg-subtle: #9ca3af;--tblr-primary-border-subtle: rgb(153, 206.2, 203);--tblr-secondary-border-subtle: rgb(195.8, 198.6, 204.2);--tblr-success-border-subtle: rgb(171.8, 224.6, 180.2);--tblr-info-border-subtle: rgb(179.4, 214.2, 243);--tblr-warning-border-subtle: rgb(251, 216.6, 153);--tblr-danger-border-subtle: rgb(238.6, 175.8, 175.8);--tblr-light-border-subtle: #e5e7eb;--tblr-dark-border-subtle: #6b7280;--tblr-white-rgb: 255, 255, 255;--tblr-black-rgb: 0, 0, 0;--tblr-font-sans-serif: "Inter", system-ui, sans-serif;--tblr-font-monospace: "Roboto Mono";--tblr-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--tblr-body-font-family: var(--tblr-font-sans-serif);--tblr-body-font-size: .875rem;--tblr-body-font-weight: 400;--tblr-body-line-height: 1.4285714286;--tblr-body-color: #1f2937;--tblr-body-color-rgb: 31, 41, 55;--tblr-body-bg: #f9fafb;--tblr-body-bg-rgb: 249, 250, 251;--tblr-emphasis-color: #374151;--tblr-emphasis-color-rgb: 55, 65, 81;--tblr-secondary-color: rgba(31, 41, 55, .75);--tblr-secondary-color-rgb: 31, 41, 55;--tblr-secondary-bg: #e5e7eb;--tblr-secondary-bg-rgb: 229, 231, 235;--tblr-tertiary-color: rgba(31, 41, 55, .5);--tblr-tertiary-color-rgb: 31, 41, 55;--tblr-tertiary-bg: #f3f4f6;--tblr-tertiary-bg-rgb: 243, 244, 246;--tblr-heading-color: inherit;--tblr-link-color: #00857D;--tblr-link-color-rgb: 0, 133, 125;--tblr-link-decoration: none;--tblr-link-hover-color: rgb(0, 106.4, 100);--tblr-link-hover-color-rgb: 0, 106, 100;--tblr-link-hover-decoration: underline;--tblr-code-color: light-dark(var(--tblr-gray-600), var(--tblr-gray-400));--tblr-highlight-color: #1f2937;--tblr-highlight-bg: rgb(253, 235.8, 204);--tblr-border-width: 1px;--tblr-border-style: solid;--tblr-border-color: #e5e7eb;--tblr-border-color-translucent: rgba(4, 32, 69, .1);--tblr-border-radius: 6px;--tblr-border-radius-sm: 4px;--tblr-border-radius-lg: 8px;--tblr-border-radius-xl: 1rem;--tblr-border-radius-xxl: 2rem;--tblr-border-radius-2xl: var(--tblr-border-radius-xxl);--tblr-border-radius-pill: 100rem;--tblr-box-shadow: rgba(var(--tblr-body-color-rgb), .04) 0 2px 4px 0;--tblr-box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075);--tblr-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .175);--tblr-box-shadow-inset: 0 0 transparent;--tblr-focus-ring-width: .25rem;--tblr-focus-ring-opacity: .25;--tblr-focus-ring-color: rgba(var(--tblr-primary-rgb), .25);--tblr-form-valid-color: #2fb344;--tblr-form-valid-border-color: #2fb344;--tblr-form-invalid-color: #d63939;--tblr-form-invalid-border-color: #d63939}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{color-scheme:dark;--tblr-body-color: #e5e7eb;--tblr-body-color-rgb: 229, 231, 235;--tblr-body-bg: #111827;--tblr-body-bg-rgb: 17, 24, 39;--tblr-emphasis-color: #ffffff;--tblr-emphasis-color-rgb: 255, 255, 255;--tblr-secondary-color: rgba(229, 231, 235, .75);--tblr-secondary-color-rgb: 229, 231, 235;--tblr-secondary-bg: #1f2937;--tblr-secondary-bg-rgb: 31, 41, 55;--tblr-tertiary-color: rgba(229, 231, 235, .5);--tblr-tertiary-color-rgb: 229, 231, 235;--tblr-tertiary-bg: rgb(24, 32.5, 47);--tblr-tertiary-bg-rgb: 24, 33, 47;--tblr-primary-text-emphasis: rgb(102, 181.8, 177);--tblr-secondary-text-emphasis: rgb(166.2, 170.4, 178.8);--tblr-success-text-emphasis: rgb(130.2, 209.4, 142.8);--tblr-info-text-emphasis: rgb(141.6, 193.8, 237);--tblr-warning-text-emphasis: rgb(249, 197.4, 102);--tblr-danger-text-emphasis: rgb(230.4, 136.2, 136.2);--tblr-light-text-emphasis: #f3f4f6;--tblr-dark-text-emphasis: #d1d5db;--tblr-primary-bg-subtle: rgb(0, 26.6, 25);--tblr-secondary-bg-subtle: rgb(21.4, 22.8, 25.6);--tblr-success-bg-subtle: rgb(9.4, 35.8, 13.6);--tblr-info-bg-subtle: rgb(13.2, 30.6, 45);--tblr-warning-bg-subtle: rgb(49, 31.8, 0);--tblr-danger-bg-subtle: rgb(42.8, 11.4, 11.4);--tblr-light-bg-subtle: #1f2937;--tblr-dark-bg-subtle: rgb(15.5, 20.5, 27.5);--tblr-primary-border-subtle: rgb(0, 79.8, 75);--tblr-secondary-border-subtle: rgb(64.2, 68.4, 76.8);--tblr-success-border-subtle: rgb(28.2, 107.4, 40.8);--tblr-info-border-subtle: rgb(39.6, 91.8, 135);--tblr-warning-border-subtle: rgb(147, 95.4, 0);--tblr-danger-border-subtle: rgb(128.4, 34.2, 34.2);--tblr-light-border-subtle: #374151;--tblr-dark-border-subtle: #1f2937;--tblr-heading-color: inherit;--tblr-link-color: rgb(102, 181.8, 177);--tblr-link-hover-color: rgb(132.6, 196.44, 192.6);--tblr-link-color-rgb: 102, 182, 177;--tblr-link-hover-color-rgb: 133, 196, 193;--tblr-code-color: var(--tblr-gray-300);--tblr-highlight-color: #e5e7eb;--tblr-highlight-bg: rgb(98, 63.6, 0);--tblr-border-color: rgb(45.7069767442, 60.4511627907, 81.0930232558);--tblr-border-color-translucent: rgba(72, 110, 149, .14);--tblr-form-valid-color: rgb(130.2, 209.4, 142.8);--tblr-form-valid-border-color: rgb(130.2, 209.4, 142.8);--tblr-form-invalid-color: rgb(230.4, 136.2, 136.2);--tblr-form-invalid-border-color: rgb(230.4, 136.2, 136.2)}*,*:before,*:after{box-sizing:border-box}@media(prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--tblr-body-font-family);font-size:var(--tblr-body-font-size);font-weight:var(--tblr-body-font-weight);line-height:var(--tblr-body-line-height);color:var(--tblr-body-color);text-align:var(--tblr-body-text-align);background-color:var(--tblr-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr,.hr{margin:2rem 0;color:inherit;border:0;border-top:var(--tblr-border-width) solid;opacity:.16}h6,.h6,h5,.h5,h4,.h4,h3,.field-group h2,.field-group .h2,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:var(--tblr-spacer);font-weight:var(--tblr-font-weight-bold);line-height:1.2;color:var(--tblr-heading-color)}h1,.h1{font-size:1.5rem}h2,.h2{font-size:1.25rem}h3,.field-group h2,.field-group .h2,.h3{font-size:1rem}h4,.h4{font-size:.875rem}h5,.h5{font-size:.75rem}h6,.h6{font-size:.625rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:600}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;color:var(--tblr-highlight-color);background-color:var(--tblr-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity, 1));text-decoration:none}a:hover{--tblr-link-color-rgb: var(--tblr-link-hover-color-rgb);text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--tblr-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.85714285em;color:var(--tblr-light)}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.85714285em;color:var(--tblr-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.25rem .5rem;font-size:var(--tblr-font-size-h5);color:var(--tblr-text-secondary-dark);background-color:var(--tblr-code-bg);border-radius:4px}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--tblr-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;line-height:inherit;font-size:1.5rem}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale(1)}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:.875rem;font-weight:var(--tblr-font-weight-normal)}.display-1{font-weight:300;line-height:1.2;font-size:5rem}.display-2{font-weight:300;line-height:1.2;font-size:4.5rem}.display-3{font-weight:300;line-height:1.2;font-size:4rem}.display-4{font-weight:300;line-height:1.2;font-size:3.5rem}.display-5{font-weight:300;line-height:1.2;font-size:3rem}.display-6{font-weight:300;line-height:1.2;font-size:2rem}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:.875rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#4b5563}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--tblr-body-bg);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-sm);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--tblr-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--tblr-gutter-x: calc(var(--tblr-page-padding) * 2);--tblr-gutter-y: 0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto}@media(min-width:576px){.container-sm,.container{max-width:540px}}@media(min-width:768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width:992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width:1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width:1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--tblr-breakpoint-xs: 0;--tblr-breakpoint-sm: 576px;--tblr-breakpoint-md: 768px;--tblr-breakpoint-lg: 992px;--tblr-breakpoint-xl: 1200px;--tblr-breakpoint-xxl: 1400px}.row{--tblr-gutter-x: var(--tblr-page-padding);--tblr-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--tblr-gutter-y));margin-right:calc(-.5 * var(--tblr-gutter-x));margin-left:calc(-.5 * var(--tblr-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-top:var(--tblr-gutter-y)}.grid{display:grid;grid-template-rows:repeat(var(--tblr-rows, 1),1fr);grid-template-columns:repeat(var(--tblr-columns, 12),1fr);gap:var(--tblr-gap, var(--tblr-page-padding))}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width:576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width:768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width:992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width:1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width:1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.col{flex:1 0 0}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--tblr-gutter-x: 0}.g-0,.gy-0{--tblr-gutter-y: 0}.g-1,.gx-1{--tblr-gutter-x: .25rem}.g-1,.gy-1{--tblr-gutter-y: .25rem}.g-2,.gx-2{--tblr-gutter-x: .5rem}.g-2,.gy-2{--tblr-gutter-y: .5rem}.g-3,.gx-3{--tblr-gutter-x: 1rem}.g-3,.gy-3{--tblr-gutter-y: 1rem}.g-4,.gx-4{--tblr-gutter-x: 1.5rem}.g-4,.gy-4{--tblr-gutter-y: 1.5rem}.g-5,.gx-5{--tblr-gutter-x: 2rem}.g-5,.gy-5{--tblr-gutter-y: 2rem}.g-6,.gx-6{--tblr-gutter-x: 2.5rem}.g-6,.gy-6{--tblr-gutter-y: 2.5rem}@media(min-width:576px){.col-sm{flex:1 0 0}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--tblr-gutter-x: 0}.g-sm-0,.gy-sm-0{--tblr-gutter-y: 0}.g-sm-1,.gx-sm-1{--tblr-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--tblr-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--tblr-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--tblr-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--tblr-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--tblr-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--tblr-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--tblr-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--tblr-gutter-x: 2rem}.g-sm-5,.gy-sm-5{--tblr-gutter-y: 2rem}.g-sm-6,.gx-sm-6{--tblr-gutter-x: 2.5rem}.g-sm-6,.gy-sm-6{--tblr-gutter-y: 2.5rem}}@media(min-width:768px){.col-md{flex:1 0 0}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--tblr-gutter-x: 0}.g-md-0,.gy-md-0{--tblr-gutter-y: 0}.g-md-1,.gx-md-1{--tblr-gutter-x: .25rem}.g-md-1,.gy-md-1{--tblr-gutter-y: .25rem}.g-md-2,.gx-md-2{--tblr-gutter-x: .5rem}.g-md-2,.gy-md-2{--tblr-gutter-y: .5rem}.g-md-3,.gx-md-3{--tblr-gutter-x: 1rem}.g-md-3,.gy-md-3{--tblr-gutter-y: 1rem}.g-md-4,.gx-md-4{--tblr-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--tblr-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--tblr-gutter-x: 2rem}.g-md-5,.gy-md-5{--tblr-gutter-y: 2rem}.g-md-6,.gx-md-6{--tblr-gutter-x: 2.5rem}.g-md-6,.gy-md-6{--tblr-gutter-y: 2.5rem}}@media(min-width:992px){.col-lg{flex:1 0 0}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--tblr-gutter-x: 0}.g-lg-0,.gy-lg-0{--tblr-gutter-y: 0}.g-lg-1,.gx-lg-1{--tblr-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--tblr-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--tblr-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--tblr-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--tblr-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--tblr-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--tblr-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--tblr-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--tblr-gutter-x: 2rem}.g-lg-5,.gy-lg-5{--tblr-gutter-y: 2rem}.g-lg-6,.gx-lg-6{--tblr-gutter-x: 2.5rem}.g-lg-6,.gy-lg-6{--tblr-gutter-y: 2.5rem}}@media(min-width:1200px){.col-xl{flex:1 0 0}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--tblr-gutter-x: 0}.g-xl-0,.gy-xl-0{--tblr-gutter-y: 0}.g-xl-1,.gx-xl-1{--tblr-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--tblr-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--tblr-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--tblr-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--tblr-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--tblr-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--tblr-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--tblr-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--tblr-gutter-x: 2rem}.g-xl-5,.gy-xl-5{--tblr-gutter-y: 2rem}.g-xl-6,.gx-xl-6{--tblr-gutter-x: 2.5rem}.g-xl-6,.gy-xl-6{--tblr-gutter-y: 2.5rem}}@media(min-width:1400px){.col-xxl{flex:1 0 0}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--tblr-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--tblr-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--tblr-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--tblr-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--tblr-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--tblr-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--tblr-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--tblr-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--tblr-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--tblr-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--tblr-gutter-x: 2rem}.g-xxl-5,.gy-xxl-5{--tblr-gutter-y: 2rem}.g-xxl-6,.gx-xxl-6{--tblr-gutter-x: 2.5rem}.g-xxl-6,.gy-xxl-6{--tblr-gutter-y: 2.5rem}}.table,.markdown>table{--tblr-table-color-type: initial;--tblr-table-bg-type: initial;--tblr-table-color-state: initial;--tblr-table-bg-state: initial;--tblr-table-color: inherit;--tblr-table-bg: transparent;--tblr-table-border-color: var(--tblr-border-color-translucent);--tblr-table-accent-bg: transparent;--tblr-table-striped-color: inherit;--tblr-table-striped-bg: var(--tblr-bg-surface-tertiary);--tblr-table-active-color: inherit;--tblr-table-active-bg: var(--tblr-active-bg);--tblr-table-hover-color: inherit;--tblr-table-hover-bg: rgba(var(--tblr-emphasis-color-rgb), .075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--tblr-table-border-color)}.table>:not(caption)>*>*,.markdown>table>:not(caption)>*>*{padding:.5rem;color:var(--tblr-table-color-state, var(--tblr-table-color-type, var(--tblr-table-color)));background-color:var(--tblr-table-bg);border-bottom-width:var(--tblr-border-width);box-shadow:inset 0 0 0 9999px var(--tblr-table-bg-state, var(--tblr-table-bg-type, var(--tblr-table-accent-bg)))}.table>tbody,.markdown>table>tbody{vertical-align:inherit}.table>thead,.markdown>table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--tblr-border-width) * 2) solid var(--tblr-border-color-translucent)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*,.markdown>table>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*,.markdown>table>:not(caption)>*{border-width:var(--tblr-border-width) 0}.table-bordered>:not(caption)>*>*,.markdown>table>:not(caption)>*>*{border-width:0 var(--tblr-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(2n)>*{--tblr-table-color-type: var(--tblr-table-striped-color);--tblr-table-bg-type: var(--tblr-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--tblr-table-color-type: var(--tblr-table-striped-color);--tblr-table-bg-type: var(--tblr-table-striped-bg)}.table-active{--tblr-table-color-state: var(--tblr-table-active-color);--tblr-table-bg-state: var(--tblr-table-active-bg)}.table-hover>tbody>tr:hover>*{--tblr-table-color-state: var(--tblr-table-hover-color);--tblr-table-bg-state: var(--tblr-table-hover-bg)}.table-primary{--tblr-table-color: #1f2937;--tblr-table-bg: rgb(204, 230.6, 229);--tblr-table-border-color: rgb(169.4, 192.68, 194.2);--tblr-table-striped-bg: rgb(195.35, 221.12, 220.3);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(186.7, 211.64, 211.6);--tblr-table-active-color: #1f2937;--tblr-table-hover-bg: rgb(191.025, 216.38, 215.95);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-secondary{--tblr-table-color: #1f2937;--tblr-table-bg: rgb(225.4, 226.8, 229.6);--tblr-table-border-color: rgb(186.52, 189.64, 194.68);--tblr-table-striped-bg: rgb(215.68, 217.51, 220.87);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(205.96, 208.22, 212.14);--tblr-table-active-color: #1f2937;--tblr-table-hover-bg: rgb(210.82, 212.865, 216.505);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-success{--tblr-table-color: #1f2937;--tblr-table-bg: rgb(213.4, 239.8, 217.6);--tblr-table-border-color: rgb(176.92, 200.04, 185.08);--tblr-table-striped-bg: rgb(204.28, 229.86, 209.47);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(195.16, 219.92, 201.34);--tblr-table-active-color: #1f2937;--tblr-table-hover-bg: rgb(199.72, 224.89, 205.405);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-info{--tblr-table-color: #1f2937;--tblr-table-bg: rgb(217.2, 234.6, 249);--tblr-table-border-color: rgb(179.96, 195.88, 210.2);--tblr-table-striped-bg: rgb(207.89, 224.92, 239.3);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(198.58, 215.24, 229.6);--tblr-table-active-color: #1f2937;--tblr-table-hover-bg: rgb(203.235, 220.08, 234.45);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-warning{--tblr-table-color: #1f2937;--tblr-table-bg: rgb(253, 235.8, 204);--tblr-table-border-color: rgb(208.6, 196.84, 174.2);--tblr-table-striped-bg: rgb(241.9, 226.06, 196.55);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(230.8, 216.32, 189.1);--tblr-table-active-color: #1f2937;--tblr-table-hover-bg: rgb(236.35, 221.19, 192.825);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-danger{--tblr-table-color: #1f2937;--tblr-table-bg: rgb(246.8, 215.4, 215.4);--tblr-table-border-color: rgb(203.64, 180.52, 183.32);--tblr-table-striped-bg: rgb(236.01, 206.68, 207.38);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(225.22, 197.96, 199.36);--tblr-table-active-color: #f9fafb;--tblr-table-hover-bg: rgb(230.615, 202.32, 203.37);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-light{--tblr-table-color: #1f2937;--tblr-table-bg: #f9fafb;--tblr-table-border-color: rgb(205.4, 208.2, 211.8);--tblr-table-striped-bg: rgb(238.1, 239.55, 241.2);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(227.2, 229.1, 231.4);--tblr-table-active-color: #1f2937;--tblr-table-hover-bg: rgb(232.65, 234.325, 236.3);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-dark{--tblr-table-color: #f9fafb;--tblr-table-bg: #1f2937;--tblr-table-border-color: rgb(74.6, 82.8, 94.2);--tblr-table-striped-bg: rgb(41.9, 51.45, 64.8);--tblr-table-striped-color: #f9fafb;--tblr-table-active-bg: rgb(52.8, 61.9, 74.6);--tblr-table-active-color: #f9fafb;--tblr-table-hover-bg: rgb(47.35, 56.675, 69.7);--tblr-table-hover-color: #f9fafb;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem;font-size:.875rem;font-weight:var(--tblr-font-weight-medium)}.col-form-label{padding-top:calc(.5625rem + var(--tblr-border-width));padding-bottom:calc(.5625rem + var(--tblr-border-width));margin-bottom:0;font-size:inherit;font-weight:var(--tblr-font-weight-medium);line-height:1.25rem}.col-form-label-lg{padding-top:calc(.6875rem + var(--tblr-border-width));padding-bottom:calc(.6875rem + var(--tblr-border-width));font-size:1rem}.col-form-label-sm{padding-top:calc(.3125rem + var(--tblr-border-width));padding-bottom:calc(.3125rem + var(--tblr-border-width));font-size:.75rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--tblr-secondary-color)}.form-control{display:block;width:100%;padding:.5625rem 1rem;font-family:var(--tblr-body-font-family);font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--tblr-body-color);appearance:none;background-color:var(--tblr-bg-forms);background-clip:padding-box;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--tblr-body-color);background-color:var(--tblr-bg-forms);border-color:#80c2be;outline:0;box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.25rem;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--tblr-tertiary);opacity:1}.form-control:disabled{background-color:var(--tblr-bg-surface-secondary);opacity:1}.form-control::file-selector-button{padding:.5625rem 1rem;margin:-.5625rem -1rem;margin-inline-end:1rem;color:var(--tblr-body-color);background-color:var(--tblr-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--tblr-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.5625rem 0;margin-bottom:0;line-height:1.25rem;color:var(--tblr-body-color);background-color:transparent;border:solid transparent;border-width:var(--tblr-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.25rem + .625rem + calc(var(--tblr-border-width) * 2));padding:.3125rem .5rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-control-sm::file-selector-button{padding:.3125rem .5rem;margin:-.3125rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.25rem + 1.375rem + calc(var(--tblr-border-width) * 2));padding:.6875rem 1.5rem;font-size:1rem;border-radius:var(--tblr-border-radius-lg)}.form-control-lg::file-selector-button{padding:.6875rem 1.5rem;margin:-.6875rem -1.5rem;margin-inline-end:1.5rem}textarea.form-control{min-height:calc(1.25rem + 1.125rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.25rem + .625rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.25rem + 1.375rem + calc(var(--tblr-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.25rem + 1.125rem + calc(var(--tblr-border-width) * 2));padding:.5625rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color.form-control-sm{height:calc(1.25rem + .625rem + calc(var(--tblr-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.25rem + 1.375rem + calc(var(--tblr-border-width) * 2))}.form-select{--tblr-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%239ca3af' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.5625rem 3rem .5625rem 1rem;font-family:var(--tblr-body-font-family);font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--tblr-body-color);appearance:none;background-color:var(--tblr-bg-forms);background-image:var(--tblr-form-select-bg-img),var(--tblr-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right 1rem center;background-size:16px 12px;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#80c2be;outline:0;box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:1rem;background-image:none}.form-select:disabled{background-color:var(--tblr-bg-surface-secondary)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--tblr-body-color)}.form-select-sm{padding-top:.3125rem;padding-bottom:.3125rem;padding-left:.5rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-select-lg{padding-top:.6875rem;padding-bottom:.6875rem;padding-left:1.5rem;font-size:1rem;border-radius:var(--tblr-border-radius-lg)}[data-bs-theme=dark] .form-select,body[data-bs-theme=dark] [data-bs-theme=light] .form-select{--tblr-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23e5e7eb' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.25rem;padding-left:2rem;margin-bottom:.75rem}.form-check .form-check-input{float:left;margin-left:-2rem}.form-check-reverse{padding-right:2rem;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-2rem;margin-left:0}.form-check-input{--tblr-form-check-bg: var(--tblr-bg-forms);flex-shrink:0;width:1.25rem;height:1.25rem;margin-top:.0892857143rem;vertical-align:top;appearance:none;background-color:var(--tblr-form-check-bg);background-image:var(--tblr-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:var(--tblr-border-radius)}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#80c2be;outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-check-input:checked{background-color:var(--tblr-primary);border-color:var(--tblr-border-color-translucent)}.form-check-input:checked[type=checkbox]{--tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:var(--tblr-primary);border-color:var(--tblr-primary);--tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.7}.form-switch{padding-left:2.5rem}.form-switch .form-check-input{--tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23e5e7eb'/%3e%3c/svg%3e");width:2rem;margin-left:-2.5rem;background-image:var(--tblr-form-switch-bg);background-position:left center;border-radius:2rem;transition:background-position .15s ease-in-out}.form-switch .form-check-input:focus{--tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgb%28127.5, 194, 190%29'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ffffff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5rem;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5rem;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.4}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.25rem;padding:0;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #f9fafb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #f9fafb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.375rem;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #ffffff;border-radius:1rem;box-shadow:0 .1rem .25rem #0000001a;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b3dad8}.form-range::-webkit-slider-runnable-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:var(--tblr-box-shadow-inset)}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #ffffff;border-radius:1rem;box-shadow:0 .1rem .25rem #0000001a;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b3dad8}.form-range::-moz-range-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:var(--tblr-box-shadow-inset)}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--tblr-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--tblr-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--tblr-border-width) * 2));min-height:calc(3.5rem + calc(var(--tblr-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;max-width:100%;height:100%;padding:1rem;overflow:hidden;color:rgba(var(--tblr-body-color-rgb),.65);text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--tblr-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem;padding-left:1rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:-webkit-autofill~label{transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>textarea:focus~label:after,.form-floating>textarea:not(:placeholder-shown)~label:after{position:absolute;inset:1rem .5rem;z-index:-1;height:1.5em;content:"";background-color:var(--tblr-bg-forms);border-radius:var(--tblr-border-radius)}.form-floating>textarea:disabled~label:after{background-color:var(--tblr-bg-surface-secondary)}.form-floating>.form-control-plaintext~label{border-width:var(--tblr-border-width) 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#4b5563}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.5625rem 1rem;font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--tblr-gray-500);text-align:center;white-space:nowrap;background-color:var(--tblr-bg-surface-secondary);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.6875rem 1.5rem;font-size:1rem;border-radius:var(--tblr-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.3125rem .5rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:4rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(-1 * var(--tblr-border-width));border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--tblr-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-1) var(--tblr-spacer-3);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-success);border-radius:var(--tblr-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--tblr-form-valid-border-color);padding-right:2.375rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 1.53125rem center;background-size:1.8125rem 1.8125rem}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:2.375rem;background-position:top 1.53125rem right 1.53125rem}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--tblr-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");padding-right:5.5rem;background-position:right 1rem center,center right 3rem;background-size:16px 12px,1.8125rem 1.8125rem}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:5.375rem}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--tblr-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--tblr-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--tblr-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--tblr-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-1) var(--tblr-spacer-3);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-danger);border-radius:var(--tblr-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,select.tomselected.is-invalid+div.ts-wrapper~.invalid-feedback,.is-invalid~.invalid-tooltip,select.tomselected.is-invalid+div.ts-wrapper~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid,select.tomselected.is-invalid+div.form-control.ts-wrapper{border-color:var(--tblr-form-invalid-border-color);padding-right:2.375rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 1.53125rem center;background-size:1.8125rem 1.8125rem}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,select.tomselected.is-invalid+div.form-control.ts-wrapper:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:2.375rem;background-position:top 1.53125rem right 1.53125rem}.was-validated .form-select:invalid,.form-select.is-invalid,select.tomselected.is-invalid+div.form-select.ts-wrapper{border-color:var(--tblr-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),select.tomselected.is-invalid+div.form-select.ts-wrapper:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],select.tomselected.is-invalid+div.form-select.ts-wrapper:not([multiple])[size="1"]{--tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");padding-right:5.5rem;background-position:right 1rem center,center right 3rem;background-size:16px 12px,1.8125rem 1.8125rem}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus,select.tomselected.is-invalid+div.form-select.ts-wrapper:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid,select.tomselected.is-invalid+div.form-control-color.ts-wrapper{width:5.375rem}.was-validated .form-check-input:invalid,.form-check-input.is-invalid,select.tomselected.is-invalid+div.form-check-input.ts-wrapper{border-color:var(--tblr-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked,select.tomselected.is-invalid+div.form-check-input.ts-wrapper:checked{background-color:var(--tblr-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus,select.tomselected.is-invalid+div.form-check-input.ts-wrapper:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label,select.tomselected.is-invalid+div.form-check-input.ts-wrapper~.form-check-label{color:var(--tblr-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.input-group>select.tomselected.is-invalid+div.form-control.ts-wrapper:not(:focus),.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.input-group>select.tomselected.is-invalid+div.form-select.ts-wrapper:not(:focus),.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>select.tomselected.is-invalid+div.form-floating.ts-wrapper:not(:focus-within){z-index:4}.btn{--tblr-btn-padding-x: .5rem;--tblr-btn-padding-y: .25rem;--tblr-btn-font-family: var(--tblr-body-font-family);--tblr-btn-font-size: .875rem;--tblr-btn-font-weight: var(--tblr-font-weight-medium);--tblr-btn-line-height: 1.25rem;--tblr-btn-color: var(--tblr-body-color);--tblr-btn-bg: transparent;--tblr-btn-border-width: var(--tblr-border-width);--tblr-btn-border-color: transparent;--tblr-btn-border-radius: var(--tblr-border-radius);--tblr-btn-hover-border-color: transparent;--tblr-btn-box-shadow: var(--tblr-shadow-input);--tblr-btn-disabled-opacity: .4;--tblr-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--tblr-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--tblr-btn-padding-y) var(--tblr-btn-padding-x);font-family:var(--tblr-btn-font-family);font-size:var(--tblr-btn-font-size);font-weight:var(--tblr-btn-font-weight);line-height:var(--tblr-btn-line-height);color:var(--tblr-btn-color);text-align:center;vertical-align:middle;cursor:pointer;user-select:none;border:var(--tblr-btn-border-width) solid var(--tblr-btn-border-color);border-radius:var(--tblr-btn-border-radius);background-color:var(--tblr-btn-bg);box-shadow:var(--tblr-btn-box-shadow);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--tblr-btn-hover-color);text-decoration:none;background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--tblr-btn-color);background-color:var(--tblr-btn-bg);border-color:var(--tblr-btn-border-color)}.btn:focus-visible{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--tblr-btn-active-color);background-color:var(--tblr-btn-active-bg);border-color:var(--tblr-btn-active-border-color);box-shadow:var(--tblr-btn-active-shadow)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--tblr-btn-active-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--tblr-btn-active-shadow),var(--tblr-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--tblr-btn-disabled-color);pointer-events:none;background-color:var(--tblr-btn-disabled-bg);border-color:var(--tblr-btn-disabled-border-color);opacity:var(--tblr-btn-disabled-opacity);box-shadow:none}.btn-link{--tblr-btn-font-weight: 400;--tblr-btn-color: var(--tblr-link-color);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-link-hover-color);--tblr-btn-hover-border-color: transparent;--tblr-btn-active-color: var(--tblr-link-hover-color);--tblr-btn-active-border-color: transparent;--tblr-btn-disabled-color: #4b5563;--tblr-btn-disabled-border-color: transparent;--tblr-btn-box-shadow: 0 0 0 #000;--tblr-btn-focus-shadow-rgb: 37, 151, 144;text-decoration:none}.btn-link:hover,.btn-link:focus-visible{text-decoration:underline}.btn-link:focus-visible{color:var(--tblr-btn-color)}.btn-link:hover{color:var(--tblr-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--tblr-btn-padding-y: .6875rem;--tblr-btn-padding-x: 1.5rem;--tblr-btn-font-size: 1rem;--tblr-btn-border-radius: var(--tblr-border-radius-lg)}.btn-sm,.btn-group-sm>.btn{--tblr-btn-padding-y: .3125rem;--tblr-btn-padding-x: .5rem;--tblr-btn-font-size: .75rem;--tblr-btn-border-radius: var(--tblr-border-radius-sm)}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-45deg)}.dropdown-menu{--tblr-dropdown-zindex: 1000;--tblr-dropdown-min-width: 11rem;--tblr-dropdown-padding-x: 0;--tblr-dropdown-padding-y: .25rem;--tblr-dropdown-spacer: 1px;--tblr-dropdown-font-size: .875rem;--tblr-dropdown-color: var(--tblr-body-color);--tblr-dropdown-bg: var(--tblr-bg-surface);--tblr-dropdown-border-color: var(--tblr-border-color-translucent);--tblr-dropdown-border-radius: var(--tblr-border-radius);--tblr-dropdown-border-width: var(--tblr-border-width);--tblr-dropdown-inner-border-radius: calc(var(--tblr-border-radius) - var(--tblr-border-width));--tblr-dropdown-divider-bg: var(--tblr-border-color-translucent);--tblr-dropdown-divider-margin-y: var(--tblr-spacer-2);--tblr-dropdown-box-shadow: var(--tblr-shadow-dropdown);--tblr-dropdown-link-color: inherit;--tblr-dropdown-link-hover-color: inherit;--tblr-dropdown-link-hover-bg: rgba(var(--tblr-secondary-rgb), .08);--tblr-dropdown-link-active-color: var(--tblr-primary);--tblr-dropdown-link-active-bg: var(--tblr-active-bg);--tblr-dropdown-link-disabled-color: var(--tblr-tertiary-color);--tblr-dropdown-item-padding-x: .75rem;--tblr-dropdown-item-padding-y: .5rem;--tblr-dropdown-header-color: #4b5563;--tblr-dropdown-header-padding-x: .75rem;--tblr-dropdown-header-padding-y: .25rem;position:absolute;z-index:var(--tblr-dropdown-zindex);display:none;min-width:var(--tblr-dropdown-min-width);padding:var(--tblr-dropdown-padding-y) var(--tblr-dropdown-padding-x);margin:0;font-size:var(--tblr-dropdown-font-size);color:var(--tblr-dropdown-color);text-align:left;list-style:none;background-color:var(--tblr-dropdown-bg);background-clip:padding-box;border:var(--tblr-dropdown-border-width) solid var(--tblr-dropdown-border-color);border-radius:var(--tblr-dropdown-border-radius);box-shadow:var(--tblr-dropdown-box-shadow)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--tblr-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width:576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width:768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width:992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width:1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width:1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--tblr-dropdown-spacer)}.dropup .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(135deg)}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--tblr-dropdown-spacer)}.dropend .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-135deg)}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--tblr-dropdown-spacer)}.dropstart .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(45deg)}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--tblr-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--tblr-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--tblr-dropdown-link-color);text-align:inherit;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--tblr-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--tblr-dropdown-link-hover-color);text-decoration:none;background-color:var(--tblr-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--tblr-dropdown-link-active-color);text-decoration:none;background-color:var(--tblr-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--tblr-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--tblr-dropdown-header-padding-y) var(--tblr-dropdown-header-padding-x);margin-bottom:0;font-size:.765625rem;color:var(--tblr-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);color:var(--tblr-dropdown-link-color)}.dropdown-menu-dark{--tblr-dropdown-color: #d1d5db;--tblr-dropdown-bg: #1f2937;--tblr-dropdown-border-color: var(--tblr-border-color-translucent);--tblr-dropdown-box-shadow: ;--tblr-dropdown-link-color: #d1d5db;--tblr-dropdown-link-hover-color: #ffffff;--tblr-dropdown-divider-bg: var(--tblr-border-color-translucent);--tblr-dropdown-link-hover-bg: rgba(255, 255, 255, .15);--tblr-dropdown-link-active-color: var(--tblr-primary);--tblr-dropdown-link-active-bg: var(--tblr-active-bg);--tblr-dropdown-link-disabled-color: #6b7280;--tblr-dropdown-header-color: #6b7280}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--tblr-border-radius)}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(-1 * var(--tblr-border-width))}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn-group.show .dropdown-toggle{box-shadow:inset 0 3px 5px #00000020}.btn-group.show .dropdown-toggle.btn-link{box-shadow:none}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(-1 * var(--tblr-border-width))}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:nth-child(n+3),.btn-group-vertical>:not(.btn-check)+.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--tblr-nav-link-padding-x: .75rem;--tblr-nav-link-padding-y: .5rem;--tblr-nav-link-font-weight: ;--tblr-nav-link-color: var(--tblr-gray-500);--tblr-nav-link-hover-color: var(--tblr-link-hover-color);--tblr-nav-link-disabled-color: var(--tblr-disabled-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--tblr-nav-link-padding-y) var(--tblr-nav-link-padding-x);font-size:var(--tblr-nav-link-font-size);font-weight:var(--tblr-nav-link-font-weight);color:var(--tblr-nav-link-color);background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}.nav-link:hover,.nav-link:focus{color:var(--tblr-nav-link-hover-color);text-decoration:none}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.nav-link.disabled,.nav-link:disabled{color:var(--tblr-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--tblr-nav-tabs-border-width: var(--tblr-border-width);--tblr-nav-tabs-border-color: var(--tblr-border-color);--tblr-nav-tabs-border-radius: var(--tblr-border-radius);--tblr-nav-tabs-link-hover-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);--tblr-nav-tabs-link-active-color: var(--tblr-body-color);--tblr-nav-tabs-link-active-bg: var(--tblr-body-bg);--tblr-nav-tabs-link-active-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);border-bottom:var(--tblr-nav-tabs-border-width) solid var(--tblr-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--tblr-nav-tabs-border-width));border:var(--tblr-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--tblr-nav-tabs-border-radius);border-top-right-radius:var(--tblr-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--tblr-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--tblr-nav-tabs-link-active-color);background-color:var(--tblr-nav-tabs-link-active-bg);border-color:var(--tblr-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--tblr-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--tblr-nav-pills-border-radius: var(--tblr-border-radius);--tblr-nav-pills-link-active-color: var(--tblr-primary);--tblr-nav-pills-link-active-bg: rgba(var(--tblr-secondary-rgb), .15)}.nav-pills .nav-link{border-radius:var(--tblr-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--tblr-nav-pills-link-active-color);background-color:var(--tblr-nav-pills-link-active-bg)}.nav-underline{--tblr-nav-underline-gap: 1rem;--tblr-nav-underline-border-width: .125rem;--tblr-nav-underline-link-active-color: var(--tblr-emphasis-color);gap:var(--tblr-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--tblr-nav-underline-border-width) solid transparent}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:600;color:var(--tblr-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-grow:1;flex-basis:0;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--tblr-navbar-padding-x: 0;--tblr-navbar-padding-y: .25rem;--tblr-navbar-color: var(--tblr-secondary);--tblr-navbar-hover-color: var(--tblr-body-color);--tblr-navbar-disabled-color: var(--tblr-disabled-color);--tblr-navbar-active-color: var(--tblr-body-color);--tblr-navbar-brand-padding-y: .5rem;--tblr-navbar-brand-margin-end: 1rem;--tblr-navbar-brand-font-size: 1.25rem;--tblr-navbar-brand-color: var(--tblr-body-color);--tblr-navbar-brand-hover-color: var(--tblr-body-color);--tblr-navbar-nav-link-padding-x: .75rem;--tblr-navbar-toggler-padding-y: 0;--tblr-navbar-toggler-padding-x: 0;--tblr-navbar-toggler-font-size: 1rem;--tblr-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2831, 41, 55, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--tblr-navbar-toggler-border-color: rgba(var(--tblr-emphasis-color-rgb), .15);--tblr-navbar-toggler-border-radius: var(--tblr-border-radius);--tblr-navbar-toggler-focus-width: 0;--tblr-navbar-toggler-transition: box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--tblr-navbar-padding-y) var(--tblr-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--tblr-navbar-brand-padding-y);padding-bottom:var(--tblr-navbar-brand-padding-y);margin-right:var(--tblr-navbar-brand-margin-end);font-size:var(--tblr-navbar-brand-font-size);color:var(--tblr-navbar-brand-color);white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--tblr-navbar-brand-hover-color);text-decoration:none}.navbar-nav{--tblr-nav-link-padding-x: 0;--tblr-nav-link-padding-y: .5rem;--tblr-nav-link-font-weight: ;--tblr-nav-link-color: var(--tblr-navbar-color);--tblr-nav-link-hover-color: var(--tblr-navbar-hover-color);--tblr-nav-link-disabled-color: var(--tblr-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--tblr-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--tblr-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--tblr-navbar-active-color)}.navbar-collapse{flex-grow:1;flex-basis:100%;align-items:center}.navbar-toggler{padding:var(--tblr-navbar-toggler-padding-y) var(--tblr-navbar-toggler-padding-x);font-size:var(--tblr-navbar-toggler-font-size);line-height:1;color:var(--tblr-navbar-color);background-color:transparent;border:var(--tblr-border-width) solid var(--tblr-navbar-toggler-border-color);border-radius:var(--tblr-navbar-toggler-border-radius);transition:var(--tblr-navbar-toggler-transition)}@media(prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--tblr-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--tblr-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--tblr-scroll-height, 75vh);overflow-y:auto}@media(min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark],body[data-bs-theme=dark] .navbar[data-bs-theme=light]{--tblr-navbar-color: rgba(255, 255, 255, .7);--tblr-navbar-hover-color: rgba(255, 255, 255, .75);--tblr-navbar-disabled-color: var(--tblr-disabled-color);--tblr-navbar-active-color: #ffffff;--tblr-navbar-brand-color: #ffffff;--tblr-navbar-brand-hover-color: #ffffff;--tblr-navbar-toggler-border-color: rgba(255, 255, 255, .1);--tblr-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon,body[data-bs-theme=dark] [data-bs-theme=light] .navbar-toggler-icon{--tblr-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--tblr-card-spacer-y: 1rem;--tblr-card-spacer-x: 1.25rem;--tblr-card-title-spacer-y: 1.25rem;--tblr-card-title-color: ;--tblr-card-subtitle-color: ;--tblr-card-border-width: var(--tblr-border-width);--tblr-card-border-color: var(--tblr-border-color-translucent);--tblr-card-border-radius: var(--tblr-border-radius-lg);--tblr-card-box-shadow: var(--tblr-shadow-card);--tblr-card-inner-border-radius: calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)));--tblr-card-cap-padding-y: 1rem;--tblr-card-cap-padding-x: 1.25rem;--tblr-card-cap-bg: var(--tblr-bg-surface-tertiary);--tblr-card-cap-color: inherit;--tblr-card-height: ;--tblr-card-color: inherit;--tblr-card-bg: var(--tblr-bg-surface);--tblr-card-img-overlay-padding: 1rem;--tblr-card-group-margin: 1.5rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--tblr-card-height);color:var(--tblr-body-color);word-wrap:break-word;background-color:var(--tblr-card-bg);background-clip:border-box;border:var(--tblr-card-border-width) solid var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius);box-shadow:var(--tblr-card-box-shadow)}.card>hr,.card>.hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--tblr-card-inner-border-radius);border-top-right-radius:var(--tblr-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--tblr-card-inner-border-radius);border-bottom-left-radius:var(--tblr-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--tblr-card-spacer-y) var(--tblr-card-spacer-x);color:var(--tblr-card-color)}.card-title{margin-bottom:var(--tblr-card-title-spacer-y);color:var(--tblr-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--tblr-card-title-spacer-y));margin-bottom:0;color:var(--tblr-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:var(--tblr-card-spacer-x)}.card-header{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);margin-bottom:0;color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-bottom:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-header:first-child{border-radius:var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius) 0 0}.card-footer{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-top:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--tblr-card-cap-padding-x));margin-bottom:calc(-1 * var(--tblr-card-cap-padding-y));margin-left:calc(-.5 * var(--tblr-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--tblr-card-bg);border-bottom-color:var(--tblr-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--tblr-card-cap-padding-x));margin-left:calc(-.5 * var(--tblr-card-cap-padding-x))}.card-img-overlay{position:absolute;inset:0;padding:var(--tblr-card-img-overlay-padding);border-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--tblr-card-inner-border-radius);border-top-right-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--tblr-card-inner-border-radius);border-bottom-left-radius:var(--tblr-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--tblr-card-group-margin)}@media(min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child)>.card-img-top,.card-group>.card:not(:last-child)>.card-header{border-top-right-radius:0}.card-group>.card:not(:last-child)>.card-img-bottom,.card-group>.card:not(:last-child)>.card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child)>.card-img-top,.card-group>.card:not(:first-child)>.card-header{border-top-left-radius:0}.card-group>.card:not(:first-child)>.card-img-bottom,.card-group>.card:not(:first-child)>.card-footer{border-bottom-left-radius:0}}.pagination{--tblr-pagination-padding-x: .25rem;--tblr-pagination-padding-y: calc(.25rem + 1px) ;--tblr-pagination-font-size: .875rem;--tblr-pagination-color: var(--tblr-body-color);--tblr-pagination-bg: transparent;--tblr-pagination-border-width: 1px;--tblr-pagination-border-color: transparent;--tblr-pagination-border-radius: var(--tblr-border-radius);--tblr-pagination-hover-color: var(--tblr-link-hover-color);--tblr-pagination-hover-bg: var(--tblr-active-bg);--tblr-pagination-hover-border-color: var(--tblr-pagination-border-color);--tblr-pagination-focus-color: var(--tblr-link-hover-color);--tblr-pagination-focus-bg: var(--tblr-secondary-bg);--tblr-pagination-focus-box-shadow: 0 0 0 .25rem rgba(var(--tblr-primary-rgb), .25);--tblr-pagination-active-color: #ffffff;--tblr-pagination-active-bg: var(--tblr-primary);--tblr-pagination-active-border-color: var(--tblr-primary);--tblr-pagination-disabled-color: var(--tblr-disabled-color);--tblr-pagination-disabled-bg: transparent;--tblr-pagination-disabled-border-color: var(--tblr-pagination-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--tblr-pagination-padding-y) var(--tblr-pagination-padding-x);font-size:var(--tblr-pagination-font-size);color:var(--tblr-pagination-color);background-color:var(--tblr-pagination-bg);border:var(--tblr-pagination-border-width) solid var(--tblr-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--tblr-pagination-hover-color);text-decoration:none;background-color:var(--tblr-pagination-hover-bg);border-color:var(--tblr-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--tblr-pagination-focus-color);background-color:var(--tblr-pagination-focus-bg);outline:0;box-shadow:var(--tblr-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--tblr-pagination-active-color);background-color:var(--tblr-pagination-active-bg);border-color:var(--tblr-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--tblr-pagination-disabled-color);pointer-events:none;background-color:var(--tblr-pagination-disabled-bg);border-color:var(--tblr-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item:first-child .page-link{border-top-left-radius:var(--tblr-pagination-border-radius);border-bottom-left-radius:var(--tblr-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--tblr-pagination-border-radius);border-bottom-right-radius:var(--tblr-pagination-border-radius)}.pagination-lg{--tblr-pagination-padding-x: 1.5rem;--tblr-pagination-padding-y: .75rem;--tblr-pagination-font-size: 1.09375rem;--tblr-pagination-border-radius: var(--tblr-border-radius-lg)}.pagination-sm{--tblr-pagination-padding-x: .5rem;--tblr-pagination-padding-y: .25rem;--tblr-pagination-font-size: .765625rem;--tblr-pagination-border-radius: var(--tblr-border-radius-sm)}@keyframes progress-bar-stripes{0%{background-position-x:var(--tblr-progress-height)}}.progress,.progress-stacked{--tblr-progress-height: .5rem;--tblr-progress-font-size: .65625rem;--tblr-progress-bg: var(--tblr-border-color);--tblr-progress-border-radius: var(--tblr-border-radius);--tblr-progress-box-shadow: var(--tblr-box-shadow-inset);--tblr-progress-bar-color: #ffffff;--tblr-progress-bar-bg: var(--tblr-primary);--tblr-progress-bar-transition: width .6s ease;display:flex;height:var(--tblr-progress-height);overflow:hidden;font-size:var(--tblr-progress-font-size);background-color:var(--tblr-progress-bg);border-radius:var(--tblr-progress-border-radius);box-shadow:var(--tblr-progress-box-shadow)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--tblr-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--tblr-progress-bar-bg);transition:var(--tblr-progress-bar-transition)}@media(prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--tblr-progress-height) var(--tblr-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--tblr-list-group-color: var(--tblr-body-color);--tblr-list-group-bg: inherit;--tblr-list-group-border-color: var(--tblr-border-color);--tblr-list-group-border-width: var(--tblr-border-width);--tblr-list-group-border-radius: var(--tblr-border-radius);--tblr-list-group-item-padding-x: 1.25rem;--tblr-list-group-item-padding-y: 1rem;--tblr-list-group-action-color: inherit;--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: rgba(var(--tblr-secondary-rgb), .08);--tblr-list-group-action-active-color: var(--tblr-body-color);--tblr-list-group-action-active-bg: var(--tblr-secondary-bg);--tblr-list-group-disabled-color: var(--tblr-secondary-color);--tblr-list-group-disabled-bg: inherit;--tblr-list-group-active-color: inherit;--tblr-list-group-active-bg: var(--tblr-active-bg);--tblr-list-group-active-border-color: var(--tblr-border-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--tblr-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item{position:relative;display:block;padding:var(--tblr-list-group-item-padding-y) var(--tblr-list-group-item-padding-x);color:var(--tblr-list-group-color);background-color:var(--tblr-list-group-bg);border:var(--tblr-list-group-border-width) solid var(--tblr-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--tblr-list-group-disabled-color);pointer-events:none;background-color:var(--tblr-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--tblr-list-group-active-color);background-color:var(--tblr-list-group-active-bg);border-color:var(--tblr-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--tblr-list-group-border-width));border-top-width:var(--tblr-list-group-border-width)}.list-group-item-action{width:100%;color:var(--tblr-list-group-action-color);text-align:inherit}.list-group-item-action:not(.active):hover,.list-group-item-action:not(.active):focus{z-index:1;color:var(--tblr-list-group-action-hover-color);text-decoration:none;background-color:var(--tblr-list-group-action-hover-bg)}.list-group-item-action:not(.active):active{color:var(--tblr-list-group-action-active-color);background-color:var(--tblr-list-group-action-active-bg)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}@media(min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media(min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media(min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media(min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media(min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--tblr-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--tblr-list-group-color: var(--tblr-primary-text-emphasis);--tblr-list-group-bg: var(--tblr-primary-bg-subtle);--tblr-list-group-border-color: var(--tblr-primary-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-primary-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-primary-border-subtle);--tblr-list-group-active-color: var(--tblr-primary-bg-subtle);--tblr-list-group-active-bg: var(--tblr-primary-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-primary-text-emphasis)}.list-group-item-secondary{--tblr-list-group-color: var(--tblr-secondary-text-emphasis);--tblr-list-group-bg: var(--tblr-secondary-bg-subtle);--tblr-list-group-border-color: var(--tblr-secondary-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-secondary-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-secondary-border-subtle);--tblr-list-group-active-color: var(--tblr-secondary-bg-subtle);--tblr-list-group-active-bg: var(--tblr-secondary-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-secondary-text-emphasis)}.list-group-item-success{--tblr-list-group-color: var(--tblr-success-text-emphasis);--tblr-list-group-bg: var(--tblr-success-bg-subtle);--tblr-list-group-border-color: var(--tblr-success-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-success-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-success-border-subtle);--tblr-list-group-active-color: var(--tblr-success-bg-subtle);--tblr-list-group-active-bg: var(--tblr-success-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-success-text-emphasis)}.list-group-item-info{--tblr-list-group-color: var(--tblr-info-text-emphasis);--tblr-list-group-bg: var(--tblr-info-bg-subtle);--tblr-list-group-border-color: var(--tblr-info-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-info-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-info-border-subtle);--tblr-list-group-active-color: var(--tblr-info-bg-subtle);--tblr-list-group-active-bg: var(--tblr-info-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-info-text-emphasis)}.list-group-item-warning{--tblr-list-group-color: var(--tblr-warning-text-emphasis);--tblr-list-group-bg: var(--tblr-warning-bg-subtle);--tblr-list-group-border-color: var(--tblr-warning-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-warning-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-warning-border-subtle);--tblr-list-group-active-color: var(--tblr-warning-bg-subtle);--tblr-list-group-active-bg: var(--tblr-warning-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-warning-text-emphasis)}.list-group-item-danger{--tblr-list-group-color: var(--tblr-danger-text-emphasis);--tblr-list-group-bg: var(--tblr-danger-bg-subtle);--tblr-list-group-border-color: var(--tblr-danger-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-danger-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-danger-border-subtle);--tblr-list-group-active-color: var(--tblr-danger-bg-subtle);--tblr-list-group-active-bg: var(--tblr-danger-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-danger-text-emphasis)}.list-group-item-light{--tblr-list-group-color: var(--tblr-light-text-emphasis);--tblr-list-group-bg: var(--tblr-light-bg-subtle);--tblr-list-group-border-color: var(--tblr-light-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-light-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-light-border-subtle);--tblr-list-group-active-color: var(--tblr-light-bg-subtle);--tblr-list-group-active-bg: var(--tblr-light-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-light-text-emphasis)}.list-group-item-dark{--tblr-list-group-color: var(--tblr-dark-text-emphasis);--tblr-list-group-bg: var(--tblr-dark-bg-subtle);--tblr-list-group-border-color: var(--tblr-dark-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-dark-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-dark-border-subtle);--tblr-list-group-active-color: var(--tblr-dark-bg-subtle);--tblr-list-group-active-bg: var(--tblr-dark-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-dark-text-emphasis)}.list-group-item-muted{--tblr-list-group-color: var(--tblr-muted-text-emphasis);--tblr-list-group-bg: var(--tblr-muted-bg-subtle);--tblr-list-group-border-color: var(--tblr-muted-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-muted-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-muted-border-subtle);--tblr-list-group-active-color: var(--tblr-muted-bg-subtle);--tblr-list-group-active-bg: var(--tblr-muted-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-muted-text-emphasis)}.list-group-item-blue{--tblr-list-group-color: var(--tblr-blue-text-emphasis);--tblr-list-group-bg: var(--tblr-blue-bg-subtle);--tblr-list-group-border-color: var(--tblr-blue-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-blue-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-blue-border-subtle);--tblr-list-group-active-color: var(--tblr-blue-bg-subtle);--tblr-list-group-active-bg: var(--tblr-blue-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-blue-text-emphasis)}.list-group-item-azure{--tblr-list-group-color: var(--tblr-azure-text-emphasis);--tblr-list-group-bg: var(--tblr-azure-bg-subtle);--tblr-list-group-border-color: var(--tblr-azure-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-azure-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-azure-border-subtle);--tblr-list-group-active-color: var(--tblr-azure-bg-subtle);--tblr-list-group-active-bg: var(--tblr-azure-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-azure-text-emphasis)}.list-group-item-indigo{--tblr-list-group-color: var(--tblr-indigo-text-emphasis);--tblr-list-group-bg: var(--tblr-indigo-bg-subtle);--tblr-list-group-border-color: var(--tblr-indigo-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-indigo-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-indigo-border-subtle);--tblr-list-group-active-color: var(--tblr-indigo-bg-subtle);--tblr-list-group-active-bg: var(--tblr-indigo-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-indigo-text-emphasis)}.list-group-item-purple{--tblr-list-group-color: var(--tblr-purple-text-emphasis);--tblr-list-group-bg: var(--tblr-purple-bg-subtle);--tblr-list-group-border-color: var(--tblr-purple-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-purple-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-purple-border-subtle);--tblr-list-group-active-color: var(--tblr-purple-bg-subtle);--tblr-list-group-active-bg: var(--tblr-purple-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-purple-text-emphasis)}.list-group-item-pink{--tblr-list-group-color: var(--tblr-pink-text-emphasis);--tblr-list-group-bg: var(--tblr-pink-bg-subtle);--tblr-list-group-border-color: var(--tblr-pink-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-pink-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-pink-border-subtle);--tblr-list-group-active-color: var(--tblr-pink-bg-subtle);--tblr-list-group-active-bg: var(--tblr-pink-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-pink-text-emphasis)}.list-group-item-red{--tblr-list-group-color: var(--tblr-red-text-emphasis);--tblr-list-group-bg: var(--tblr-red-bg-subtle);--tblr-list-group-border-color: var(--tblr-red-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-red-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-red-border-subtle);--tblr-list-group-active-color: var(--tblr-red-bg-subtle);--tblr-list-group-active-bg: var(--tblr-red-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-red-text-emphasis)}.list-group-item-orange{--tblr-list-group-color: var(--tblr-orange-text-emphasis);--tblr-list-group-bg: var(--tblr-orange-bg-subtle);--tblr-list-group-border-color: var(--tblr-orange-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-orange-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-orange-border-subtle);--tblr-list-group-active-color: var(--tblr-orange-bg-subtle);--tblr-list-group-active-bg: var(--tblr-orange-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-orange-text-emphasis)}.list-group-item-yellow{--tblr-list-group-color: var(--tblr-yellow-text-emphasis);--tblr-list-group-bg: var(--tblr-yellow-bg-subtle);--tblr-list-group-border-color: var(--tblr-yellow-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-yellow-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-yellow-border-subtle);--tblr-list-group-active-color: var(--tblr-yellow-bg-subtle);--tblr-list-group-active-bg: var(--tblr-yellow-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-yellow-text-emphasis)}.list-group-item-lime{--tblr-list-group-color: var(--tblr-lime-text-emphasis);--tblr-list-group-bg: var(--tblr-lime-bg-subtle);--tblr-list-group-border-color: var(--tblr-lime-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-lime-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-lime-border-subtle);--tblr-list-group-active-color: var(--tblr-lime-bg-subtle);--tblr-list-group-active-bg: var(--tblr-lime-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-lime-text-emphasis)}.list-group-item-green{--tblr-list-group-color: var(--tblr-green-text-emphasis);--tblr-list-group-bg: var(--tblr-green-bg-subtle);--tblr-list-group-border-color: var(--tblr-green-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-green-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-green-border-subtle);--tblr-list-group-active-color: var(--tblr-green-bg-subtle);--tblr-list-group-active-bg: var(--tblr-green-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-green-text-emphasis)}.list-group-item-teal{--tblr-list-group-color: var(--tblr-teal-text-emphasis);--tblr-list-group-bg: var(--tblr-teal-bg-subtle);--tblr-list-group-border-color: var(--tblr-teal-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-teal-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-teal-border-subtle);--tblr-list-group-active-color: var(--tblr-teal-bg-subtle);--tblr-list-group-active-bg: var(--tblr-teal-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-teal-text-emphasis)}.list-group-item-cyan{--tblr-list-group-color: var(--tblr-cyan-text-emphasis);--tblr-list-group-bg: var(--tblr-cyan-bg-subtle);--tblr-list-group-border-color: var(--tblr-cyan-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-cyan-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-cyan-border-subtle);--tblr-list-group-active-color: var(--tblr-cyan-bg-subtle);--tblr-list-group-active-bg: var(--tblr-cyan-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-cyan-text-emphasis)}.toast{--tblr-toast-zindex: 1090;--tblr-toast-padding-x: .75rem;--tblr-toast-padding-y: .5rem;--tblr-toast-spacing: calc(var(--tblr-page-padding) * 2);--tblr-toast-max-width: 350px;--tblr-toast-font-size: .875rem;--tblr-toast-color: ;--tblr-toast-bg: var(--tblr-bg-surface);--tblr-toast-border-width: var(--tblr-border-width);--tblr-toast-border-color: var(--tblr-border-color);--tblr-toast-border-radius: var(--tblr-border-radius);--tblr-toast-box-shadow: var(--tblr-box-shadow);--tblr-toast-header-color: var(--tblr-gray-500);--tblr-toast-header-bg: rgba(var(--tblr-body-bg-rgb), .85);--tblr-toast-header-border-color: var(--tblr-border-color);width:var(--tblr-toast-max-width);max-width:100%;font-size:var(--tblr-toast-font-size);color:var(--tblr-toast-color);pointer-events:auto;background-color:var(--tblr-toast-bg);background-clip:padding-box;border:var(--tblr-toast-border-width) solid var(--tblr-toast-border-color);box-shadow:var(--tblr-toast-box-shadow);border-radius:var(--tblr-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--tblr-toast-zindex: 1090;position:absolute;z-index:var(--tblr-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--tblr-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--tblr-toast-padding-y) var(--tblr-toast-padding-x);color:var(--tblr-toast-header-color);background-color:var(--tblr-toast-header-bg);background-clip:padding-box;border-bottom:var(--tblr-toast-border-width) solid var(--tblr-toast-header-border-color);border-top-left-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width));border-top-right-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--tblr-toast-padding-x));margin-left:var(--tblr-toast-padding-x)}.toast-body{padding:var(--tblr-toast-padding-x);word-wrap:break-word}.modal{--tblr-modal-zindex: 1055;--tblr-modal-width: 540px;--tblr-modal-padding: 1.5rem;--tblr-modal-margin: .5rem;--tblr-modal-color: var(--tblr-body-color);--tblr-modal-bg: var(--tblr-bg-surface);--tblr-modal-border-color: transparent;--tblr-modal-border-width: var(--tblr-border-width);--tblr-modal-border-radius: var(--tblr-border-radius-lg);--tblr-modal-box-shadow: var(--tblr-box-shadow-sm);--tblr-modal-inner-border-radius: calc(var(--tblr-modal-border-radius) - 1px);--tblr-modal-header-padding-x: 1.5rem;--tblr-modal-header-padding-y: 1.5rem;--tblr-modal-header-padding: 1.5rem;--tblr-modal-header-border-color: var(--tblr-border-color);--tblr-modal-header-border-width: var(--tblr-border-width);--tblr-modal-title-line-height: 1.4285714286;--tblr-modal-footer-gap: .75rem;--tblr-modal-footer-bg: var(--tblr-bg-surface-tertiary);--tblr-modal-footer-border-color: var(--tblr-border-color);--tblr-modal-footer-border-width: var(--tblr-border-width);position:fixed;top:0;left:0;z-index:var(--tblr-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--tblr-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transform:translateY(-1rem);transition:transform .3s ease-out}@media(prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--tblr-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--tblr-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--tblr-modal-color);pointer-events:auto;background-color:var(--tblr-modal-bg);background-clip:padding-box;border:var(--tblr-modal-border-width) solid var(--tblr-modal-border-color);border-radius:var(--tblr-modal-border-radius);box-shadow:var(--tblr-modal-box-shadow);outline:0}.modal-backdrop{--tblr-backdrop-zindex: 1050;--tblr-backdrop-bg: var(--tblr-gray-800);--tblr-backdrop-opacity: .24;position:fixed;top:0;left:0;z-index:var(--tblr-backdrop-zindex);width:100vw;height:100vh;background-color:var(--tblr-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--tblr-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--tblr-modal-header-padding);border-bottom:var(--tblr-modal-header-border-width) solid var(--tblr-modal-header-border-color);border-top-left-radius:var(--tblr-modal-inner-border-radius);border-top-right-radius:var(--tblr-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--tblr-modal-header-padding-y) * .5) calc(var(--tblr-modal-header-padding-x) * .5);margin-top:calc(-.5 * var(--tblr-modal-header-padding-y));margin-right:calc(-.5 * var(--tblr-modal-header-padding-x));margin-bottom:calc(-.5 * var(--tblr-modal-header-padding-y));margin-left:auto}.modal-title{margin-bottom:0;line-height:var(--tblr-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--tblr-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--tblr-modal-padding) - var(--tblr-modal-footer-gap) * .5);background-color:var(--tblr-modal-footer-bg);border-top:var(--tblr-modal-footer-border-width) solid var(--tblr-modal-footer-border-color);border-bottom-right-radius:var(--tblr-modal-inner-border-radius);border-bottom-left-radius:var(--tblr-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--tblr-modal-footer-gap) * .5)}@media(min-width:576px){.modal{--tblr-modal-margin: 1.75rem;--tblr-modal-box-shadow: var(--tblr-box-shadow)}.modal-dialog{max-width:var(--tblr-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--tblr-modal-width: 380px}}@media(min-width:992px){.modal-lg,.modal-xl{--tblr-modal-width: 720px}}@media(min-width:1200px){.modal-xl{--tblr-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--tblr-tooltip-zindex: 1080;--tblr-tooltip-max-width: 200px;--tblr-tooltip-padding-x: var(--tblr-spacer-3);--tblr-tooltip-padding-y: var(--tblr-spacer-1);--tblr-tooltip-margin: ;--tblr-tooltip-font-size: .765625rem;--tblr-tooltip-color: var(--tblr-text-inverted);--tblr-tooltip-bg: var(--tblr-bg-surface-inverted);--tblr-tooltip-border-radius: var(--tblr-border-radius);--tblr-tooltip-opacity: .9;--tblr-tooltip-arrow-width: .8rem;--tblr-tooltip-arrow-height: .4rem;z-index:var(--tblr-tooltip-zindex);display:block;margin:var(--tblr-tooltip-margin);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--tblr-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--tblr-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--tblr-tooltip-arrow-width);height:var(--tblr-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1 * var(--tblr-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-top-color:var(--tblr-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-right-color:var(--tblr-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1 * var(--tblr-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-bottom-color:var(--tblr-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:calc(var(--tblr-tooltip-arrow-width) * .5) 0 calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-left-color:var(--tblr-tooltip-bg)}.tooltip-inner{max-width:var(--tblr-tooltip-max-width);padding:var(--tblr-tooltip-padding-y) var(--tblr-tooltip-padding-x);color:var(--tblr-tooltip-color);text-align:center;background-color:var(--tblr-tooltip-bg);border-radius:var(--tblr-tooltip-border-radius)}.popover{--tblr-popover-zindex: 1070;--tblr-popover-max-width: 276px;--tblr-popover-font-size: .765625rem;--tblr-popover-bg: var(--tblr-bg-surface);--tblr-popover-border-width: var(--tblr-border-width);--tblr-popover-border-color: var(--tblr-border-color);--tblr-popover-border-radius: var(--tblr-border-radius-lg);--tblr-popover-inner-border-radius: calc(var(--tblr-border-radius-lg) - var(--tblr-border-width));--tblr-popover-box-shadow: var(--tblr-shadow-lg);--tblr-popover-header-padding-x: 1rem;--tblr-popover-header-padding-y: .5rem;--tblr-popover-header-font-size: .875rem;--tblr-popover-header-color: inherit;--tblr-popover-header-bg: transparent;--tblr-popover-body-padding-x: .5rem;--tblr-popover-body-padding-y: .5rem;--tblr-popover-body-color: inherit;--tblr-popover-arrow-width: 1rem;--tblr-popover-arrow-height: .5rem;--tblr-popover-arrow-border: var(--tblr-popover-border-color);z-index:var(--tblr-popover-zindex);display:block;max-width:var(--tblr-popover-max-width);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--tblr-popover-font-size);word-wrap:break-word;background-color:var(--tblr-popover-bg);background-clip:padding-box;border:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-radius:var(--tblr-popover-border-radius);box-shadow:var(--tblr-popover-box-shadow)}.popover .popover-arrow{display:block;width:var(--tblr-popover-arrow-width);height:var(--tblr-popover-arrow-height)}.popover .popover-arrow:before,.popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width))}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{border-width:var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-top-color:var(--tblr-popover-arrow-border)}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:var(--tblr-popover-border-width);border-top-color:var(--tblr-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-popover-arrow-width)}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{border-width:calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-right-color:var(--tblr-popover-arrow-border)}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:var(--tblr-popover-border-width);border-right-color:var(--tblr-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width))}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{border-width:0 calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-bottom-color:var(--tblr-popover-arrow-border)}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:var(--tblr-popover-border-width);border-bottom-color:var(--tblr-popover-bg)}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--tblr-popover-arrow-width);margin-left:calc(-.5 * var(--tblr-popover-arrow-width));content:"";border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-popover-arrow-width)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{border-width:calc(var(--tblr-popover-arrow-width) * .5) 0 calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-left-color:var(--tblr-popover-arrow-border)}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:var(--tblr-popover-border-width);border-left-color:var(--tblr-popover-bg)}.popover-header{padding:var(--tblr-popover-header-padding-y) var(--tblr-popover-header-padding-x);margin-bottom:0;font-size:var(--tblr-popover-header-font-size);color:var(--tblr-popover-header-color);background-color:var(--tblr-popover-header-bg);border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-top-left-radius:var(--tblr-popover-inner-border-radius);border-top-right-radius:var(--tblr-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--tblr-popover-body-padding-y) var(--tblr-popover-body-padding-x);color:var(--tblr-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;filter:var(--tblr-carousel-control-icon-filter);border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion:reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:1.5rem;height:1.5rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='15 18 9 12 15 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='9 18 15 12 9 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:var(--tblr-carousel-indicator-active-bg);background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:var(--tblr-carousel-caption-color);text-align:center}.carousel-dark{--tblr-carousel-indicator-active-bg: #000000;--tblr-carousel-caption-color: #000000;--tblr-carousel-control-icon-filter: invert(1) grayscale(100)}:root,[data-bs-theme=light]{--tblr-carousel-indicator-active-bg: #ffffff;--tblr-carousel-caption-color: #ffffff;--tblr-carousel-control-icon-filter: }[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{--tblr-carousel-indicator-active-bg: #000000;--tblr-carousel-caption-color: #000000;--tblr-carousel-control-icon-filter: invert(1) grayscale(100)}.spinner-grow,.spinner-border{display:inline-block;flex-shrink:0;width:var(--tblr-spinner-width);height:var(--tblr-spinner-height);vertical-align:var(--tblr-spinner-vertical-align);border-radius:50%;animation:var(--tblr-spinner-animation-speed) linear infinite var(--tblr-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--tblr-spinner-width: 1.5rem;--tblr-spinner-height: 1.5rem;--tblr-spinner-vertical-align: -.125em;--tblr-spinner-border-width: 2px;--tblr-spinner-animation-speed: .75s;--tblr-spinner-animation-name: spinner-border;border:var(--tblr-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--tblr-spinner-width: 1rem;--tblr-spinner-height: 1rem;--tblr-spinner-border-width: 1px}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--tblr-spinner-width: 1.5rem;--tblr-spinner-height: 1.5rem;--tblr-spinner-vertical-align: -.125em;--tblr-spinner-animation-speed: .75s;--tblr-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--tblr-spinner-width: 1rem;--tblr-spinner-height: 1rem}@media(prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--tblr-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--tblr-offcanvas-zindex: 1045;--tblr-offcanvas-width: 400px;--tblr-offcanvas-height: 30vh;--tblr-offcanvas-padding-x: 1.5rem;--tblr-offcanvas-padding-y: 1.5rem;--tblr-offcanvas-color: var(--tblr-body-color);--tblr-offcanvas-bg: var(--tblr-bg-surface);--tblr-offcanvas-border-width: var(--tblr-border-width);--tblr-offcanvas-border-color: var(--tblr-border-color);--tblr-offcanvas-box-shadow: var(--tblr-box-shadow-sm);--tblr-offcanvas-transition: transform .3s ease-in-out;--tblr-offcanvas-title-line-height: 1.4285714286}@media(max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media(max-width:575.98px)and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media(max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width:576px){.offcanvas-sm{--tblr-offcanvas-height: auto;--tblr-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media(max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media(max-width:767.98px)and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media(max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width:768px){.offcanvas-md{--tblr-offcanvas-height: auto;--tblr-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media(max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media(max-width:991.98px)and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media(max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width:992px){.offcanvas-lg{--tblr-offcanvas-height: auto;--tblr-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media(max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media(max-width:1199.98px)and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media(max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width:1200px){.offcanvas-xl{--tblr-offcanvas-height: auto;--tblr-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media(max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media(max-width:1399.98px)and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media(max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width:1400px){.offcanvas-xxl{--tblr-offcanvas-height: auto;--tblr-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}@media(prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:var(--tblr-gray-800)}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.24}.offcanvas-header{display:flex;align-items:center;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--tblr-offcanvas-padding-y) * .5) calc(var(--tblr-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--tblr-offcanvas-padding-y));margin-right:calc(-.5 * var(--tblr-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--tblr-offcanvas-padding-y));margin-left:auto}.offcanvas-title{margin-bottom:0;line-height:var(--tblr-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.2}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.1}}.placeholder-wave{mask-image:linear-gradient(130deg,#000 55%,#000000e6,#000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{mask-position:-200% 0%}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{object-fit:contain!important}.object-fit-cover{object-fit:cover!important}.object-fit-fill{object-fit:fill!important}.object-fit-scale{object-fit:scale-down!important}.object-fit-none{object-fit:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--tblr-box-shadow)!important}.shadow-sm{box-shadow:var(--tblr-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--tblr-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--tblr-focus-ring-color: rgba(var(--tblr-primary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-secondary{--tblr-focus-ring-color: rgba(var(--tblr-secondary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-success{--tblr-focus-ring-color: rgba(var(--tblr-success-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-info{--tblr-focus-ring-color: rgba(var(--tblr-info-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-warning{--tblr-focus-ring-color: rgba(var(--tblr-warning-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-danger{--tblr-focus-ring-color: rgba(var(--tblr-danger-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-light{--tblr-focus-ring-color: rgba(var(--tblr-light-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-dark{--tblr-focus-ring-color: rgba(var(--tblr-dark-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-muted{--tblr-focus-ring-color: rgba(var(--tblr-muted-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-blue{--tblr-focus-ring-color: rgba(var(--tblr-blue-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-azure{--tblr-focus-ring-color: rgba(var(--tblr-azure-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-indigo{--tblr-focus-ring-color: rgba(var(--tblr-indigo-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-purple{--tblr-focus-ring-color: rgba(var(--tblr-purple-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-pink{--tblr-focus-ring-color: rgba(var(--tblr-pink-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-red{--tblr-focus-ring-color: rgba(var(--tblr-red-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-orange{--tblr-focus-ring-color: rgba(var(--tblr-orange-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-yellow{--tblr-focus-ring-color: rgba(var(--tblr-yellow-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-lime{--tblr-focus-ring-color: rgba(var(--tblr-lime-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-green{--tblr-focus-ring-color: rgba(var(--tblr-green-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-teal{--tblr-focus-ring-color: rgba(var(--tblr-teal-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-cyan{--tblr-focus-ring-color: rgba(var(--tblr-cyan-rgb), var(--tblr-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-wide{border:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-0{border:0!important}.border-top{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-top-wide{border-top:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-end-wide{border-right:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-bottom-wide{border-bottom:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-start-wide{border-left:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-start-0{border-left:0!important}.border-red{--tblr-border-opacity: 1;border-color:rgba(var(--tblr-red-rgb),var(--tblr-border-opacity))!important}.border-green{--tblr-border-opacity: 1;border-color:rgba(var(--tblr-green-rgb),var(--tblr-border-opacity))!important}.border-primary-subtle{border-color:var(--tblr-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--tblr-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--tblr-success-border-subtle)!important}.border-info-subtle{border-color:var(--tblr-info-border-subtle)!important}.border-warning-subtle{border-color:var(--tblr-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--tblr-danger-border-subtle)!important}.border-light-subtle{border-color:var(--tblr-light-border-subtle)!important}.border-dark-subtle{border-color:var(--tblr-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--tblr-border-opacity: .1}.border-opacity-25{--tblr-border-opacity: .25}.border-opacity-50{--tblr-border-opacity: .5}.border-opacity-75{--tblr-border-opacity: .75}.border-opacity-100{--tblr-border-opacity: 1}.w-25{width:25%!important}.w-33{width:33.33333%!important}.w-50{width:50%!important}.w-66{width:66.66666%!important}.w-75{width:75%!important}.w-100{width:100%!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-33{height:33.33333%!important}.h-50{height:50%!important}.h-66{height:66.66666%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:2rem!important}.m-6{margin:2.5rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:2rem!important;margin-left:2rem!important}.mx-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:2rem!important}.mt-6{margin-top:2.5rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:2rem!important}.me-6{margin-right:2.5rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:2rem!important}.mb-6{margin-bottom:2.5rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:2rem!important}.ms-6{margin-left:2.5rem!important}.ms-auto{margin-left:auto!important}.m-n1{margin:-.25rem!important}.m-n2{margin:-.5rem!important}.m-n3{margin:-1rem!important}.m-n4{margin:-1.5rem!important}.m-n5{margin:-2rem!important}.m-n6{margin:-2.5rem!important}.mx-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-n1{margin-top:-.25rem!important}.mt-n2{margin-top:-.5rem!important}.mt-n3{margin-top:-1rem!important}.mt-n4{margin-top:-1.5rem!important}.mt-n5{margin-top:-2rem!important}.mt-n6{margin-top:-2.5rem!important}.me-n1{margin-right:-.25rem!important}.me-n2{margin-right:-.5rem!important}.me-n3{margin-right:-1rem!important}.me-n4{margin-right:-1.5rem!important}.me-n5{margin-right:-2rem!important}.me-n6{margin-right:-2.5rem!important}.mb-n1{margin-bottom:-.25rem!important}.mb-n2{margin-bottom:-.5rem!important}.mb-n3{margin-bottom:-1rem!important}.mb-n4{margin-bottom:-1.5rem!important}.mb-n5{margin-bottom:-2rem!important}.mb-n6{margin-bottom:-2.5rem!important}.ms-n1{margin-left:-.25rem!important}.ms-n2{margin-left:-.5rem!important}.ms-n3{margin-left:-1rem!important}.ms-n4{margin-left:-1.5rem!important}.ms-n5{margin-left:-2rem!important}.ms-n6{margin-left:-2.5rem!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:2rem!important}.p-6{padding:2.5rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:2rem!important;padding-left:2rem!important}.px-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:2rem!important}.pt-6{padding-top:2.5rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:2rem!important}.pe-6{padding-right:2.5rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:2rem!important}.pb-6{padding-bottom:2.5rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:2rem!important}.ps-6{padding-left:2.5rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:2rem!important}.gap-6{gap:2.5rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:2rem!important}.row-gap-6{row-gap:2.5rem!important}.column-gap-0{column-gap:0!important}.column-gap-1{column-gap:.25rem!important}.column-gap-2{column-gap:.5rem!important}.column-gap-3{column-gap:1rem!important}.column-gap-4{column-gap:1.5rem!important}.column-gap-5{column-gap:2rem!important}.column-gap-6{column-gap:2.5rem!important}.font-monospace{font-family:var(--tblr-font-monospace)!important}.fs-1{font-size:1.5rem!important}.fs-2{font-size:1.25rem!important}.fs-3{font-size:1rem!important}.fs-4{font-size:.875rem!important}.fs-5{font-size:.75rem!important}.fs-6{font-size:.625rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold,.fw-bold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.1428571429!important}.lh-base{line-height:1.4285714286!important}.lh-lg{line-height:1.7142857143!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--tblr-text-opacity: 1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important}.text-secondary{--tblr-text-opacity: 1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important}.text-success{--tblr-text-opacity: 1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important}.text-info{--tblr-text-opacity: 1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important}.text-warning{--tblr-text-opacity: 1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important}.text-danger{--tblr-text-opacity: 1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important}.text-light{--tblr-text-opacity: 1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important}.text-dark{--tblr-text-opacity: 1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important}.text-muted{--tblr-text-opacity: 1;color:var(--tblr-secondary-color)!important}.text-blue{--tblr-text-opacity: 1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important}.text-azure{--tblr-text-opacity: 1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important}.text-indigo{--tblr-text-opacity: 1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important}.text-purple{--tblr-text-opacity: 1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important}.text-pink{--tblr-text-opacity: 1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important}.text-red{--tblr-text-opacity: 1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important}.text-orange{--tblr-text-opacity: 1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important}.text-yellow{--tblr-text-opacity: 1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important}.text-lime{--tblr-text-opacity: 1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important}.text-green{--tblr-text-opacity: 1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important}.text-teal{--tblr-text-opacity: 1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important}.text-cyan{--tblr-text-opacity: 1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important}.text-black{--tblr-text-opacity: 1;color:rgba(var(--tblr-black-rgb),var(--tblr-text-opacity))!important}.text-white{--tblr-text-opacity: 1;color:rgba(var(--tblr-white-rgb),var(--tblr-text-opacity))!important}.text-body{--tblr-text-opacity: 1;color:rgba(var(--tblr-body-color-rgb),var(--tblr-text-opacity))!important}.text-black-50{--tblr-text-opacity: 1;color:#00000080!important}.text-white-50{--tblr-text-opacity: 1;color:#ffffff80!important}.text-body-secondary{--tblr-text-opacity: 1;color:var(--tblr-secondary-color)!important}.text-body-tertiary{--tblr-text-opacity: 1;color:var(--tblr-tertiary-color)!important}.text-body-emphasis{--tblr-text-opacity: 1;color:var(--tblr-emphasis-color)!important}.text-reset{--tblr-text-opacity: 1;color:inherit!important}.text-opacity-25{--tblr-text-opacity: .25}.text-opacity-50{--tblr-text-opacity: .5}.text-opacity-75{--tblr-text-opacity: .75}.text-opacity-100{--tblr-text-opacity: 1}.text-primary-emphasis{color:var(--tblr-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--tblr-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--tblr-success-text-emphasis)!important}.text-info-emphasis{color:var(--tblr-info-text-emphasis)!important}.text-warning-emphasis{color:var(--tblr-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--tblr-danger-text-emphasis)!important}.text-light-emphasis{color:var(--tblr-light-text-emphasis)!important}.text-dark-emphasis{color:var(--tblr-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--tblr-link-opacity: .1}.link-opacity-25,.link-opacity-25-hover:hover{--tblr-link-opacity: .25}.link-opacity-50,.link-opacity-50-hover:hover{--tblr-link-opacity: .5}.link-opacity-75,.link-opacity-75-hover:hover{--tblr-link-opacity: .75}.link-opacity-100,.link-opacity-100-hover:hover{--tblr-link-opacity: 1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-secondary{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-success{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-success-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-info{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-info-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-warning{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-danger{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-light{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-light-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-dark{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-muted{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-blue{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-azure{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-indigo{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-purple{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-pink{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-red{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-red-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-orange{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-yellow{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-lime{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-green{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-green-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-teal{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-cyan{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity))!important}.link-underline{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-underline-opacity, 1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--tblr-link-underline-opacity: 0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--tblr-link-underline-opacity: .1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--tblr-link-underline-opacity: .25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--tblr-link-underline-opacity: .5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--tblr-link-underline-opacity: .75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--tblr-link-underline-opacity: 1}.bg-primary{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-primary-rgb),var(--tblr-bg-opacity))!important}.bg-secondary{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-secondary-rgb),var(--tblr-bg-opacity))!important}.bg-success{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-success-rgb),var(--tblr-bg-opacity))!important}.bg-info{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-info-rgb),var(--tblr-bg-opacity))!important}.bg-warning{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-warning-rgb),var(--tblr-bg-opacity))!important}.bg-danger{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-danger-rgb),var(--tblr-bg-opacity))!important}.bg-light{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-light-rgb),var(--tblr-bg-opacity))!important}.bg-dark{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-dark-rgb),var(--tblr-bg-opacity))!important}.bg-muted{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-muted-rgb),var(--tblr-bg-opacity))!important}.bg-blue{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-blue-rgb),var(--tblr-bg-opacity))!important}.bg-azure{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-azure-rgb),var(--tblr-bg-opacity))!important}.bg-indigo{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-indigo-rgb),var(--tblr-bg-opacity))!important}.bg-purple{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-purple-rgb),var(--tblr-bg-opacity))!important}.bg-pink{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-pink-rgb),var(--tblr-bg-opacity))!important}.bg-red{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-red-rgb),var(--tblr-bg-opacity))!important}.bg-orange{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-orange-rgb),var(--tblr-bg-opacity))!important}.bg-yellow{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-yellow-rgb),var(--tblr-bg-opacity))!important}.bg-lime{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-lime-rgb),var(--tblr-bg-opacity))!important}.bg-green{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-green-rgb),var(--tblr-bg-opacity))!important}.bg-teal{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-teal-rgb),var(--tblr-bg-opacity))!important}.bg-cyan{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-cyan-rgb),var(--tblr-bg-opacity))!important}.bg-black{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-black-rgb),var(--tblr-bg-opacity))!important}.bg-white{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-white-rgb),var(--tblr-bg-opacity))!important}.bg-body{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-body-bg-rgb),var(--tblr-bg-opacity))!important}.bg-transparent{--tblr-bg-opacity: 1;background-color:transparent!important}.bg-body-secondary{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-secondary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-body-tertiary{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-tertiary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-opacity-10{--tblr-bg-opacity: .1}.bg-opacity-25{--tblr-bg-opacity: .25}.bg-opacity-50{--tblr-bg-opacity: .5}.bg-opacity-75{--tblr-bg-opacity: .75}.bg-opacity-100{--tblr-bg-opacity: 1}.bg-primary-subtle{background-color:var(--tblr-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--tblr-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--tblr-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--tblr-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--tblr-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--tblr-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--tblr-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--tblr-dark-bg-subtle)!important}.bg-gradient{background-image:var(--tblr-gradient)!important}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--tblr-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--tblr-border-radius-sm)!important}.rounded-2{border-radius:var(--tblr-border-radius)!important}.rounded-3{border-radius:var(--tblr-border-radius-lg)!important}.rounded-4{border-radius:var(--tblr-border-radius-xl)!important}.rounded-5{border-radius:var(--tblr-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--tblr-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--tblr-border-radius-sm)!important;border-top-right-radius:var(--tblr-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--tblr-border-radius-lg)!important;border-top-right-radius:var(--tblr-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--tblr-border-radius-xl)!important;border-top-right-radius:var(--tblr-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--tblr-border-radius-xxl)!important;border-top-right-radius:var(--tblr-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--tblr-border-radius-pill)!important;border-top-right-radius:var(--tblr-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--tblr-border-radius-sm)!important;border-bottom-right-radius:var(--tblr-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--tblr-border-radius-lg)!important;border-bottom-right-radius:var(--tblr-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--tblr-border-radius-xl)!important;border-bottom-right-radius:var(--tblr-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--tblr-border-radius-xxl)!important;border-bottom-right-radius:var(--tblr-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--tblr-border-radius-pill)!important;border-bottom-right-radius:var(--tblr-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--tblr-border-radius-sm)!important;border-bottom-left-radius:var(--tblr-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--tblr-border-radius-lg)!important;border-bottom-left-radius:var(--tblr-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--tblr-border-radius-xl)!important;border-bottom-left-radius:var(--tblr-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--tblr-border-radius-xxl)!important;border-bottom-left-radius:var(--tblr-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--tblr-border-radius-pill)!important;border-bottom-left-radius:var(--tblr-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--tblr-border-radius-sm)!important;border-top-left-radius:var(--tblr-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--tblr-border-radius-lg)!important;border-top-left-radius:var(--tblr-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--tblr-border-radius-xl)!important;border-top-left-radius:var(--tblr-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--tblr-border-radius-xxl)!important;border-top-left-radius:var(--tblr-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--tblr-border-radius-pill)!important;border-top-left-radius:var(--tblr-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}.object-contain{object-fit:contain!important}.object-cover{object-fit:cover!important}.object-fill{object-fit:fill!important}.object-scale-down{object-fit:scale-down!important}.object-none{object-fit:none!important}.cursor-auto{cursor:auto!important}.cursor-pointer{cursor:pointer!important}.cursor-move{cursor:move!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-zoom-in{cursor:zoom-in!important}.cursor-zoom-out{cursor:zoom-out!important}.cursor-default{cursor:default!important}.cursor-none{cursor:none!important}.cursor-help{cursor:help!important}.cursor-progress{cursor:progress!important}.cursor-wait{cursor:wait!important}.cursor-text{cursor:text!important}.cursor-v-text{cursor:vertical-text!important}.cursor-grab{cursor:grab!important}.cursor-grabbing{cursor:grabbing!important}.cursor-crosshair{cursor:crosshair!important}.border-x{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important;border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-x-wide{border-left:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important;border-right:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-x-0{border-left:0!important;border-right:0!important}.border-y{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important;border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-y-wide{border-top:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important;border-bottom:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-y-0{border-top:0!important;border-bottom:0!important}.columns-2{columns:2!important}.columns-3{columns:3!important}.columns-4{columns:4!important}.bg-pattern-transparent{background:url('data:image/svg+xml;charset=UTF-8,') repeat center/16px 16px!important}.bg-gradient{background:linear-gradient(var(--tblr-gradient-direction, to right),var(--tblr-gradient-stops, var(--tblr-gradient-from, transparent), var(--tblr-gradient-to, transparent))) no-repeat!important}.bg-gradient-to-t{--tblr-gradient-direction: to top !important}.bg-gradient-to-te{--tblr-gradient-direction: to top right !important}.bg-gradient-to-e{--tblr-gradient-direction: to right !important}.bg-gradient-to-be{--tblr-gradient-direction: to bottom right !important}.bg-gradient-to-b{--tblr-gradient-direction: to bottom !important}.bg-gradient-to-bs{--tblr-gradient-direction: to bottom left !important}.bg-gradient-to-s{--tblr-gradient-direction: to left !important}.bg-gradient-to-ts{--tblr-gradient-direction: to top left !important}.table-auto{table-layout:auto!important}.table-fixed{table-layout:fixed!important}@media(min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{object-fit:contain!important}.object-fit-sm-cover{object-fit:cover!important}.object-fit-sm-fill{object-fit:fill!important}.object-fit-sm-scale{object-fit:scale-down!important}.object-fit-sm-none{object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:2rem!important}.m-sm-6{margin:2.5rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:2rem!important;margin-left:2rem!important}.mx-sm-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-sm-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:2rem!important}.mt-sm-6{margin-top:2.5rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:2rem!important}.me-sm-6{margin-right:2.5rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:2rem!important}.mb-sm-6{margin-bottom:2.5rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:2rem!important}.ms-sm-6{margin-left:2.5rem!important}.ms-sm-auto{margin-left:auto!important}.m-sm-n1{margin:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.m-sm-n3{margin:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.m-sm-n5{margin:-2rem!important}.m-sm-n6{margin:-2.5rem!important}.mx-sm-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-sm-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-sm-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-sm-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-sm-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-sm-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-sm-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-sm-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-sm-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-sm-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-sm-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-sm-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-sm-n1{margin-top:-.25rem!important}.mt-sm-n2{margin-top:-.5rem!important}.mt-sm-n3{margin-top:-1rem!important}.mt-sm-n4{margin-top:-1.5rem!important}.mt-sm-n5{margin-top:-2rem!important}.mt-sm-n6{margin-top:-2.5rem!important}.me-sm-n1{margin-right:-.25rem!important}.me-sm-n2{margin-right:-.5rem!important}.me-sm-n3{margin-right:-1rem!important}.me-sm-n4{margin-right:-1.5rem!important}.me-sm-n5{margin-right:-2rem!important}.me-sm-n6{margin-right:-2.5rem!important}.mb-sm-n1{margin-bottom:-.25rem!important}.mb-sm-n2{margin-bottom:-.5rem!important}.mb-sm-n3{margin-bottom:-1rem!important}.mb-sm-n4{margin-bottom:-1.5rem!important}.mb-sm-n5{margin-bottom:-2rem!important}.mb-sm-n6{margin-bottom:-2.5rem!important}.ms-sm-n1{margin-left:-.25rem!important}.ms-sm-n2{margin-left:-.5rem!important}.ms-sm-n3{margin-left:-1rem!important}.ms-sm-n4{margin-left:-1.5rem!important}.ms-sm-n5{margin-left:-2rem!important}.ms-sm-n6{margin-left:-2.5rem!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:2rem!important}.p-sm-6{padding:2.5rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:2rem!important;padding-left:2rem!important}.px-sm-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-sm-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:2rem!important}.pt-sm-6{padding-top:2.5rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:2rem!important}.pe-sm-6{padding-right:2.5rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:2rem!important}.pb-sm-6{padding-bottom:2.5rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:2rem!important}.ps-sm-6{padding-left:2.5rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:2rem!important}.gap-sm-6{gap:2.5rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:2rem!important}.row-gap-sm-6{row-gap:2.5rem!important}.column-gap-sm-0{column-gap:0!important}.column-gap-sm-1{column-gap:.25rem!important}.column-gap-sm-2{column-gap:.5rem!important}.column-gap-sm-3{column-gap:1rem!important}.column-gap-sm-4{column-gap:1.5rem!important}.column-gap-sm-5{column-gap:2rem!important}.column-gap-sm-6{column-gap:2.5rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}.columns-sm-2{columns:2!important}.columns-sm-3{columns:3!important}.columns-sm-4{columns:4!important}}@media(min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{object-fit:contain!important}.object-fit-md-cover{object-fit:cover!important}.object-fit-md-fill{object-fit:fill!important}.object-fit-md-scale{object-fit:scale-down!important}.object-fit-md-none{object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:2rem!important}.m-md-6{margin:2.5rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:2rem!important;margin-left:2rem!important}.mx-md-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-md-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:2rem!important}.mt-md-6{margin-top:2.5rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:2rem!important}.me-md-6{margin-right:2.5rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:2rem!important}.mb-md-6{margin-bottom:2.5rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:2rem!important}.ms-md-6{margin-left:2.5rem!important}.ms-md-auto{margin-left:auto!important}.m-md-n1{margin:-.25rem!important}.m-md-n2{margin:-.5rem!important}.m-md-n3{margin:-1rem!important}.m-md-n4{margin:-1.5rem!important}.m-md-n5{margin:-2rem!important}.m-md-n6{margin:-2.5rem!important}.mx-md-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-md-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-md-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-md-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-md-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-md-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-md-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-md-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-md-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-md-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-md-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-md-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-md-n1{margin-top:-.25rem!important}.mt-md-n2{margin-top:-.5rem!important}.mt-md-n3{margin-top:-1rem!important}.mt-md-n4{margin-top:-1.5rem!important}.mt-md-n5{margin-top:-2rem!important}.mt-md-n6{margin-top:-2.5rem!important}.me-md-n1{margin-right:-.25rem!important}.me-md-n2{margin-right:-.5rem!important}.me-md-n3{margin-right:-1rem!important}.me-md-n4{margin-right:-1.5rem!important}.me-md-n5{margin-right:-2rem!important}.me-md-n6{margin-right:-2.5rem!important}.mb-md-n1{margin-bottom:-.25rem!important}.mb-md-n2{margin-bottom:-.5rem!important}.mb-md-n3{margin-bottom:-1rem!important}.mb-md-n4{margin-bottom:-1.5rem!important}.mb-md-n5{margin-bottom:-2rem!important}.mb-md-n6{margin-bottom:-2.5rem!important}.ms-md-n1{margin-left:-.25rem!important}.ms-md-n2{margin-left:-.5rem!important}.ms-md-n3{margin-left:-1rem!important}.ms-md-n4{margin-left:-1.5rem!important}.ms-md-n5{margin-left:-2rem!important}.ms-md-n6{margin-left:-2.5rem!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:2rem!important}.p-md-6{padding:2.5rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:2rem!important;padding-left:2rem!important}.px-md-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-md-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:2rem!important}.pt-md-6{padding-top:2.5rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:2rem!important}.pe-md-6{padding-right:2.5rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:2rem!important}.pb-md-6{padding-bottom:2.5rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:2rem!important}.ps-md-6{padding-left:2.5rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:2rem!important}.gap-md-6{gap:2.5rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:2rem!important}.row-gap-md-6{row-gap:2.5rem!important}.column-gap-md-0{column-gap:0!important}.column-gap-md-1{column-gap:.25rem!important}.column-gap-md-2{column-gap:.5rem!important}.column-gap-md-3{column-gap:1rem!important}.column-gap-md-4{column-gap:1.5rem!important}.column-gap-md-5{column-gap:2rem!important}.column-gap-md-6{column-gap:2.5rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}.columns-md-2{columns:2!important}.columns-md-3{columns:3!important}.columns-md-4{columns:4!important}}@media(min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{object-fit:contain!important}.object-fit-lg-cover{object-fit:cover!important}.object-fit-lg-fill{object-fit:fill!important}.object-fit-lg-scale{object-fit:scale-down!important}.object-fit-lg-none{object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:2rem!important}.m-lg-6{margin:2.5rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:2rem!important;margin-left:2rem!important}.mx-lg-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-lg-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:2rem!important}.mt-lg-6{margin-top:2.5rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:2rem!important}.me-lg-6{margin-right:2.5rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:2rem!important}.mb-lg-6{margin-bottom:2.5rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:2rem!important}.ms-lg-6{margin-left:2.5rem!important}.ms-lg-auto{margin-left:auto!important}.m-lg-n1{margin:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.m-lg-n3{margin:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.m-lg-n5{margin:-2rem!important}.m-lg-n6{margin:-2.5rem!important}.mx-lg-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-lg-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-lg-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-lg-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-lg-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-lg-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-lg-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-lg-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-lg-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-lg-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-lg-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-lg-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-lg-n1{margin-top:-.25rem!important}.mt-lg-n2{margin-top:-.5rem!important}.mt-lg-n3{margin-top:-1rem!important}.mt-lg-n4{margin-top:-1.5rem!important}.mt-lg-n5{margin-top:-2rem!important}.mt-lg-n6{margin-top:-2.5rem!important}.me-lg-n1{margin-right:-.25rem!important}.me-lg-n2{margin-right:-.5rem!important}.me-lg-n3{margin-right:-1rem!important}.me-lg-n4{margin-right:-1.5rem!important}.me-lg-n5{margin-right:-2rem!important}.me-lg-n6{margin-right:-2.5rem!important}.mb-lg-n1{margin-bottom:-.25rem!important}.mb-lg-n2{margin-bottom:-.5rem!important}.mb-lg-n3{margin-bottom:-1rem!important}.mb-lg-n4{margin-bottom:-1.5rem!important}.mb-lg-n5{margin-bottom:-2rem!important}.mb-lg-n6{margin-bottom:-2.5rem!important}.ms-lg-n1{margin-left:-.25rem!important}.ms-lg-n2{margin-left:-.5rem!important}.ms-lg-n3{margin-left:-1rem!important}.ms-lg-n4{margin-left:-1.5rem!important}.ms-lg-n5{margin-left:-2rem!important}.ms-lg-n6{margin-left:-2.5rem!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:2rem!important}.p-lg-6{padding:2.5rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:2rem!important;padding-left:2rem!important}.px-lg-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-lg-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:2rem!important}.pt-lg-6{padding-top:2.5rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:2rem!important}.pe-lg-6{padding-right:2.5rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:2rem!important}.pb-lg-6{padding-bottom:2.5rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:2rem!important}.ps-lg-6{padding-left:2.5rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:2rem!important}.gap-lg-6{gap:2.5rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:2rem!important}.row-gap-lg-6{row-gap:2.5rem!important}.column-gap-lg-0{column-gap:0!important}.column-gap-lg-1{column-gap:.25rem!important}.column-gap-lg-2{column-gap:.5rem!important}.column-gap-lg-3{column-gap:1rem!important}.column-gap-lg-4{column-gap:1.5rem!important}.column-gap-lg-5{column-gap:2rem!important}.column-gap-lg-6{column-gap:2.5rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}.columns-lg-2{columns:2!important}.columns-lg-3{columns:3!important}.columns-lg-4{columns:4!important}}@media(min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{object-fit:contain!important}.object-fit-xl-cover{object-fit:cover!important}.object-fit-xl-fill{object-fit:fill!important}.object-fit-xl-scale{object-fit:scale-down!important}.object-fit-xl-none{object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:2rem!important}.m-xl-6{margin:2.5rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:2rem!important;margin-left:2rem!important}.mx-xl-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xl-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:2rem!important}.mt-xl-6{margin-top:2.5rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:2rem!important}.me-xl-6{margin-right:2.5rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:2rem!important}.mb-xl-6{margin-bottom:2.5rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:2rem!important}.ms-xl-6{margin-left:2.5rem!important}.ms-xl-auto{margin-left:auto!important}.m-xl-n1{margin:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.m-xl-n3{margin:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.m-xl-n5{margin:-2rem!important}.m-xl-n6{margin:-2.5rem!important}.mx-xl-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-xl-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-xl-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-xl-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-xl-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-xl-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-xl-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-xl-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-xl-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-xl-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-xl-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-xl-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-xl-n1{margin-top:-.25rem!important}.mt-xl-n2{margin-top:-.5rem!important}.mt-xl-n3{margin-top:-1rem!important}.mt-xl-n4{margin-top:-1.5rem!important}.mt-xl-n5{margin-top:-2rem!important}.mt-xl-n6{margin-top:-2.5rem!important}.me-xl-n1{margin-right:-.25rem!important}.me-xl-n2{margin-right:-.5rem!important}.me-xl-n3{margin-right:-1rem!important}.me-xl-n4{margin-right:-1.5rem!important}.me-xl-n5{margin-right:-2rem!important}.me-xl-n6{margin-right:-2.5rem!important}.mb-xl-n1{margin-bottom:-.25rem!important}.mb-xl-n2{margin-bottom:-.5rem!important}.mb-xl-n3{margin-bottom:-1rem!important}.mb-xl-n4{margin-bottom:-1.5rem!important}.mb-xl-n5{margin-bottom:-2rem!important}.mb-xl-n6{margin-bottom:-2.5rem!important}.ms-xl-n1{margin-left:-.25rem!important}.ms-xl-n2{margin-left:-.5rem!important}.ms-xl-n3{margin-left:-1rem!important}.ms-xl-n4{margin-left:-1.5rem!important}.ms-xl-n5{margin-left:-2rem!important}.ms-xl-n6{margin-left:-2.5rem!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:2rem!important}.p-xl-6{padding:2.5rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:2rem!important;padding-left:2rem!important}.px-xl-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xl-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:2rem!important}.pt-xl-6{padding-top:2.5rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:2rem!important}.pe-xl-6{padding-right:2.5rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:2rem!important}.pb-xl-6{padding-bottom:2.5rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:2rem!important}.ps-xl-6{padding-left:2.5rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:2rem!important}.gap-xl-6{gap:2.5rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:2rem!important}.row-gap-xl-6{row-gap:2.5rem!important}.column-gap-xl-0{column-gap:0!important}.column-gap-xl-1{column-gap:.25rem!important}.column-gap-xl-2{column-gap:.5rem!important}.column-gap-xl-3{column-gap:1rem!important}.column-gap-xl-4{column-gap:1.5rem!important}.column-gap-xl-5{column-gap:2rem!important}.column-gap-xl-6{column-gap:2.5rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}.columns-xl-2{columns:2!important}.columns-xl-3{columns:3!important}.columns-xl-4{columns:4!important}}@media(min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{object-fit:contain!important}.object-fit-xxl-cover{object-fit:cover!important}.object-fit-xxl-fill{object-fit:fill!important}.object-fit-xxl-scale{object-fit:scale-down!important}.object-fit-xxl-none{object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:2rem!important}.m-xxl-6{margin:2.5rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:2rem!important;margin-left:2rem!important}.mx-xxl-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xxl-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:2rem!important}.mt-xxl-6{margin-top:2.5rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:2rem!important}.me-xxl-6{margin-right:2.5rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:2rem!important}.mb-xxl-6{margin-bottom:2.5rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:2rem!important}.ms-xxl-6{margin-left:2.5rem!important}.ms-xxl-auto{margin-left:auto!important}.m-xxl-n1{margin:-.25rem!important}.m-xxl-n2{margin:-.5rem!important}.m-xxl-n3{margin:-1rem!important}.m-xxl-n4{margin:-1.5rem!important}.m-xxl-n5{margin:-2rem!important}.m-xxl-n6{margin:-2.5rem!important}.mx-xxl-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-xxl-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-xxl-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-xxl-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-xxl-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-xxl-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-xxl-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-xxl-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-xxl-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-xxl-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-xxl-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-xxl-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-xxl-n1{margin-top:-.25rem!important}.mt-xxl-n2{margin-top:-.5rem!important}.mt-xxl-n3{margin-top:-1rem!important}.mt-xxl-n4{margin-top:-1.5rem!important}.mt-xxl-n5{margin-top:-2rem!important}.mt-xxl-n6{margin-top:-2.5rem!important}.me-xxl-n1{margin-right:-.25rem!important}.me-xxl-n2{margin-right:-.5rem!important}.me-xxl-n3{margin-right:-1rem!important}.me-xxl-n4{margin-right:-1.5rem!important}.me-xxl-n5{margin-right:-2rem!important}.me-xxl-n6{margin-right:-2.5rem!important}.mb-xxl-n1{margin-bottom:-.25rem!important}.mb-xxl-n2{margin-bottom:-.5rem!important}.mb-xxl-n3{margin-bottom:-1rem!important}.mb-xxl-n4{margin-bottom:-1.5rem!important}.mb-xxl-n5{margin-bottom:-2rem!important}.mb-xxl-n6{margin-bottom:-2.5rem!important}.ms-xxl-n1{margin-left:-.25rem!important}.ms-xxl-n2{margin-left:-.5rem!important}.ms-xxl-n3{margin-left:-1rem!important}.ms-xxl-n4{margin-left:-1.5rem!important}.ms-xxl-n5{margin-left:-2rem!important}.ms-xxl-n6{margin-left:-2.5rem!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:2rem!important}.p-xxl-6{padding:2.5rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:2rem!important;padding-left:2rem!important}.px-xxl-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xxl-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:2rem!important}.pt-xxl-6{padding-top:2.5rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:2rem!important}.pe-xxl-6{padding-right:2.5rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:2rem!important}.pb-xxl-6{padding-bottom:2.5rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:2rem!important}.ps-xxl-6{padding-left:2.5rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:2rem!important}.gap-xxl-6{gap:2.5rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:2rem!important}.row-gap-xxl-6{row-gap:2.5rem!important}.column-gap-xxl-0{column-gap:0!important}.column-gap-xxl-1{column-gap:.25rem!important}.column-gap-xxl-2{column-gap:.5rem!important}.column-gap-xxl-3{column-gap:1rem!important}.column-gap-xxl-4{column-gap:1.5rem!important}.column-gap-xxl-5{column-gap:2rem!important}.column-gap-xxl-6{column-gap:2.5rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}.columns-xxl-2{columns:2!important}.columns-xxl-3{columns:3!important}.columns-xxl-4{columns:4!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}:root,:host{--tblr-font-monospace: Roboto Mono;--tblr-font-sans-serif: Inter, system-ui, sans-serif;--tblr-font-serif: Georgia, Times New Roman, times, serif;--tblr-font-comic: Comic Sans MS, Comic Sans, Chalkboard SE, Comic Neue, sans-serif, cursive;--tblr-gray-50: #f9fafb;--tblr-gray-100: #f3f4f6;--tblr-gray-200: #e5e7eb;--tblr-gray-300: #d1d5db;--tblr-gray-400: #9ca3af;--tblr-gray-500: #6b7280;--tblr-gray-600: #4b5563;--tblr-gray-700: #374151;--tblr-gray-800: #1f2937;--tblr-gray-900: #111827;--tblr-gray-950: #030712;--tblr-white: #ffffff;--tblr-black: #000000;--tblr-brand: #00857D;--tblr-primary: #00857D;--tblr-primary-rgb: 0, 133, 125;--tblr-primary-fg: var(--tblr-light);--tblr-primary-darken: rgb(0, 119.7, 112.5);--tblr-primary-darken: color-mix(in oklab, var(--tblr-primary), transparent 20%);--tblr-primary-lt: rgb(229.5, 242.8, 242);--tblr-primary-lt: color-mix(in oklab, var(--tblr-primary) 10%, transparent);--tblr-primary-200: color-mix(in oklab, var(--tblr-primary) 20%, transparent);--tblr-primary-lt-rgb: 230, 243, 242;--tblr-secondary: #6b7280;--tblr-secondary-rgb: 107, 114, 128;--tblr-secondary-fg: var(--tblr-light);--tblr-secondary-darken: rgb(96.3, 102.6, 115.2);--tblr-secondary-darken: color-mix(in oklab, var(--tblr-secondary), transparent 20%);--tblr-secondary-lt: rgb(240.2, 240.9, 242.3);--tblr-secondary-lt: color-mix(in oklab, var(--tblr-secondary) 10%, transparent);--tblr-secondary-200: color-mix(in oklab, var(--tblr-secondary) 20%, transparent);--tblr-secondary-lt-rgb: 240, 241, 242;--tblr-success: #2fb344;--tblr-success-rgb: 47, 179, 68;--tblr-success-fg: var(--tblr-light);--tblr-success-darken: rgb(42.3, 161.1, 61.2);--tblr-success-darken: color-mix(in oklab, var(--tblr-success), transparent 20%);--tblr-success-lt: rgb(234.2, 247.4, 236.3);--tblr-success-lt: color-mix(in oklab, var(--tblr-success) 10%, transparent);--tblr-success-200: color-mix(in oklab, var(--tblr-success) 20%, transparent);--tblr-success-lt-rgb: 234, 247, 236;--tblr-info: #4299e1;--tblr-info-rgb: 66, 153, 225;--tblr-info-fg: var(--tblr-light);--tblr-info-darken: rgb(59.4, 137.7, 202.5);--tblr-info-darken: color-mix(in oklab, var(--tblr-info), transparent 20%);--tblr-info-lt: rgb(236.1, 244.8, 252);--tblr-info-lt: color-mix(in oklab, var(--tblr-info) 10%, transparent);--tblr-info-200: color-mix(in oklab, var(--tblr-info) 20%, transparent);--tblr-info-lt-rgb: 236, 245, 252;--tblr-warning: #f59f00;--tblr-warning-rgb: 245, 159, 0;--tblr-warning-fg: var(--tblr-light);--tblr-warning-darken: rgb(220.5, 143.1, 0);--tblr-warning-darken: color-mix(in oklab, var(--tblr-warning), transparent 20%);--tblr-warning-lt: rgb(254, 245.4, 229.5);--tblr-warning-lt: color-mix(in oklab, var(--tblr-warning) 10%, transparent);--tblr-warning-200: color-mix(in oklab, var(--tblr-warning) 20%, transparent);--tblr-warning-lt-rgb: 254, 245, 230;--tblr-danger: #d63939;--tblr-danger-rgb: 214, 57, 57;--tblr-danger-fg: var(--tblr-light);--tblr-danger-darken: rgb(192.6, 51.3, 51.3);--tblr-danger-darken: color-mix(in oklab, var(--tblr-danger), transparent 20%);--tblr-danger-lt: rgb(250.9, 235.2, 235.2);--tblr-danger-lt: color-mix(in oklab, var(--tblr-danger) 10%, transparent);--tblr-danger-200: color-mix(in oklab, var(--tblr-danger) 20%, transparent);--tblr-danger-lt-rgb: 251, 235, 235;--tblr-light: #f9fafb;--tblr-light-rgb: 249, 250, 251;--tblr-light-fg: var(--tblr-dark);--tblr-light-darken: rgb(224.1, 225, 225.9);--tblr-light-darken: color-mix(in oklab, var(--tblr-light), transparent 20%);--tblr-light-lt: rgb(254.4, 254.5, 254.6);--tblr-light-lt: color-mix(in oklab, var(--tblr-light) 10%, transparent);--tblr-light-200: color-mix(in oklab, var(--tblr-light) 20%, transparent);--tblr-light-lt-rgb: 254, 255, 255;--tblr-dark: #1f2937;--tblr-dark-rgb: 31, 41, 55;--tblr-dark-fg: var(--tblr-light);--tblr-dark-darken: rgb(27.9, 36.9, 49.5);--tblr-dark-darken: color-mix(in oklab, var(--tblr-dark), transparent 20%);--tblr-dark-lt: rgb(232.6, 233.6, 235);--tblr-dark-lt: color-mix(in oklab, var(--tblr-dark) 10%, transparent);--tblr-dark-200: color-mix(in oklab, var(--tblr-dark) 20%, transparent);--tblr-dark-lt-rgb: 233, 234, 235;--tblr-muted: #6b7280;--tblr-muted-rgb: 107, 114, 128;--tblr-muted-fg: var(--tblr-light);--tblr-muted-darken: rgb(96.3, 102.6, 115.2);--tblr-muted-darken: color-mix(in oklab, var(--tblr-muted), transparent 20%);--tblr-muted-lt: rgb(240.2, 240.9, 242.3);--tblr-muted-lt: color-mix(in oklab, var(--tblr-muted) 10%, transparent);--tblr-muted-200: color-mix(in oklab, var(--tblr-muted) 20%, transparent);--tblr-muted-lt-rgb: 240, 241, 242;--tblr-blue: #066fd1;--tblr-blue-rgb: 6, 111, 209;--tblr-blue-fg: var(--tblr-light);--tblr-blue-darken: rgb(5.4, 99.9, 188.1);--tblr-blue-darken: color-mix(in oklab, var(--tblr-blue), transparent 20%);--tblr-blue-lt: rgb(230.1, 240.6, 250.4);--tblr-blue-lt: color-mix(in oklab, var(--tblr-blue) 10%, transparent);--tblr-blue-200: color-mix(in oklab, var(--tblr-blue) 20%, transparent);--tblr-blue-lt-rgb: 230, 241, 250;--tblr-azure: #4299e1;--tblr-azure-rgb: 66, 153, 225;--tblr-azure-fg: var(--tblr-light);--tblr-azure-darken: rgb(59.4, 137.7, 202.5);--tblr-azure-darken: color-mix(in oklab, var(--tblr-azure), transparent 20%);--tblr-azure-lt: rgb(236.1, 244.8, 252);--tblr-azure-lt: color-mix(in oklab, var(--tblr-azure) 10%, transparent);--tblr-azure-200: color-mix(in oklab, var(--tblr-azure) 20%, transparent);--tblr-azure-lt-rgb: 236, 245, 252;--tblr-indigo: #4263eb;--tblr-indigo-rgb: 66, 99, 235;--tblr-indigo-fg: var(--tblr-light);--tblr-indigo-darken: rgb(59.4, 89.1, 211.5);--tblr-indigo-darken: color-mix(in oklab, var(--tblr-indigo), transparent 20%);--tblr-indigo-lt: rgb(236.1, 239.4, 253);--tblr-indigo-lt: color-mix(in oklab, var(--tblr-indigo) 10%, transparent);--tblr-indigo-200: color-mix(in oklab, var(--tblr-indigo) 20%, transparent);--tblr-indigo-lt-rgb: 236, 239, 253;--tblr-purple: #ae3ec9;--tblr-purple-rgb: 174, 62, 201;--tblr-purple-fg: var(--tblr-light);--tblr-purple-darken: rgb(156.6, 55.8, 180.9);--tblr-purple-darken: color-mix(in oklab, var(--tblr-purple), transparent 20%);--tblr-purple-lt: rgb(246.9, 235.7, 249.6);--tblr-purple-lt: color-mix(in oklab, var(--tblr-purple) 10%, transparent);--tblr-purple-200: color-mix(in oklab, var(--tblr-purple) 20%, transparent);--tblr-purple-lt-rgb: 247, 236, 250;--tblr-pink: #d6336c;--tblr-pink-rgb: 214, 51, 108;--tblr-pink-fg: var(--tblr-light);--tblr-pink-darken: rgb(192.6, 45.9, 97.2);--tblr-pink-darken: color-mix(in oklab, var(--tblr-pink), transparent 20%);--tblr-pink-lt: rgb(250.9, 234.6, 240.3);--tblr-pink-lt: color-mix(in oklab, var(--tblr-pink) 10%, transparent);--tblr-pink-200: color-mix(in oklab, var(--tblr-pink) 20%, transparent);--tblr-pink-lt-rgb: 251, 235, 240;--tblr-red: #d63939;--tblr-red-rgb: 214, 57, 57;--tblr-red-fg: var(--tblr-light);--tblr-red-darken: rgb(192.6, 51.3, 51.3);--tblr-red-darken: color-mix(in oklab, var(--tblr-red), transparent 20%);--tblr-red-lt: rgb(250.9, 235.2, 235.2);--tblr-red-lt: color-mix(in oklab, var(--tblr-red) 10%, transparent);--tblr-red-200: color-mix(in oklab, var(--tblr-red) 20%, transparent);--tblr-red-lt-rgb: 251, 235, 235;--tblr-orange: #f76707;--tblr-orange-rgb: 247, 103, 7;--tblr-orange-fg: var(--tblr-light);--tblr-orange-darken: rgb(222.3, 92.7, 6.3);--tblr-orange-darken: color-mix(in oklab, var(--tblr-orange), transparent 20%);--tblr-orange-lt: rgb(254.2, 239.8, 230.2);--tblr-orange-lt: color-mix(in oklab, var(--tblr-orange) 10%, transparent);--tblr-orange-200: color-mix(in oklab, var(--tblr-orange) 20%, transparent);--tblr-orange-lt-rgb: 254, 240, 230;--tblr-yellow: #f59f00;--tblr-yellow-rgb: 245, 159, 0;--tblr-yellow-fg: var(--tblr-light);--tblr-yellow-darken: rgb(220.5, 143.1, 0);--tblr-yellow-darken: color-mix(in oklab, var(--tblr-yellow), transparent 20%);--tblr-yellow-lt: rgb(254, 245.4, 229.5);--tblr-yellow-lt: color-mix(in oklab, var(--tblr-yellow) 10%, transparent);--tblr-yellow-200: color-mix(in oklab, var(--tblr-yellow) 20%, transparent);--tblr-yellow-lt-rgb: 254, 245, 230;--tblr-lime: #74b816;--tblr-lime-rgb: 116, 184, 22;--tblr-lime-fg: var(--tblr-light);--tblr-lime-darken: rgb(104.4, 165.6, 19.8);--tblr-lime-darken: color-mix(in oklab, var(--tblr-lime), transparent 20%);--tblr-lime-lt: rgb(241.1, 247.9, 231.7);--tblr-lime-lt: color-mix(in oklab, var(--tblr-lime) 10%, transparent);--tblr-lime-200: color-mix(in oklab, var(--tblr-lime) 20%, transparent);--tblr-lime-lt-rgb: 241, 248, 232;--tblr-green: #2fb344;--tblr-green-rgb: 47, 179, 68;--tblr-green-fg: var(--tblr-light);--tblr-green-darken: rgb(42.3, 161.1, 61.2);--tblr-green-darken: color-mix(in oklab, var(--tblr-green), transparent 20%);--tblr-green-lt: rgb(234.2, 247.4, 236.3);--tblr-green-lt: color-mix(in oklab, var(--tblr-green) 10%, transparent);--tblr-green-200: color-mix(in oklab, var(--tblr-green) 20%, transparent);--tblr-green-lt-rgb: 234, 247, 236;--tblr-teal: #0ca678;--tblr-teal-rgb: 12, 166, 120;--tblr-teal-fg: var(--tblr-light);--tblr-teal-darken: rgb(10.8, 149.4, 108);--tblr-teal-darken: color-mix(in oklab, var(--tblr-teal), transparent 20%);--tblr-teal-lt: rgb(230.7, 246.1, 241.5);--tblr-teal-lt: color-mix(in oklab, var(--tblr-teal) 10%, transparent);--tblr-teal-200: color-mix(in oklab, var(--tblr-teal) 20%, transparent);--tblr-teal-lt-rgb: 231, 246, 242;--tblr-cyan: #17a2b8;--tblr-cyan-rgb: 23, 162, 184;--tblr-cyan-fg: var(--tblr-light);--tblr-cyan-darken: rgb(20.7, 145.8, 165.6);--tblr-cyan-darken: color-mix(in oklab, var(--tblr-cyan), transparent 20%);--tblr-cyan-lt: rgb(231.8, 245.7, 247.9);--tblr-cyan-lt: color-mix(in oklab, var(--tblr-cyan) 10%, transparent);--tblr-cyan-200: color-mix(in oklab, var(--tblr-cyan) 20%, transparent);--tblr-cyan-lt-rgb: 232, 246, 248;--tblr-x: #000000;--tblr-x-rgb: 0, 0, 0;--tblr-x-fg: var(--tblr-light);--tblr-x-darken: black;--tblr-x-darken: color-mix(in oklab, var(--tblr-x), transparent 20%);--tblr-x-lt: rgb(229.5, 229.5, 229.5);--tblr-x-lt: color-mix(in oklab, var(--tblr-x) 10%, transparent);--tblr-x-200: color-mix(in oklab, var(--tblr-x) 20%, transparent);--tblr-x-lt-rgb: 230, 230, 230;--tblr-facebook: #1877f2;--tblr-facebook-rgb: 24, 119, 242;--tblr-facebook-fg: var(--tblr-light);--tblr-facebook-darken: rgb(21.6, 107.1, 217.8);--tblr-facebook-darken: color-mix(in oklab, var(--tblr-facebook), transparent 20%);--tblr-facebook-lt: rgb(231.9, 241.4, 253.7);--tblr-facebook-lt: color-mix(in oklab, var(--tblr-facebook) 10%, transparent);--tblr-facebook-200: color-mix(in oklab, var(--tblr-facebook) 20%, transparent);--tblr-facebook-lt-rgb: 232, 241, 254;--tblr-twitter: #1da1f2;--tblr-twitter-rgb: 29, 161, 242;--tblr-twitter-fg: var(--tblr-light);--tblr-twitter-darken: rgb(26.1, 144.9, 217.8);--tblr-twitter-darken: color-mix(in oklab, var(--tblr-twitter), transparent 20%);--tblr-twitter-lt: rgb(232.4, 245.6, 253.7);--tblr-twitter-lt: color-mix(in oklab, var(--tblr-twitter) 10%, transparent);--tblr-twitter-200: color-mix(in oklab, var(--tblr-twitter) 20%, transparent);--tblr-twitter-lt-rgb: 232, 246, 254;--tblr-linkedin: #0a66c2;--tblr-linkedin-rgb: 10, 102, 194;--tblr-linkedin-fg: var(--tblr-light);--tblr-linkedin-darken: rgb(9, 91.8, 174.6);--tblr-linkedin-darken: color-mix(in oklab, var(--tblr-linkedin), transparent 20%);--tblr-linkedin-lt: rgb(230.5, 239.7, 248.9);--tblr-linkedin-lt: color-mix(in oklab, var(--tblr-linkedin) 10%, transparent);--tblr-linkedin-200: color-mix(in oklab, var(--tblr-linkedin) 20%, transparent);--tblr-linkedin-lt-rgb: 231, 240, 249;--tblr-google: #dc4e41;--tblr-google-rgb: 220, 78, 65;--tblr-google-fg: var(--tblr-light);--tblr-google-darken: rgb(198, 70.2, 58.5);--tblr-google-darken: color-mix(in oklab, var(--tblr-google), transparent 20%);--tblr-google-lt: rgb(251.5, 237.3, 236);--tblr-google-lt: color-mix(in oklab, var(--tblr-google) 10%, transparent);--tblr-google-200: color-mix(in oklab, var(--tblr-google) 20%, transparent);--tblr-google-lt-rgb: 252, 237, 236;--tblr-youtube: #ff0000;--tblr-youtube-rgb: 255, 0, 0;--tblr-youtube-fg: var(--tblr-light);--tblr-youtube-darken: rgb(229.5, 0, 0);--tblr-youtube-darken: color-mix(in oklab, var(--tblr-youtube), transparent 20%);--tblr-youtube-lt: rgb(255, 229.5, 229.5);--tblr-youtube-lt: color-mix(in oklab, var(--tblr-youtube) 10%, transparent);--tblr-youtube-200: color-mix(in oklab, var(--tblr-youtube) 20%, transparent);--tblr-youtube-lt-rgb: 255, 230, 230;--tblr-vimeo: #1ab7ea;--tblr-vimeo-rgb: 26, 183, 234;--tblr-vimeo-fg: var(--tblr-light);--tblr-vimeo-darken: rgb(23.4, 164.7, 210.6);--tblr-vimeo-darken: color-mix(in oklab, var(--tblr-vimeo), transparent 20%);--tblr-vimeo-lt: rgb(232.1, 247.8, 252.9);--tblr-vimeo-lt: color-mix(in oklab, var(--tblr-vimeo) 10%, transparent);--tblr-vimeo-200: color-mix(in oklab, var(--tblr-vimeo) 20%, transparent);--tblr-vimeo-lt-rgb: 232, 248, 253;--tblr-dribbble: #ea4c89;--tblr-dribbble-rgb: 234, 76, 137;--tblr-dribbble-fg: var(--tblr-light);--tblr-dribbble-darken: rgb(210.6, 68.4, 123.3);--tblr-dribbble-darken: color-mix(in oklab, var(--tblr-dribbble), transparent 20%);--tblr-dribbble-lt: rgb(252.9, 237.1, 243.2);--tblr-dribbble-lt: color-mix(in oklab, var(--tblr-dribbble) 10%, transparent);--tblr-dribbble-200: color-mix(in oklab, var(--tblr-dribbble) 20%, transparent);--tblr-dribbble-lt-rgb: 253, 237, 243;--tblr-github: #181717;--tblr-github-rgb: 24, 23, 23;--tblr-github-fg: var(--tblr-light);--tblr-github-darken: rgb(21.6, 20.7, 20.7);--tblr-github-darken: color-mix(in oklab, var(--tblr-github), transparent 20%);--tblr-github-lt: rgb(231.9, 231.8, 231.8);--tblr-github-lt: color-mix(in oklab, var(--tblr-github) 10%, transparent);--tblr-github-200: color-mix(in oklab, var(--tblr-github) 20%, transparent);--tblr-github-lt-rgb: 232, 232, 232;--tblr-instagram: #e4405f;--tblr-instagram-rgb: 228, 64, 95;--tblr-instagram-fg: var(--tblr-light);--tblr-instagram-darken: rgb(205.2, 57.6, 85.5);--tblr-instagram-darken: color-mix(in oklab, var(--tblr-instagram), transparent 20%);--tblr-instagram-lt: rgb(252.3, 235.9, 239);--tblr-instagram-lt: color-mix(in oklab, var(--tblr-instagram) 10%, transparent);--tblr-instagram-200: color-mix(in oklab, var(--tblr-instagram) 20%, transparent);--tblr-instagram-lt-rgb: 252, 236, 239;--tblr-pinterest: #bd081c;--tblr-pinterest-rgb: 189, 8, 28;--tblr-pinterest-fg: var(--tblr-light);--tblr-pinterest-darken: rgb(170.1, 7.2, 25.2);--tblr-pinterest-darken: color-mix(in oklab, var(--tblr-pinterest), transparent 20%);--tblr-pinterest-lt: rgb(248.4, 230.3, 232.3);--tblr-pinterest-lt: color-mix(in oklab, var(--tblr-pinterest) 10%, transparent);--tblr-pinterest-200: color-mix(in oklab, var(--tblr-pinterest) 20%, transparent);--tblr-pinterest-lt-rgb: 248, 230, 232;--tblr-vk: #6383a8;--tblr-vk-rgb: 99, 131, 168;--tblr-vk-fg: var(--tblr-light);--tblr-vk-darken: rgb(89.1, 117.9, 151.2);--tblr-vk-darken: color-mix(in oklab, var(--tblr-vk), transparent 20%);--tblr-vk-lt: rgb(239.4, 242.6, 246.3);--tblr-vk-lt: color-mix(in oklab, var(--tblr-vk) 10%, transparent);--tblr-vk-200: color-mix(in oklab, var(--tblr-vk) 20%, transparent);--tblr-vk-lt-rgb: 239, 243, 246;--tblr-rss: #ffa500;--tblr-rss-rgb: 255, 165, 0;--tblr-rss-fg: var(--tblr-light);--tblr-rss-darken: rgb(229.5, 148.5, 0);--tblr-rss-darken: color-mix(in oklab, var(--tblr-rss), transparent 20%);--tblr-rss-lt: rgb(255, 246, 229.5);--tblr-rss-lt: color-mix(in oklab, var(--tblr-rss) 10%, transparent);--tblr-rss-200: color-mix(in oklab, var(--tblr-rss) 20%, transparent);--tblr-rss-lt-rgb: 255, 246, 230;--tblr-flickr: #0063dc;--tblr-flickr-rgb: 0, 99, 220;--tblr-flickr-fg: var(--tblr-light);--tblr-flickr-darken: rgb(0, 89.1, 198);--tblr-flickr-darken: color-mix(in oklab, var(--tblr-flickr), transparent 20%);--tblr-flickr-lt: rgb(229.5, 239.4, 251.5);--tblr-flickr-lt: color-mix(in oklab, var(--tblr-flickr) 10%, transparent);--tblr-flickr-200: color-mix(in oklab, var(--tblr-flickr) 20%, transparent);--tblr-flickr-lt-rgb: 230, 239, 252;--tblr-bitbucket: #0052cc;--tblr-bitbucket-rgb: 0, 82, 204;--tblr-bitbucket-fg: var(--tblr-light);--tblr-bitbucket-darken: rgb(0, 73.8, 183.6);--tblr-bitbucket-darken: color-mix(in oklab, var(--tblr-bitbucket), transparent 20%);--tblr-bitbucket-lt: rgb(229.5, 237.7, 249.9);--tblr-bitbucket-lt: color-mix(in oklab, var(--tblr-bitbucket) 10%, transparent);--tblr-bitbucket-200: color-mix(in oklab, var(--tblr-bitbucket) 20%, transparent);--tblr-bitbucket-lt-rgb: 230, 238, 250;--tblr-tabler: #066fd1;--tblr-tabler-rgb: 6, 111, 209;--tblr-tabler-fg: var(--tblr-light);--tblr-tabler-darken: rgb(5.4, 99.9, 188.1);--tblr-tabler-darken: color-mix(in oklab, var(--tblr-tabler), transparent 20%);--tblr-tabler-lt: rgb(230.1, 240.6, 250.4);--tblr-tabler-lt: color-mix(in oklab, var(--tblr-tabler) 10%, transparent);--tblr-tabler-200: color-mix(in oklab, var(--tblr-tabler) 20%, transparent);--tblr-tabler-lt-rgb: 230, 241, 250;--tblr-gray-50-fg: var(--tblr-body-color);--tblr-gray-100-fg: var(--tblr-body-color);--tblr-gray-200-fg: var(--tblr-body-color);--tblr-gray-300-fg: var(--tblr-body-color);--tblr-gray-400-fg: var(--tblr-white);--tblr-gray-500-fg: var(--tblr-white);--tblr-gray-600-fg: var(--tblr-white);--tblr-gray-700-fg: var(--tblr-white);--tblr-gray-800-fg: var(--tblr-white);--tblr-gray-900-fg: var(--tblr-white);--tblr-gray-950-fg: var(--tblr-white);--tblr-spacer-0: 0;--tblr-spacer-1: .25rem;--tblr-spacer-2: .5rem;--tblr-spacer-3: 1rem;--tblr-spacer-4: 1.5rem;--tblr-spacer-5: 2rem;--tblr-spacer-6: 2.5rem;--tblr-font-weight-light: 300;--tblr-font-weight-normal: 400;--tblr-font-weight-medium: 500;--tblr-font-weight-bold: 600;--tblr-font-weight-black: 700;--tblr-font-weight-headings: var(--tblr-font-weight-bold);--tblr-font-size-h1: 1.5rem;--tblr-font-size-h2: 1.25rem;--tblr-font-size-h3: 1rem;--tblr-font-size-h4: .875rem;--tblr-font-size-h5: .75rem;--tblr-font-size-h6: .625rem;--tblr-line-height-h1: 2rem;--tblr-line-height-h2: 1.75rem;--tblr-line-height-h3: 1.5rem;--tblr-line-height-h4: 1.25rem;--tblr-line-height-h5: 1rem;--tblr-line-height-h6: 1rem;--tblr-shadow: rgba(var(--tblr-body-color-rgb), .04) 0 2px 4px 0;--tblr-shadow-border: inset 0 0 0 1px var(--tblr-border-color-translucent);--tblr-shadow-transparent: 0 0 0 0 transparent;--tblr-shadow-input: 0 1px 1px rgba(var(--tblr-body-color-rgb), .06);--tblr-shadow-card: 0 0 4px rgba(var(--tblr-body-color-rgb), .04);--tblr-shadow-card-hover: rgba(var(--tblr-body-color-rgb), .16) 0 2px 16px 0;--tblr-shadow-dropdown: 0 16px 24px 2px rgba(0, 0, 0, .07), 0 6px 30px 5px rgba(0, 0, 0, .06), 0 8px 10px -5px rgba(0, 0, 0, .1);--tblr-border-radius-scale: 1;--tblr-border-radius-0: calc(0 * var(--tblr-border-radius-scale, 1));--tblr-border-radius-sm: calc(4px * var(--tblr-border-radius-scale, 1));--tblr-border-radius-md: calc(6px * var(--tblr-border-radius-scale, 1));--tblr-border-radius-lg: calc(8px * var(--tblr-border-radius-scale, 1));--tblr-border-radius-pill: calc(100rem * var(--tblr-border-radius-scale, 1));--tblr-border-radius: var(--tblr-border-radius-md);--tblr-backdrop-opacity: 24%;--tblr-backdrop-bg: var(--tblr-bg-surface-dark);--tblr-backdrop-bg-dark: color-mix(in srgb, var(--tblr-color-dark), transparent var(--tblr-backdrop-opacity));--tblr-backdrop-bg-light: color-mix(in srgb, var(--tblr-color-light), transparent var(--tblr-backdrop-opacity));--tblr-backdrop-blur: 4px;--tblr-backdrop-filter: blur(var(--tblr-backdrop-blur))}:root,:host{font-size:16px;height:100%}@media(min-width:992px){:root,:host{margin-left:calc(100vw - 100%);margin-right:0}}:root,:host,[data-bs-theme=light]{color-scheme:light;--tblr-spacer: var(--tblr-spacer-2);--tblr-bg-surface: var(--tblr-bg-surface-primary);--tblr-bg-surface-primary: var(--tblr-white);--tblr-bg-surface-secondary: var(--tblr-gray-50);--tblr-bg-surface-tertiary: var(--tblr-gray-50);--tblr-bg-surface-dark: var(--tblr-gray-900);--tblr-bg-surface-inverted: var(--tblr-gray-900);--tblr-bg-forms: var(--tblr-bg-surface);--tblr-text-inverted: var(--tblr-gray-100);--tblr-body-color: var(--tblr-gray-700);--tblr-body-bg: var(--tblr-bg-surface-secondary);--tblr-link-color: var(--tblr-primary);--tblr-link-hover-color: color-mix(in srgb, var(--tblr-primary), #000 20%);--tblr-secondary: var(--tblr-gray-500);--tblr-tertiary: var(--tblr-gray-400);--tblr-border-color: #e5e7eb;--tblr-border-color-translucent: rgba(4, 32, 69, .1);--tblr-border-dark-color: #9ca3af;--tblr-border-dark-color-translucent: rgba(4, 32, 69, .27);--tblr-border-active-color: rgb(169.16, 173.22, 181.34);--tblr-icon-color: var(--tblr-gray-400);--tblr-active-bg: rgba(var(--tblr-primary-rgb), .04);--tblr-disabled-bg: var(--tblr-bg-surface-secondary);--tblr-disabled-color: color-mix(in srgb, var(--tblr-body-color) 40%, transparent);--tblr-code-color: light-dark(var(--tblr-gray-600), var(--tblr-gray-400));--tblr-code-bg: light-dark(var(--tblr-gray-100), var(--tblr-gray-900));--tblr-dark-mode-border-color: rgb(45.7069767442, 60.4511627907, 81.0930232558);--tblr-dark-mode-border-color-translucent: rgba(72, 110, 149, .14);--tblr-dark-mode-border-active-color: rgb(53.0604651163, 70.176744186, 94.1395348837);--tblr-dark-mode-border-dark-color: rgb(38.3534883721, 50.7255813953, 68.0465116279);--tblr-page-padding: var(--tblr-spacer-3);--tblr-page-padding-y: var(--tblr-spacer-4)}@media(max-width:991.98px){:root,:host,[data-bs-theme=light]{--tblr-page-padding: var(--tblr-spacer-2)}}@keyframes pulse{0%{transform:scale(1)}14%{transform:scale(1.25)}28%{transform:scale(1)}42%{transform:scale(1.25)}70%{transform:scale(1)}}@keyframes tada{0%{transform:scaleZ(1)}10%,5%{transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-5deg)}15%,25%,35%,45%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,5deg)}20%,30%,40%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-5deg)}50%{transform:scaleZ(1)}}@keyframes rotate-360{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes blink{0%{opacity:0}50%{opacity:1}to{opacity:0}}@keyframes shake{0%{transform:scaleX(1)}20%{transform:scale3d(.9,.9,.9) rotate(-5deg)}50%,70%,90%{transform:scale3d(1.25,1.25,1.25) rotate(5deg)}60%,80%{transform:scale3d(1.25,1.25,1.25) rotate(-5deg)}to{transform:scaleX(1)}}body{letter-spacing:0;touch-action:manipulation;text-rendering:optimizeLegibility;font-feature-settings:"liga" 0,"cv03","cv04","cv11";position:relative;min-height:100%;height:100%;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media print{body{background:transparent}}*{scrollbar-color:color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 20%,transparent) transparent}*::-webkit-scrollbar{width:1rem;height:1rem;transition:background .3s}@media(prefers-reduced-motion:reduce){*::-webkit-scrollbar{transition:none}}*::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 20%,transparent)}*::-webkit-scrollbar-track{background:transparent}*:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 40%,transparent)}*::-webkit-scrollbar-corner{background:transparent}.layout-fluid .container,.layout-fluid [class^=container-],.layout-fluid [class*=" container-"]{max-width:100%}.layout-boxed{--tblr-theme-boxed-border-radius: 0;--tblr-theme-boxed-width: 1320px}@media(min-width:768px){.layout-boxed{background:#1f2937 linear-gradient(to right,rgba(255,255,255,.1),transparent) fixed;padding:1rem;--tblr-theme-boxed-border-radius: 6px}}.layout-boxed .page{margin:0 auto;max-width:var(--tblr-theme-boxed-width);border-radius:var(--tblr-theme-boxed-border-radius);color:var(--tblr-body-color)}@media(min-width:768px){.layout-boxed .page{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background:var(--tblr-body-bg)}}.layout-boxed .page>.navbar:first-child{border-top-left-radius:var(--tblr-theme-boxed-border-radius);border-top-right-radius:var(--tblr-theme-boxed-border-radius)}.navbar{--tblr-navbar-bg: var(--tblr-bg-surface);--tblr-navbar-border-width: var(--tblr-border-width);--tblr-navbar-active-border-color: #00857D;--tblr-navbar-active-bg: rgba(0, 0, 0, .2);--tblr-navbar-border-color: var(--tblr-border-color);--tblr-navbar-hover-color: var(--tblr-body-color);align-items:stretch;min-height:3.5rem;box-shadow:inset 0 calc(-1 * var(--tblr-navbar-border-width)) 0 0 var(--tblr-navbar-border-color);background:var(--tblr-navbar-bg);color:var(--tblr-navbar-color)}.navbar-collapse .navbar{flex-grow:1}.navbar.collapsing{min-height:0}.navbar .dropdown-menu{position:absolute;z-index:1030}.navbar .navbar-nav{min-height:3rem}.navbar .navbar-nav .nav-link{position:relative;min-width:2.5rem;min-height:2.5rem;justify-content:center;border-radius:var(--tblr-border-radius)}.navbar .navbar-nav .nav-link .badge{position:absolute;top:.375rem;right:.375rem;transform:translate(50%,-50%)}@media(max-width:575.98px){.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-sm .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:576px){.navbar-expand-sm .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-sm .nav-item.active{position:relative}.navbar-expand-sm .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-sm .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-sm.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical.navbar-right,.navbar-expand-sm.navbar-vertical.navbar-end{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical~.navbar,.navbar-expand-sm.navbar-vertical~.page-wrapper{margin-left:18rem}.navbar-expand-sm.navbar-vertical.navbar-right~.navbar,.navbar-expand-sm.navbar-vertical.navbar-right~.page-wrapper,.navbar-expand-sm.navbar-vertical.navbar-end~.navbar,.navbar-expand-sm.navbar-vertical.navbar-end~.page-wrapper{margin-left:0;margin-right:18rem}}@media(max-width:767.98px){.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-md .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:768px){.navbar-expand-md .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-md .nav-item.active{position:relative}.navbar-expand-md .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-md .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-md.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical.navbar-right,.navbar-expand-md.navbar-vertical.navbar-end{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical~.navbar,.navbar-expand-md.navbar-vertical~.page-wrapper{margin-left:18rem}.navbar-expand-md.navbar-vertical.navbar-right~.navbar,.navbar-expand-md.navbar-vertical.navbar-right~.page-wrapper,.navbar-expand-md.navbar-vertical.navbar-end~.navbar,.navbar-expand-md.navbar-vertical.navbar-end~.page-wrapper{margin-left:0;margin-right:18rem}}@media(max-width:991.98px){.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-lg .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:992px){.navbar-expand-lg .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-lg .nav-item.active{position:relative}.navbar-expand-lg .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-lg .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-lg.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical.navbar-right,.navbar-expand-lg.navbar-vertical.navbar-end{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical~.navbar,.navbar-expand-lg.navbar-vertical~.page-wrapper{margin-left:18rem}.navbar-expand-lg.navbar-vertical.navbar-right~.navbar,.navbar-expand-lg.navbar-vertical.navbar-right~.page-wrapper,.navbar-expand-lg.navbar-vertical.navbar-end~.navbar,.navbar-expand-lg.navbar-vertical.navbar-end~.page-wrapper{margin-left:0;margin-right:18rem}}@media(max-width:1199.98px){.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:1200px){.navbar-expand-xl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xl .nav-item.active{position:relative}.navbar-expand-xl .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-xl .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xl.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical.navbar-right,.navbar-expand-xl.navbar-vertical.navbar-end{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical~.navbar,.navbar-expand-xl.navbar-vertical~.page-wrapper{margin-left:18rem}.navbar-expand-xl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xl.navbar-vertical.navbar-right~.page-wrapper,.navbar-expand-xl.navbar-vertical.navbar-end~.navbar,.navbar-expand-xl.navbar-vertical.navbar-end~.page-wrapper{margin-left:0;margin-right:18rem}}@media(max-width:1399.98px){.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:1400px){.navbar-expand-xxl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xxl .nav-item.active{position:relative}.navbar-expand-xxl .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-xxl .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xxl.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical.navbar-right,.navbar-expand-xxl.navbar-vertical.navbar-end{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical~.navbar,.navbar-expand-xxl.navbar-vertical~.page-wrapper{margin-left:18rem}.navbar-expand-xxl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xxl.navbar-vertical.navbar-right~.page-wrapper,.navbar-expand-xxl.navbar-vertical.navbar-end~.navbar,.navbar-expand-xxl.navbar-vertical.navbar-end~.page-wrapper{margin-left:0;margin-right:18rem}}.navbar-expand .navbar-collapse{flex-direction:column}.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}.navbar-expand .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand .nav-item.active{position:relative}.navbar-expand .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical.navbar-right,.navbar-expand.navbar-vertical.navbar-end{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical~.navbar,.navbar-expand.navbar-vertical~.page-wrapper{margin-left:18rem}.navbar-expand.navbar-vertical.navbar-right~.navbar,.navbar-expand.navbar-vertical.navbar-right~.page-wrapper,.navbar-expand.navbar-vertical.navbar-end~.navbar,.navbar-expand.navbar-vertical.navbar-end~.page-wrapper{margin-left:0;margin-right:18rem}.navbar-brand{display:inline-flex;align-items:center;font-weight:var(--tblr-font-weight-bold);margin:0;line-height:1;gap:.5rem}.navbar-brand-image{height:2rem;width:auto}.navbar-toggler{border:0;width:2rem;height:2rem;position:relative;display:flex;align-items:center;justify-content:center}.navbar-toggler-icon{height:2px;width:1.25em;background:currentColor;border-radius:10px;transition:top .2s .2s,bottom .2s .2s,transform .2s,opacity 0s .2s}@media(prefers-reduced-motion:reduce){.navbar-toggler-icon{transition:none}}.navbar-toggler-icon{position:relative}.navbar-toggler-icon:before,.navbar-toggler-icon:after{content:"";display:block;height:inherit;width:inherit;border-radius:inherit;background:inherit;position:absolute;left:0;transition:inherit}@media(prefers-reduced-motion:reduce){.navbar-toggler-icon:before,.navbar-toggler-icon:after{transition:none}}.navbar-toggler-icon:before{top:-.45em}.navbar-toggler-icon:after{bottom:-.45em}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transform:rotate(45deg);transition:top .3s,bottom .3s,transform .3s .3s,opacity 0s .3s}@media(prefers-reduced-motion:reduce){.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transition:none}}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:before{top:0;transform:rotate(-90deg)}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:after{bottom:0;opacity:0}.navbar-transparent{--tblr-navbar-border-color: transparent !important;background:transparent!important}.navbar-nav{--tblr-nav-link-hover-bg: color-mix(in srgb, var(--tblr-nav-link-color) 4%, transparent);margin:0;padding:0;align-items:stretch}.navbar-nav .nav-item{display:flex;flex-direction:column;justify-content:center}.navbar-side{margin:0;display:flex;flex-direction:row;align-items:center;justify-content:space-around}@media(min-width:576px){.navbar-vertical.navbar-expand-sm{width:18rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media(min-width:576px)and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-sm{transition:none}}@media(min-width:576px){.navbar-vertical.navbar-expand-sm.navbar-right,.navbar-vertical.navbar-expand-sm.navbar-end{left:auto;right:0}.navbar-vertical.navbar-expand-sm .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-sm .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-sm .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-sm .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-sm>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-sm~.page{padding-left:18rem}.navbar-vertical.navbar-expand-sm~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-sm.navbar-right~.page,.navbar-vertical.navbar-expand-sm.navbar-end~.page{padding-left:0;padding-right:18rem}.navbar-vertical.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:768px){.navbar-vertical.navbar-expand-md{width:18rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media(min-width:768px)and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-md{transition:none}}@media(min-width:768px){.navbar-vertical.navbar-expand-md.navbar-right,.navbar-vertical.navbar-expand-md.navbar-end{left:auto;right:0}.navbar-vertical.navbar-expand-md .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-md .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-md .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-md .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-md>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-md~.page{padding-left:18rem}.navbar-vertical.navbar-expand-md~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-md.navbar-right~.page,.navbar-vertical.navbar-expand-md.navbar-end~.page{padding-left:0;padding-right:18rem}.navbar-vertical.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:992px){.navbar-vertical.navbar-expand-lg{width:18rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media(min-width:992px)and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-lg{transition:none}}@media(min-width:992px){.navbar-vertical.navbar-expand-lg.navbar-right,.navbar-vertical.navbar-expand-lg.navbar-end{left:auto;right:0}.navbar-vertical.navbar-expand-lg .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-lg .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-lg .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-lg>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-lg~.page{padding-left:18rem}.navbar-vertical.navbar-expand-lg~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-lg.navbar-right~.page,.navbar-vertical.navbar-expand-lg.navbar-end~.page{padding-left:0;padding-right:18rem}.navbar-vertical.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:1200px){.navbar-vertical.navbar-expand-xl{width:18rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media(min-width:1200px)and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xl{transition:none}}@media(min-width:1200px){.navbar-vertical.navbar-expand-xl.navbar-right,.navbar-vertical.navbar-expand-xl.navbar-end{left:auto;right:0}.navbar-vertical.navbar-expand-xl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xl~.page{padding-left:18rem}.navbar-vertical.navbar-expand-xl~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-xl.navbar-right~.page,.navbar-vertical.navbar-expand-xl.navbar-end~.page{padding-left:0;padding-right:18rem}.navbar-vertical.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:1400px){.navbar-vertical.navbar-expand-xxl{width:18rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media(min-width:1400px)and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xxl{transition:none}}@media(min-width:1400px){.navbar-vertical.navbar-expand-xxl.navbar-right,.navbar-vertical.navbar-expand-xxl.navbar-end{left:auto;right:0}.navbar-vertical.navbar-expand-xxl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xxl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xxl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xxl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xxl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xxl~.page{padding-left:18rem}.navbar-vertical.navbar-expand-xxl~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-xxl.navbar-right~.page,.navbar-vertical.navbar-expand-xxl.navbar-end~.page{padding-left:0;padding-right:18rem}.navbar-vertical.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}.navbar-vertical.navbar-expand{width:18rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s}@media(prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand{transition:none}}.navbar-vertical.navbar-expand{overflow-y:scroll;padding:0}.navbar-vertical.navbar-expand.navbar-right,.navbar-vertical.navbar-expand.navbar-end{left:auto;right:0}.navbar-vertical.navbar-expand .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand~.page{padding-left:18rem}.navbar-vertical.navbar-expand~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand.navbar-right~.page,.navbar-vertical.navbar-expand.navbar-end~.page{padding-left:0;padding-right:18rem}.navbar-vertical.navbar-expand .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}.navbar-overlap:after{content:"";height:9rem;position:absolute;top:100%;left:0;right:0;background:inherit;z-index:-1;box-shadow:inherit}.page{display:flex;flex-direction:column;position:relative;min-height:100%}.page-center{justify-content:center}.page-wrapper{flex:1;display:flex;flex-direction:column}@media print{.page-wrapper{margin:0!important}}.page-wrapper-full .page-body:first-child{margin:0;border-top:0}.page-body{margin-top:var(--tblr-page-padding-y);margin-bottom:var(--tblr-page-padding-y);display:flex;flex-direction:column;flex:1}.page-body-card{background:var(--tblr-bg-surface);border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);padding:var(--tblr-page-padding) 0;margin-bottom:0;flex:1}.page-body~.page-body-card{margin-top:0}.page-cover{background:no-repeat center/cover;min-height:9rem}@media(min-width:768px){.page-cover{min-height:12rem}}@media(min-width:992px){.page-cover{min-height:15rem}}.page-cover-overlay{position:relative}.page-cover-overlay:after{content:"";position:absolute;inset:0;background-image:linear-gradient(180deg,#0000,#0009)}.page-header{display:flex;flex-wrap:wrap;min-height:2.25rem;flex-direction:column;justify-content:center;max-width:100%}.page-wrapper .page-header{margin:var(--tblr-page-padding-y) 0 0}.page-header-border{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding:var(--tblr-page-padding-y) 0;margin:0!important;background-color:var(--tblr-bg-surface)}.page-pretitle{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.page-title{margin:0;font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h2);font-weight:var(--tblr-font-weight-headings);color:inherit;display:flex;align-items:center}.page-title svg{width:1.5rem;height:1.5rem;margin-right:.25rem}.page-title-lg{font-size:1.5rem;line-height:2rem}.page-subtitle{margin-top:.25rem;color:var(--tblr-secondary)}.page-cover{--tblr-page-cover-blur: 20px;--tblr-page-cover-padding: 1rem;min-height:6rem;padding:var(--tblr-page-cover-padding) 0;position:relative;overflow:hidden}.page-cover-img{position:absolute;top:calc(-2 * var(--tblr-page-cover-blur, 0));left:calc(-2 * var(--tblr-page-cover-blur, 0));right:calc(-2 * var(--tblr-page-cover-blur, 0));bottom:calc(-2 * var(--tblr-page-cover-blur, 0));pointer-events:none;filter:blur(var(--tblr-page-cover-blur));object-fit:cover;background-size:cover;background-position:center;z-index:-1}.page-tabs{margin-top:.5rem;position:relative}.page-header-tabs .nav-bordered{border:0}.page-header-tabs+.page-body-card{margin-top:0}.footer{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background-color:var(--tblr-bg-surface);padding:2rem 0;color:var(--tblr-gray-500);margin-top:auto}.footer-transparent{background-color:transparent;border-top:0}:root:not(.theme-dark):not([data-bs-theme=dark]) .hide-theme-light{display:none!important}:root:not(.theme-dark):not([data-bs-theme=dark]) .img-dark{display:none!important}:root.theme-dark .hide-theme-dark,:root[data-bs-theme=dark] .hide-theme-dark,body[data-bs-theme=dark] [data-bs-theme=light]:root .hide-theme-dark{display:none!important}:root.theme-dark .img-light,:root[data-bs-theme=dark] .img-light,body[data-bs-theme=dark] [data-bs-theme=light]:root .img-light{display:none!important}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{color-scheme:dark;--tblr-body-color: var(--tblr-gray-200);--tblr-secondary: var(--tblr-gray-400);--tblr-body-bg: var(--tblr-gray-900);--tblr-emphasis-color: #ffffff;--tblr-emphasis-color-rgb: 255, 255, 255;--tblr-bg-forms: var(--tblr-gray-900);--tblr-bg-surface: var(--tblr-gray-800);--tblr-bg-surface-inverted: var(--tblr-gray-100);--tblr-bg-surface-secondary: var(--tblr-gray-900);--tblr-bg-surface-tertiary: var(--tblr-gray-800);--tblr-text-inverted: var(--tblr-gray-800);--tblr-link-color: var(--tblr-primary);--tblr-link-hover-color: color-mix(in srgb, var(--tblr-primary), black 20%);--tblr-active-bg: rgb(34.676744186, 45.8627906977, 61.523255814);--tblr-disabled-color: color-mix(in srgb, var(--tblr-body-color) 40%, transparent);--tblr-border-color: var(--tblr-gray-700);--tblr-border-color-translucent: var( --tblr-dark-mode-border-color-translucent );--tblr-border-dark-color: var(--tblr-dark-mode-border-dark-color);--tblr-border-active-color: var( --tblr-dark-mode-border-active-color );--tblr-btn-color: rgb(27.323255814, 36.1372093023, 48.476744186)}[data-bs-theme=dark] .navbar-brand-autodark .navbar-brand-image{filter:brightness(0) invert(1)}.accordion{--tblr-accordion-color: var(--tblr-body-color);--tblr-accordion-border-color: var(--tblr-border-color);--tblr-accordion-border-radius: var(--tblr-border-radius);--tblr-accordion-inner-border-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width)));--tblr-accordion-padding-x: 1.25rem;--tblr-accordion-gap: 0;--tblr-accordion-active-color: inherit;--tblr-accordion-btn-color: var(--tblr-accordion-color);--tblr-accordion-btn-bg: transparent;--tblr-accordion-btn-toggle-width: 1.25rem;--tblr-accordion-btn-padding-x: var(--tblr-accordion-padding-x);--tblr-accordion-btn-padding-y: 1rem;--tblr-accordion-btn-font-weight: var(--tblr-font-weight-medium);--tblr-accordion-body-padding-x: var(--tblr-accordion-padding-x);--tblr-accordion-body-padding-y: 1rem;display:flex;flex-direction:column;gap:var(--tblr-accordion-gap)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--tblr-accordion-btn-padding-y) var(--tblr-accordion-padding-x);color:inherit;text-align:inherit;background-color:transparent;border:0;font-size:inherit;font-weight:var(--tblr-accordion-btn-font-weight);gap:.75rem}.accordion-button:not(.collapsed){border-bottom-color:transparent;box-shadow:none;color:var(--tblr-accordion-active-color)}.accordion-header{margin:0;position:relative;display:flex;gap:1rem;align-items:center;width:100%;color:var(--tblr-accordion-btn-color);text-align:left;background-color:transparent;border:0;overflow-anchor:none;transition:transform .3s}.accordion-header:hover{z-index:2}.accordion-header:focus{z-index:3;outline:0;box-shadow:var(--tblr-accordion-btn-focus-box-shadow)}.accordion-header:focus:not(:focus-visible){outline:none;box-shadow:none}.accordion-button-icon{color:var(--tblr-secondary)}.accordion-button-toggle{display:flex;line-height:1;transition:.3s transform;margin-left:auto;margin-right:0;color:var(--tblr-secondary);width:var(--tblr-accordion-btn-toggle-width);height:var(--tblr-accordion-btn-toggle-width)}.accordion-button:not(.collapsed) .accordion-button-toggle{transform:rotate(-180deg);color:var(--tblr-accordion-active-color)}.accordion-button-toggle path{transition:.3s opacity}.accordion-button:not(.collapsed) .accordion-button-toggle-plus path:first-child{opacity:0}.accordion-item{color:var(--tblr-accordion-color);border:var(--tblr-border-width) solid var(--tblr-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--tblr-accordion-border-radius);border-top-right-radius:var(--tblr-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header{border-top-left-radius:var(--tblr-accordion-inner-border-radius);border-top-right-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--tblr-accordion-border-radius);border-bottom-left-radius:var(--tblr-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header.collapsed{border-bottom-right-radius:var(--tblr-accordion-inner-border-radius);border-bottom-left-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--tblr-accordion-border-radius);border-bottom-left-radius:var(--tblr-accordion-border-radius)}.accordion-body{color:var(--tblr-secondary);padding:0 var(--tblr-accordion-body-padding-x) var(--tblr-accordion-body-padding-y)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-collapse,.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}.accordion-tabs{--tblr-accordion-gap: .75rem}.accordion-tabs>.accordion-item{border:var(--tblr-border-width) solid var(--tblr-accordion-border-color);border-radius:var(--tblr-accordion-border-radius)}.accordion-inverted .accordion-button-toggle{order:-1;margin-left:0}.alert{--tblr-alert-color: var(--tblr-body-color);--tblr-alert-bg: color-mix(in srgb, var(--tblr-alert-color) 10%, transparent);--tblr-alert-padding-x: 1rem;--tblr-alert-padding-y: .75rem;--tblr-alert-margin-bottom: 1rem;--tblr-alert-border-color: color-mix(in srgb, var(--tblr-alert-color) 20%, transparent);--tblr-alert-border: var(--tblr-border-width) solid var(--tblr-alert-border-color);--tblr-alert-border-radius: var(--tblr-border-radius);--tblr-alert-link-color: inherit;--tblr-alert-heading-font-weight: var(--tblr-font-weight-medium);position:relative;padding:var(--tblr-alert-padding-y) var(--tblr-alert-padding-x);margin-bottom:var(--tblr-alert-margin-bottom);background-color:color-mix(in srgb,var(--tblr-alert-bg),var(--tblr-bg-surface));border-radius:var(--tblr-alert-border-radius);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-alert-border-color);display:flex;flex-direction:row;gap:1rem}.alert-heading{color:inherit;margin-bottom:.25rem;font-weight:var(--tblr-alert-heading-font-weight)}.alert-description{color:var(--tblr-secondary)}.alert-icon{color:var(--tblr-alert-color);width:1.25rem!important;height:1.25rem!important}.alert-action{color:var(--tblr-alert-color);text-decoration:underline}.alert-action:hover{text-decoration:none}.alert-list{margin:0}.alert-link{font-weight:var(--tblr-font-weight-bold);color:var(--tblr-alert-link-color)}.alert-link,.alert-link:hover{color:var(--tblr-alert-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:calc(var(--tblr-alert-padding-x) / 2 - 1px);right:calc(var(--tblr-alert-padding-y) / 2 - 1px);z-index:1;padding:calc(var(--tblr-alert-padding-y) * 1.25) var(--tblr-alert-padding-x)}.alert-important{border-color:var(--tblr-alert-color);background-color:var(--tblr-alert-color);color:var(--tblr-white)}.alert-important .alert-description,.alert-important .alert-icon{color:inherit}.alert-minor{background:transparent;border-color:var(--tblr-border-color)}.alert-primary{--tblr-alert-color: var(--tblr-primary)}.alert-secondary{--tblr-alert-color: var(--tblr-secondary)}.alert-success{--tblr-alert-color: var(--tblr-success)}.alert-info{--tblr-alert-color: var(--tblr-info)}.alert-warning{--tblr-alert-color: var(--tblr-warning)}.alert-danger{--tblr-alert-color: var(--tblr-danger)}.alert-light{--tblr-alert-color: var(--tblr-light)}.alert-dark{--tblr-alert-color: var(--tblr-dark)}.alert-muted{--tblr-alert-color: var(--tblr-muted)}.alert-blue{--tblr-alert-color: var(--tblr-blue)}.alert-azure{--tblr-alert-color: var(--tblr-azure)}.alert-indigo{--tblr-alert-color: var(--tblr-indigo)}.alert-purple{--tblr-alert-color: var(--tblr-purple)}.alert-pink{--tblr-alert-color: var(--tblr-pink)}.alert-red{--tblr-alert-color: var(--tblr-red)}.alert-orange{--tblr-alert-color: var(--tblr-orange)}.alert-yellow{--tblr-alert-color: var(--tblr-yellow)}.alert-lime{--tblr-alert-color: var(--tblr-lime)}.alert-green{--tblr-alert-color: var(--tblr-green)}.alert-teal{--tblr-alert-color: var(--tblr-teal)}.alert-cyan{--tblr-alert-color: var(--tblr-cyan)}.avatar{--tblr-avatar-size: var(--tblr-avatar-list-size, 2.5rem);--tblr-avatar-status-size: .75rem;--tblr-avatar-bg: var(--tblr-bg-surface-secondary);--tblr-avatar-box-shadow-color: var(--tblr-border-color-translucent);--tblr-avatar-box-shadow: inset 0 0 0 1px var(--tblr-avatar-box-shadow-color);--tblr-avatar-font-size: 1rem;--tblr-avatar-icon-size: 1.5rem;--tblr-avatar-brand-size: 1.25rem;position:relative;width:var(--tblr-avatar-size);height:var(--tblr-avatar-size);font-size:var(--tblr-avatar-font-size);font-weight:var(--tblr-font-weight-medium);line-height:1;display:inline-flex;align-items:center;justify-content:center;color:var(--tblr-secondary);text-align:center;text-transform:uppercase;vertical-align:bottom;user-select:none;background:var(--tblr-avatar-bg) no-repeat center/cover;border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-avatar-box-shadow);transition:color .3s,background-color .3s,box-shadow .3s}.avatar .icon{width:var(--tblr-avatar-icon-size);height:var(--tblr-avatar-icon-size)}.avatar .badge{position:absolute;right:0;bottom:0;border-radius:100rem;box-shadow:0 0 0 calc(var(--tblr-avatar-status-size) / 4) var(--tblr-bg-surface)}a.avatar{cursor:pointer}a.avatar:hover{color:var(--tblr-primary);--tblr-avatar-box-shadow-color: var(--tblr-primary)}.avatar-rounded{border-radius:100rem}.avatar-xxs{--tblr-avatar-size: 1rem;--tblr-avatar-status-size: .25rem;--tblr-avatar-font-size: .5rem;--tblr-avatar-icon-size: .5rem;--tblr-avatar-brand-size: .5rem}.avatar-xxs .badge:empty{width:.25rem;height:.25rem}.avatar-xs{--tblr-avatar-size: 1.25rem;--tblr-avatar-status-size: .375rem;--tblr-avatar-font-size: .625rem;--tblr-avatar-icon-size: .75rem;--tblr-avatar-brand-size: .75rem}.avatar-xs .badge:empty{width:.375rem;height:.375rem}.avatar-sm{--tblr-avatar-size: 2rem;--tblr-avatar-status-size: .5rem;--tblr-avatar-font-size: .75rem;--tblr-avatar-icon-size: 1.5rem;--tblr-avatar-brand-size: 1rem}.avatar-sm .badge:empty{width:.5rem;height:.5rem}.avatar-md{--tblr-avatar-size: 2.5rem;--tblr-avatar-status-size: .75rem;--tblr-avatar-font-size: .875rem;--tblr-avatar-icon-size: 1.5rem;--tblr-avatar-brand-size: 1.25rem}.avatar-md .badge:empty{width:.75rem;height:.75rem}.avatar-lg{--tblr-avatar-size: 3rem;--tblr-avatar-status-size: .75rem;--tblr-avatar-font-size: 1.25rem;--tblr-avatar-icon-size: 2rem;--tblr-avatar-brand-size: 1.25rem}.avatar-lg .badge:empty{width:.75rem;height:.75rem}.avatar-xl{--tblr-avatar-size: 5rem;--tblr-avatar-status-size: 1rem;--tblr-avatar-font-size: 2rem;--tblr-avatar-icon-size: 3rem;--tblr-avatar-brand-size: 1.25rem}.avatar-xl .badge:empty{width:1rem;height:1rem}.avatar-2xl{--tblr-avatar-size: 7rem;--tblr-avatar-status-size: 1rem;--tblr-avatar-font-size: 3rem;--tblr-avatar-icon-size: 5rem;--tblr-avatar-brand-size: 2rem}.avatar-2xl .badge:empty{width:1rem;height:1rem}.avatar-list{--tblr-avatar-list-size: 2.5rem;--tblr-list-gap: .5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.avatar-list a.avatar:hover{z-index:1}.avatar-list-stacked{display:block;--tblr-list-gap: 0}.avatar-list-stacked .avatar{margin-right:calc(-.5 * var(--tblr-avatar-size))!important;box-shadow:var(--tblr-avatar-box-shadow),0 0 0 2px var(--tblr-card-bg, var(--tblr-bg-surface))}.avatar-list-xxs{--tblr-avatar-list-size: 1rem}.avatar-list-xs{--tblr-avatar-list-size: 1.25rem}.avatar-list-sm{--tblr-avatar-list-size: 2rem}.avatar-list-md{--tblr-avatar-list-size: 2.5rem}.avatar-list-lg{--tblr-avatar-list-size: 3rem}.avatar-list-xl{--tblr-avatar-list-size: 5rem}.avatar-list-2xl{--tblr-avatar-list-size: 7rem}.avatar-upload{border:var(--tblr-border-width) dashed var(--tblr-border-color);background:var(--tblr-bg-forms);box-shadow:none;flex-direction:column;transition:color .3s,background-color .3s}@media(prefers-reduced-motion:reduce){.avatar-upload{transition:none}}.avatar-upload svg{width:1.5rem;height:1.5rem;stroke-width:1}.avatar-upload:hover{border-color:var(--tblr-primary);color:var(--tblr-primary);text-decoration:none}.avatar-upload-text{font-size:.625rem;line-height:1;margin-top:.25rem}.avatar-cover{margin-top:calc(-.5 * var(--tblr-avatar-size));box-shadow:0 0 0 .25rem var(--tblr-card-bg, var(--tblr-body-bg))}.avatar-brand{width:var(--tblr-avatar-brand-size);height:var(--tblr-avatar-brand-size);position:absolute;right:-2px;bottom:-2px;z-index:1000;background:var(--tblr-bg-surface);border-radius:var(--tblr-border-radius);border:1px solid var(--tblr-border-color)}.badge{--tblr-badge-padding-x: .5em;--tblr-badge-padding-y: .25em;--tblr-badge-font-size: .85714285em;--tblr-badge-font-weight: var(--tblr-font-weight-medium);--tblr-badge-color: var(--tblr-secondary);--tblr-badge-border-radius: var(--tblr-border-radius);--tblr-badge-icon-size: 1em;--tblr-badge-line-height: 1;display:inline-flex;padding:var(--tblr-badge-padding-y) var(--tblr-badge-padding-x);font-weight:var(--tblr-badge-font-weight);font-size:var(--tblr-badge-font-size);color:var(--tblr-badge-color);text-align:center;white-space:nowrap;justify-content:center;align-items:center;gap:.25rem;background:var(--tblr-bg-surface-secondary);overflow:hidden;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) transparent;border-radius:var(--tblr-badge-border-radius);min-width:calc(1em + var(--tblr-badge-padding-y) * 2 + 2px);letter-spacing:.04em;vertical-align:bottom;line-height:var(--tblr-badge-line-height)}a.badge{background:var(--tblr-bg-surface-secondary)}.badge .icon{width:1em;height:1em;font-size:var(--tblr-badge-icon-size);stroke-width:2}.badge:empty,.badge-dot{display:inline-block;width:10px;height:10px;min-width:0;min-height:auto;padding:0;border-radius:100rem;vertical-align:baseline}.badge-outline{background-color:transparent;border:var(--tblr-border-width) var(--tblr-border-style) currentColor}.badge-pill{border-radius:100rem}.badges-list{--tblr-list-gap: .5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.badge-notification{position:absolute!important;top:0!important;right:0!important;transform:translate(50%,-50%);z-index:1}.badge-blink{animation:blink 2s infinite}.badge-sm{--tblr-badge-font-size: .71428571em;--tblr-badge-icon-size: 1em;--tblr-badge-padding-y: 2px;--tblr-badge-padding-x: .25rem}.badge-lg{--tblr-badge-font-size: 1em;--tblr-badge-icon-size: 1em;--tblr-badge-padding-y: .25rem;--tblr-badge-padding-x: .5rem}.badge-icononly{--tblr-badge-padding-x: 0}.breadcrumb{--tblr-breadcrumb-padding-x: 0;--tblr-breadcrumb-padding-y: 0;--tblr-breadcrumb-margin-bottom: 1rem;--tblr-breadcrumb-font-size: ;--tblr-breadcrumb-bg: ;--tblr-breadcrumb-border-radius: ;--tblr-breadcrumb-divider-color: var(--tblr-gray-500);--tblr-breadcrumb-item-padding-x: .5rem;--tblr-breadcrumb-item-active-color: inherit;--tblr-breadcrumb-item-active-font-weight: var(--tblr-font-weight-bold);--tblr-breadcrumb-item-disabled-color: var(--tblr-disabled-color);--tblr-breadcrumb-link-color: var(--tblr-link-color);display:flex;flex-wrap:wrap;font-size:var(--tblr-breadcrumb-font-size);list-style:none;background-color:var(--tblr-breadcrumb-bg);border-radius:var(--tblr-breadcrumb-border-radius);padding:0;margin:0;background:transparent}.breadcrumb a{color:var(--tblr-breadcrumb-link-color)}.breadcrumb a:hover{text-decoration:underline}.breadcrumb-muted{--tblr-breadcrumb-link-color: var(--tblr-secondary)}.breadcrumb-item.active{color:var(--tblr-breadcrumb-item-active-color);font-weight:var(--tblr-breadcrumb-item-active-font-weight)}.breadcrumb-item.active a{color:inherit;pointer-events:none}.breadcrumb-item.disabled{color:var(--tblr-breadcrumb-item-disabled-color)}.breadcrumb-item.disabled:before{color:inherit}.breadcrumb-item.disabled a{color:inherit;pointer-events:none}.breadcrumb-item+.breadcrumb-item{padding-left:var(--tblr-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--tblr-breadcrumb-item-padding-x);color:var(--tblr-breadcrumb-divider-color);content:var(--tblr-breadcrumb-divider, "/")}.breadcrumb-dots{--tblr-breadcrumb-divider: "\b7"}.breadcrumb-arrows{--tblr-breadcrumb-divider: "\203a"}.breadcrumb-bullets{--tblr-breadcrumb-divider: "\2022"}.btn{--tblr-btn-icon-size: 1.25rem;--tblr-btn-icon-color: inherit;--tblr-btn-bg: var(--tblr-bg-surface);--tblr-btn-color: var(--tblr-body-color);--tblr-btn-border-color: var(--tblr-border-color);--tblr-btn-hover-bg: var(--tblr-btn-bg);--tblr-btn-hover-border-color: var(--tblr-border-active-color);--tblr-btn-active-color: var(--tblr-primary);--tblr-btn-active-bg: rgba(var(--tblr-primary-rgb), .04);--tblr-btn-active-border-color: var(--tblr-primary);display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;box-shadow:var(--tblr-btn-box-shadow);position:relative;min-width:calc(var(--tblr-btn-line-height) * 1 + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2);min-height:calc(var(--tblr-btn-line-height) * 1 + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2)}.btn .icon{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);min-width:var(--tblr-btn-icon-size);font-size:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x) / 2) 0 calc(var(--tblr-btn-padding-x) / -4);vertical-align:bottom;color:var(--tblr-btn-icon-color)}.btn .avatar{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x) / 2) 0 calc(var(--tblr-btn-padding-x) / -4)}.btn .icon-right,.btn .icon-end{margin:0 calc(var(--tblr-btn-padding-x) / -4) 0 calc(var(--tblr-btn-padding-x) / 2)}.btn .badge{top:auto}.btn-check+.btn:hover{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-link{color:#009f95;background-color:transparent;border-color:transparent;box-shadow:none}.btn-link .icon{color:inherit}.btn-link:hover{color:#006a64;border-color:transparent}.btn-primary{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-primary-fg, #ffffff);--tblr-btn-bg: var(--tblr-primary);--tblr-btn-hover-color: var(--tblr-primary-fg);--tblr-btn-hover-bg: var(--tblr-primary-darken);--tblr-btn-active-color: var(--tblr-primary-fg);--tblr-btn-active-bg: var(--tblr-primary-darken);--tblr-btn-disabled-bg: var(--tblr-primary);--tblr-btn-disabled-color: var(--tblr-primary-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-primary,.btn-outline.btn-primary{--tblr-btn-color: var(--tblr-primary);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-primary);--tblr-btn-hover-color: var(--tblr-primary-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-primary);--tblr-btn-active-color: var(--tblr-primary-fg);--tblr-btn-active-bg: var(--tblr-primary);--tblr-btn-active-border-color: var(--tblr-primary);--tblr-btn-disabled-color: var(--tblr-primary);--tblr-btn-disabled-border-color: var(--tblr-primary)}.btn-ghost-primary,.btn-ghost.btn-primary{--tblr-btn-color: var(--tblr-primary);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-primary-fg);--tblr-btn-hover-bg: var(--tblr-primary);--tblr-btn-hover-border-color: var(--tblr-primary);--tblr-btn-active-color: var(--tblr-primary-fg);--tblr-btn-active-bg: var(--tblr-primary);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-primary);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-secondary,.btn-grey,.btn-gray{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-secondary-fg, #ffffff);--tblr-btn-bg: var(--tblr-secondary);--tblr-btn-hover-color: var(--tblr-secondary-fg);--tblr-btn-hover-bg: var(--tblr-secondary-darken);--tblr-btn-active-color: var(--tblr-secondary-fg);--tblr-btn-active-bg: var(--tblr-secondary-darken);--tblr-btn-disabled-bg: var(--tblr-secondary);--tblr-btn-disabled-color: var(--tblr-secondary-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-secondary,.btn-outline.btn-secondary,.btn-outline.btn-grey,.btn-outline.btn-gray{--tblr-btn-color: var(--tblr-secondary);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-secondary);--tblr-btn-hover-color: var(--tblr-secondary-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-secondary);--tblr-btn-active-color: var(--tblr-secondary-fg);--tblr-btn-active-bg: var(--tblr-secondary);--tblr-btn-active-border-color: var(--tblr-secondary);--tblr-btn-disabled-color: var(--tblr-secondary);--tblr-btn-disabled-border-color: var(--tblr-secondary)}.btn-ghost-secondary,.btn-ghost.btn-secondary,.btn-ghost.btn-grey,.btn-ghost.btn-gray{--tblr-btn-color: var(--tblr-secondary);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-secondary-fg);--tblr-btn-hover-bg: var(--tblr-secondary);--tblr-btn-hover-border-color: var(--tblr-secondary);--tblr-btn-active-color: var(--tblr-secondary-fg);--tblr-btn-active-bg: var(--tblr-secondary);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-secondary);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-success{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-success-fg, #ffffff);--tblr-btn-bg: var(--tblr-success);--tblr-btn-hover-color: var(--tblr-success-fg);--tblr-btn-hover-bg: var(--tblr-success-darken);--tblr-btn-active-color: var(--tblr-success-fg);--tblr-btn-active-bg: var(--tblr-success-darken);--tblr-btn-disabled-bg: var(--tblr-success);--tblr-btn-disabled-color: var(--tblr-success-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-success,.btn-outline.btn-success{--tblr-btn-color: var(--tblr-success);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-success);--tblr-btn-hover-color: var(--tblr-success-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-success);--tblr-btn-active-color: var(--tblr-success-fg);--tblr-btn-active-bg: var(--tblr-success);--tblr-btn-active-border-color: var(--tblr-success);--tblr-btn-disabled-color: var(--tblr-success);--tblr-btn-disabled-border-color: var(--tblr-success)}.btn-ghost-success,.btn-ghost.btn-success{--tblr-btn-color: var(--tblr-success);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-success-fg);--tblr-btn-hover-bg: var(--tblr-success);--tblr-btn-hover-border-color: var(--tblr-success);--tblr-btn-active-color: var(--tblr-success-fg);--tblr-btn-active-bg: var(--tblr-success);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-success);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-info{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-info-fg, #ffffff);--tblr-btn-bg: var(--tblr-info);--tblr-btn-hover-color: var(--tblr-info-fg);--tblr-btn-hover-bg: var(--tblr-info-darken);--tblr-btn-active-color: var(--tblr-info-fg);--tblr-btn-active-bg: var(--tblr-info-darken);--tblr-btn-disabled-bg: var(--tblr-info);--tblr-btn-disabled-color: var(--tblr-info-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-info,.btn-outline.btn-info{--tblr-btn-color: var(--tblr-info);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-info);--tblr-btn-hover-color: var(--tblr-info-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-info);--tblr-btn-active-color: var(--tblr-info-fg);--tblr-btn-active-bg: var(--tblr-info);--tblr-btn-active-border-color: var(--tblr-info);--tblr-btn-disabled-color: var(--tblr-info);--tblr-btn-disabled-border-color: var(--tblr-info)}.btn-ghost-info,.btn-ghost.btn-info{--tblr-btn-color: var(--tblr-info);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-info-fg);--tblr-btn-hover-bg: var(--tblr-info);--tblr-btn-hover-border-color: var(--tblr-info);--tblr-btn-active-color: var(--tblr-info-fg);--tblr-btn-active-bg: var(--tblr-info);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-info);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-warning{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-warning-fg, #ffffff);--tblr-btn-bg: var(--tblr-warning);--tblr-btn-hover-color: var(--tblr-warning-fg);--tblr-btn-hover-bg: var(--tblr-warning-darken);--tblr-btn-active-color: var(--tblr-warning-fg);--tblr-btn-active-bg: var(--tblr-warning-darken);--tblr-btn-disabled-bg: var(--tblr-warning);--tblr-btn-disabled-color: var(--tblr-warning-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-warning,.btn-outline.btn-warning{--tblr-btn-color: var(--tblr-warning);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-warning);--tblr-btn-hover-color: var(--tblr-warning-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-warning);--tblr-btn-active-color: var(--tblr-warning-fg);--tblr-btn-active-bg: var(--tblr-warning);--tblr-btn-active-border-color: var(--tblr-warning);--tblr-btn-disabled-color: var(--tblr-warning);--tblr-btn-disabled-border-color: var(--tblr-warning)}.btn-ghost-warning,.btn-ghost.btn-warning{--tblr-btn-color: var(--tblr-warning);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-warning-fg);--tblr-btn-hover-bg: var(--tblr-warning);--tblr-btn-hover-border-color: var(--tblr-warning);--tblr-btn-active-color: var(--tblr-warning-fg);--tblr-btn-active-bg: var(--tblr-warning);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-warning);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-danger{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-danger-fg, #ffffff);--tblr-btn-bg: var(--tblr-danger);--tblr-btn-hover-color: var(--tblr-danger-fg);--tblr-btn-hover-bg: var(--tblr-danger-darken);--tblr-btn-active-color: var(--tblr-danger-fg);--tblr-btn-active-bg: var(--tblr-danger-darken);--tblr-btn-disabled-bg: var(--tblr-danger);--tblr-btn-disabled-color: var(--tblr-danger-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-danger,.btn-outline.btn-danger{--tblr-btn-color: var(--tblr-danger);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-danger);--tblr-btn-hover-color: var(--tblr-danger-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-danger);--tblr-btn-active-color: var(--tblr-danger-fg);--tblr-btn-active-bg: var(--tblr-danger);--tblr-btn-active-border-color: var(--tblr-danger);--tblr-btn-disabled-color: var(--tblr-danger);--tblr-btn-disabled-border-color: var(--tblr-danger)}.btn-ghost-danger,.btn-ghost.btn-danger{--tblr-btn-color: var(--tblr-danger);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-danger-fg);--tblr-btn-hover-bg: var(--tblr-danger);--tblr-btn-hover-border-color: var(--tblr-danger);--tblr-btn-active-color: var(--tblr-danger-fg);--tblr-btn-active-bg: var(--tblr-danger);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-danger);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-light,.btn-white{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-light-fg, #ffffff);--tblr-btn-bg: var(--tblr-light);--tblr-btn-hover-color: var(--tblr-light-fg);--tblr-btn-hover-bg: var(--tblr-light-darken);--tblr-btn-active-color: var(--tblr-light-fg);--tblr-btn-active-bg: var(--tblr-light-darken);--tblr-btn-disabled-bg: var(--tblr-light);--tblr-btn-disabled-color: var(--tblr-light-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-light,.btn-outline.btn-light,.btn-outline.btn-white{--tblr-btn-color: var(--tblr-light);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-light);--tblr-btn-hover-color: var(--tblr-light-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-light);--tblr-btn-active-color: var(--tblr-light-fg);--tblr-btn-active-bg: var(--tblr-light);--tblr-btn-active-border-color: var(--tblr-light);--tblr-btn-disabled-color: var(--tblr-light);--tblr-btn-disabled-border-color: var(--tblr-light)}.btn-ghost-light,.btn-ghost.btn-light,.btn-ghost.btn-white{--tblr-btn-color: var(--tblr-light);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-light-fg);--tblr-btn-hover-bg: var(--tblr-light);--tblr-btn-hover-border-color: var(--tblr-light);--tblr-btn-active-color: var(--tblr-light-fg);--tblr-btn-active-bg: var(--tblr-light);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-light);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-dark,.btn-black{--tblr-btn-border-color: var(--tblr-dark-mode-border-color);--tblr-btn-hover-border-color: var(--tblr-dark-mode-border-active-color);--tblr-btn-active-border-color: var(--tblr-dark-mode-border-active-color);--tblr-btn-color: var(--tblr-dark-fg, #ffffff);--tblr-btn-bg: var(--tblr-dark);--tblr-btn-hover-color: var(--tblr-dark-fg);--tblr-btn-hover-bg: var(--tblr-dark-darken);--tblr-btn-active-color: var(--tblr-dark-fg);--tblr-btn-active-bg: var(--tblr-dark-darken);--tblr-btn-disabled-bg: var(--tblr-dark);--tblr-btn-disabled-color: var(--tblr-dark-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-dark,.btn-outline.btn-dark,.btn-outline.btn-black{--tblr-btn-color: var(--tblr-dark);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-dark);--tblr-btn-hover-color: var(--tblr-dark-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-dark);--tblr-btn-active-color: var(--tblr-dark-fg);--tblr-btn-active-bg: var(--tblr-dark);--tblr-btn-active-border-color: var(--tblr-dark);--tblr-btn-disabled-color: var(--tblr-dark);--tblr-btn-disabled-border-color: var(--tblr-dark)}.btn-ghost-dark,.btn-ghost.btn-dark,.btn-ghost.btn-black{--tblr-btn-color: var(--tblr-dark);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-dark-fg);--tblr-btn-hover-bg: var(--tblr-dark);--tblr-btn-hover-border-color: var(--tblr-dark);--tblr-btn-active-color: var(--tblr-dark-fg);--tblr-btn-active-bg: var(--tblr-dark);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-dark);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-muted{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-muted-fg, #ffffff);--tblr-btn-bg: var(--tblr-muted);--tblr-btn-hover-color: var(--tblr-muted-fg);--tblr-btn-hover-bg: var(--tblr-muted-darken);--tblr-btn-active-color: var(--tblr-muted-fg);--tblr-btn-active-bg: var(--tblr-muted-darken);--tblr-btn-disabled-bg: var(--tblr-muted);--tblr-btn-disabled-color: var(--tblr-muted-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-muted,.btn-outline.btn-muted{--tblr-btn-color: var(--tblr-muted);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-muted);--tblr-btn-hover-color: var(--tblr-muted-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-muted);--tblr-btn-active-color: var(--tblr-muted-fg);--tblr-btn-active-bg: var(--tblr-muted);--tblr-btn-active-border-color: var(--tblr-muted);--tblr-btn-disabled-color: var(--tblr-muted);--tblr-btn-disabled-border-color: var(--tblr-muted)}.btn-ghost-muted,.btn-ghost.btn-muted{--tblr-btn-color: var(--tblr-muted);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-muted-fg);--tblr-btn-hover-bg: var(--tblr-muted);--tblr-btn-hover-border-color: var(--tblr-muted);--tblr-btn-active-color: var(--tblr-muted-fg);--tblr-btn-active-bg: var(--tblr-muted);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-muted);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-blue{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-blue-fg, #ffffff);--tblr-btn-bg: var(--tblr-blue);--tblr-btn-hover-color: var(--tblr-blue-fg);--tblr-btn-hover-bg: var(--tblr-blue-darken);--tblr-btn-active-color: var(--tblr-blue-fg);--tblr-btn-active-bg: var(--tblr-blue-darken);--tblr-btn-disabled-bg: var(--tblr-blue);--tblr-btn-disabled-color: var(--tblr-blue-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-blue,.btn-outline.btn-blue{--tblr-btn-color: var(--tblr-blue);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-blue);--tblr-btn-hover-color: var(--tblr-blue-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-blue);--tblr-btn-active-color: var(--tblr-blue-fg);--tblr-btn-active-bg: var(--tblr-blue);--tblr-btn-active-border-color: var(--tblr-blue);--tblr-btn-disabled-color: var(--tblr-blue);--tblr-btn-disabled-border-color: var(--tblr-blue)}.btn-ghost-blue,.btn-ghost.btn-blue{--tblr-btn-color: var(--tblr-blue);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-blue-fg);--tblr-btn-hover-bg: var(--tblr-blue);--tblr-btn-hover-border-color: var(--tblr-blue);--tblr-btn-active-color: var(--tblr-blue-fg);--tblr-btn-active-bg: var(--tblr-blue);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-blue);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-azure{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-azure-fg, #ffffff);--tblr-btn-bg: var(--tblr-azure);--tblr-btn-hover-color: var(--tblr-azure-fg);--tblr-btn-hover-bg: var(--tblr-azure-darken);--tblr-btn-active-color: var(--tblr-azure-fg);--tblr-btn-active-bg: var(--tblr-azure-darken);--tblr-btn-disabled-bg: var(--tblr-azure);--tblr-btn-disabled-color: var(--tblr-azure-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-azure,.btn-outline.btn-azure{--tblr-btn-color: var(--tblr-azure);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-azure);--tblr-btn-hover-color: var(--tblr-azure-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-azure);--tblr-btn-active-color: var(--tblr-azure-fg);--tblr-btn-active-bg: var(--tblr-azure);--tblr-btn-active-border-color: var(--tblr-azure);--tblr-btn-disabled-color: var(--tblr-azure);--tblr-btn-disabled-border-color: var(--tblr-azure)}.btn-ghost-azure,.btn-ghost.btn-azure{--tblr-btn-color: var(--tblr-azure);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-azure-fg);--tblr-btn-hover-bg: var(--tblr-azure);--tblr-btn-hover-border-color: var(--tblr-azure);--tblr-btn-active-color: var(--tblr-azure-fg);--tblr-btn-active-bg: var(--tblr-azure);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-azure);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-indigo{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-indigo-fg, #ffffff);--tblr-btn-bg: var(--tblr-indigo);--tblr-btn-hover-color: var(--tblr-indigo-fg);--tblr-btn-hover-bg: var(--tblr-indigo-darken);--tblr-btn-active-color: var(--tblr-indigo-fg);--tblr-btn-active-bg: var(--tblr-indigo-darken);--tblr-btn-disabled-bg: var(--tblr-indigo);--tblr-btn-disabled-color: var(--tblr-indigo-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-indigo,.btn-outline.btn-indigo{--tblr-btn-color: var(--tblr-indigo);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-indigo);--tblr-btn-hover-color: var(--tblr-indigo-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-indigo);--tblr-btn-active-color: var(--tblr-indigo-fg);--tblr-btn-active-bg: var(--tblr-indigo);--tblr-btn-active-border-color: var(--tblr-indigo);--tblr-btn-disabled-color: var(--tblr-indigo);--tblr-btn-disabled-border-color: var(--tblr-indigo)}.btn-ghost-indigo,.btn-ghost.btn-indigo{--tblr-btn-color: var(--tblr-indigo);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-indigo-fg);--tblr-btn-hover-bg: var(--tblr-indigo);--tblr-btn-hover-border-color: var(--tblr-indigo);--tblr-btn-active-color: var(--tblr-indigo-fg);--tblr-btn-active-bg: var(--tblr-indigo);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-indigo);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-purple{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-purple-fg, #ffffff);--tblr-btn-bg: var(--tblr-purple);--tblr-btn-hover-color: var(--tblr-purple-fg);--tblr-btn-hover-bg: var(--tblr-purple-darken);--tblr-btn-active-color: var(--tblr-purple-fg);--tblr-btn-active-bg: var(--tblr-purple-darken);--tblr-btn-disabled-bg: var(--tblr-purple);--tblr-btn-disabled-color: var(--tblr-purple-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-purple,.btn-outline.btn-purple{--tblr-btn-color: var(--tblr-purple);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-purple);--tblr-btn-hover-color: var(--tblr-purple-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-purple);--tblr-btn-active-color: var(--tblr-purple-fg);--tblr-btn-active-bg: var(--tblr-purple);--tblr-btn-active-border-color: var(--tblr-purple);--tblr-btn-disabled-color: var(--tblr-purple);--tblr-btn-disabled-border-color: var(--tblr-purple)}.btn-ghost-purple,.btn-ghost.btn-purple{--tblr-btn-color: var(--tblr-purple);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-purple-fg);--tblr-btn-hover-bg: var(--tblr-purple);--tblr-btn-hover-border-color: var(--tblr-purple);--tblr-btn-active-color: var(--tblr-purple-fg);--tblr-btn-active-bg: var(--tblr-purple);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-purple);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-pink{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-pink-fg, #ffffff);--tblr-btn-bg: var(--tblr-pink);--tblr-btn-hover-color: var(--tblr-pink-fg);--tblr-btn-hover-bg: var(--tblr-pink-darken);--tblr-btn-active-color: var(--tblr-pink-fg);--tblr-btn-active-bg: var(--tblr-pink-darken);--tblr-btn-disabled-bg: var(--tblr-pink);--tblr-btn-disabled-color: var(--tblr-pink-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-pink,.btn-outline.btn-pink{--tblr-btn-color: var(--tblr-pink);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-pink);--tblr-btn-hover-color: var(--tblr-pink-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-pink);--tblr-btn-active-color: var(--tblr-pink-fg);--tblr-btn-active-bg: var(--tblr-pink);--tblr-btn-active-border-color: var(--tblr-pink);--tblr-btn-disabled-color: var(--tblr-pink);--tblr-btn-disabled-border-color: var(--tblr-pink)}.btn-ghost-pink,.btn-ghost.btn-pink{--tblr-btn-color: var(--tblr-pink);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-pink-fg);--tblr-btn-hover-bg: var(--tblr-pink);--tblr-btn-hover-border-color: var(--tblr-pink);--tblr-btn-active-color: var(--tblr-pink-fg);--tblr-btn-active-bg: var(--tblr-pink);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-pink);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-red{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-red-fg, #ffffff);--tblr-btn-bg: var(--tblr-red);--tblr-btn-hover-color: var(--tblr-red-fg);--tblr-btn-hover-bg: var(--tblr-red-darken);--tblr-btn-active-color: var(--tblr-red-fg);--tblr-btn-active-bg: var(--tblr-red-darken);--tblr-btn-disabled-bg: var(--tblr-red);--tblr-btn-disabled-color: var(--tblr-red-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-red,.btn-outline.btn-red{--tblr-btn-color: var(--tblr-red);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-red);--tblr-btn-hover-color: var(--tblr-red-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-red);--tblr-btn-active-color: var(--tblr-red-fg);--tblr-btn-active-bg: var(--tblr-red);--tblr-btn-active-border-color: var(--tblr-red);--tblr-btn-disabled-color: var(--tblr-red);--tblr-btn-disabled-border-color: var(--tblr-red)}.btn-ghost-red,.btn-ghost.btn-red{--tblr-btn-color: var(--tblr-red);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-red-fg);--tblr-btn-hover-bg: var(--tblr-red);--tblr-btn-hover-border-color: var(--tblr-red);--tblr-btn-active-color: var(--tblr-red-fg);--tblr-btn-active-bg: var(--tblr-red);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-red);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-orange{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-orange-fg, #ffffff);--tblr-btn-bg: var(--tblr-orange);--tblr-btn-hover-color: var(--tblr-orange-fg);--tblr-btn-hover-bg: var(--tblr-orange-darken);--tblr-btn-active-color: var(--tblr-orange-fg);--tblr-btn-active-bg: var(--tblr-orange-darken);--tblr-btn-disabled-bg: var(--tblr-orange);--tblr-btn-disabled-color: var(--tblr-orange-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-orange,.btn-outline.btn-orange{--tblr-btn-color: var(--tblr-orange);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-orange);--tblr-btn-hover-color: var(--tblr-orange-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-orange);--tblr-btn-active-color: var(--tblr-orange-fg);--tblr-btn-active-bg: var(--tblr-orange);--tblr-btn-active-border-color: var(--tblr-orange);--tblr-btn-disabled-color: var(--tblr-orange);--tblr-btn-disabled-border-color: var(--tblr-orange)}.btn-ghost-orange,.btn-ghost.btn-orange{--tblr-btn-color: var(--tblr-orange);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-orange-fg);--tblr-btn-hover-bg: var(--tblr-orange);--tblr-btn-hover-border-color: var(--tblr-orange);--tblr-btn-active-color: var(--tblr-orange-fg);--tblr-btn-active-bg: var(--tblr-orange);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-orange);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-yellow{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-yellow-fg, #ffffff);--tblr-btn-bg: var(--tblr-yellow);--tblr-btn-hover-color: var(--tblr-yellow-fg);--tblr-btn-hover-bg: var(--tblr-yellow-darken);--tblr-btn-active-color: var(--tblr-yellow-fg);--tblr-btn-active-bg: var(--tblr-yellow-darken);--tblr-btn-disabled-bg: var(--tblr-yellow);--tblr-btn-disabled-color: var(--tblr-yellow-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-yellow,.btn-outline.btn-yellow{--tblr-btn-color: var(--tblr-yellow);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-yellow);--tblr-btn-hover-color: var(--tblr-yellow-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-yellow);--tblr-btn-active-color: var(--tblr-yellow-fg);--tblr-btn-active-bg: var(--tblr-yellow);--tblr-btn-active-border-color: var(--tblr-yellow);--tblr-btn-disabled-color: var(--tblr-yellow);--tblr-btn-disabled-border-color: var(--tblr-yellow)}.btn-ghost-yellow,.btn-ghost.btn-yellow{--tblr-btn-color: var(--tblr-yellow);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-yellow-fg);--tblr-btn-hover-bg: var(--tblr-yellow);--tblr-btn-hover-border-color: var(--tblr-yellow);--tblr-btn-active-color: var(--tblr-yellow-fg);--tblr-btn-active-bg: var(--tblr-yellow);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-yellow);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-lime{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-lime-fg, #ffffff);--tblr-btn-bg: var(--tblr-lime);--tblr-btn-hover-color: var(--tblr-lime-fg);--tblr-btn-hover-bg: var(--tblr-lime-darken);--tblr-btn-active-color: var(--tblr-lime-fg);--tblr-btn-active-bg: var(--tblr-lime-darken);--tblr-btn-disabled-bg: var(--tblr-lime);--tblr-btn-disabled-color: var(--tblr-lime-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-lime,.btn-outline.btn-lime{--tblr-btn-color: var(--tblr-lime);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-lime);--tblr-btn-hover-color: var(--tblr-lime-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-lime);--tblr-btn-active-color: var(--tblr-lime-fg);--tblr-btn-active-bg: var(--tblr-lime);--tblr-btn-active-border-color: var(--tblr-lime);--tblr-btn-disabled-color: var(--tblr-lime);--tblr-btn-disabled-border-color: var(--tblr-lime)}.btn-ghost-lime,.btn-ghost.btn-lime{--tblr-btn-color: var(--tblr-lime);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-lime-fg);--tblr-btn-hover-bg: var(--tblr-lime);--tblr-btn-hover-border-color: var(--tblr-lime);--tblr-btn-active-color: var(--tblr-lime-fg);--tblr-btn-active-bg: var(--tblr-lime);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-lime);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-green{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-green-fg, #ffffff);--tblr-btn-bg: var(--tblr-green);--tblr-btn-hover-color: var(--tblr-green-fg);--tblr-btn-hover-bg: var(--tblr-green-darken);--tblr-btn-active-color: var(--tblr-green-fg);--tblr-btn-active-bg: var(--tblr-green-darken);--tblr-btn-disabled-bg: var(--tblr-green);--tblr-btn-disabled-color: var(--tblr-green-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-green,.btn-outline.btn-green{--tblr-btn-color: var(--tblr-green);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-green);--tblr-btn-hover-color: var(--tblr-green-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-green);--tblr-btn-active-color: var(--tblr-green-fg);--tblr-btn-active-bg: var(--tblr-green);--tblr-btn-active-border-color: var(--tblr-green);--tblr-btn-disabled-color: var(--tblr-green);--tblr-btn-disabled-border-color: var(--tblr-green)}.btn-ghost-green,.btn-ghost.btn-green{--tblr-btn-color: var(--tblr-green);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-green-fg);--tblr-btn-hover-bg: var(--tblr-green);--tblr-btn-hover-border-color: var(--tblr-green);--tblr-btn-active-color: var(--tblr-green-fg);--tblr-btn-active-bg: var(--tblr-green);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-green);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-teal{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-teal-fg, #ffffff);--tblr-btn-bg: var(--tblr-teal);--tblr-btn-hover-color: var(--tblr-teal-fg);--tblr-btn-hover-bg: var(--tblr-teal-darken);--tblr-btn-active-color: var(--tblr-teal-fg);--tblr-btn-active-bg: var(--tblr-teal-darken);--tblr-btn-disabled-bg: var(--tblr-teal);--tblr-btn-disabled-color: var(--tblr-teal-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-teal,.btn-outline.btn-teal{--tblr-btn-color: var(--tblr-teal);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-teal);--tblr-btn-hover-color: var(--tblr-teal-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-teal);--tblr-btn-active-color: var(--tblr-teal-fg);--tblr-btn-active-bg: var(--tblr-teal);--tblr-btn-active-border-color: var(--tblr-teal);--tblr-btn-disabled-color: var(--tblr-teal);--tblr-btn-disabled-border-color: var(--tblr-teal)}.btn-ghost-teal,.btn-ghost.btn-teal{--tblr-btn-color: var(--tblr-teal);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-teal-fg);--tblr-btn-hover-bg: var(--tblr-teal);--tblr-btn-hover-border-color: var(--tblr-teal);--tblr-btn-active-color: var(--tblr-teal-fg);--tblr-btn-active-bg: var(--tblr-teal);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-teal);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-cyan{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-cyan-fg, #ffffff);--tblr-btn-bg: var(--tblr-cyan);--tblr-btn-hover-color: var(--tblr-cyan-fg);--tblr-btn-hover-bg: var(--tblr-cyan-darken);--tblr-btn-active-color: var(--tblr-cyan-fg);--tblr-btn-active-bg: var(--tblr-cyan-darken);--tblr-btn-disabled-bg: var(--tblr-cyan);--tblr-btn-disabled-color: var(--tblr-cyan-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-cyan,.btn-outline.btn-cyan{--tblr-btn-color: var(--tblr-cyan);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-cyan);--tblr-btn-hover-color: var(--tblr-cyan-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-cyan);--tblr-btn-active-color: var(--tblr-cyan-fg);--tblr-btn-active-bg: var(--tblr-cyan);--tblr-btn-active-border-color: var(--tblr-cyan);--tblr-btn-disabled-color: var(--tblr-cyan);--tblr-btn-disabled-border-color: var(--tblr-cyan)}.btn-ghost-cyan,.btn-ghost.btn-cyan{--tblr-btn-color: var(--tblr-cyan);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-cyan-fg);--tblr-btn-hover-bg: var(--tblr-cyan);--tblr-btn-hover-border-color: var(--tblr-cyan);--tblr-btn-active-color: var(--tblr-cyan-fg);--tblr-btn-active-bg: var(--tblr-cyan);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-cyan);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-x{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-x-fg, #ffffff);--tblr-btn-bg: var(--tblr-x);--tblr-btn-hover-color: var(--tblr-x-fg);--tblr-btn-hover-bg: var(--tblr-x-darken);--tblr-btn-active-color: var(--tblr-x-fg);--tblr-btn-active-bg: var(--tblr-x-darken);--tblr-btn-disabled-bg: var(--tblr-x);--tblr-btn-disabled-color: var(--tblr-x-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-x,.btn-outline.btn-x{--tblr-btn-color: var(--tblr-x);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-x);--tblr-btn-hover-color: var(--tblr-x-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-x);--tblr-btn-active-color: var(--tblr-x-fg);--tblr-btn-active-bg: var(--tblr-x);--tblr-btn-active-border-color: var(--tblr-x);--tblr-btn-disabled-color: var(--tblr-x);--tblr-btn-disabled-border-color: var(--tblr-x)}.btn-ghost-x,.btn-ghost.btn-x{--tblr-btn-color: var(--tblr-x);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-x-fg);--tblr-btn-hover-bg: var(--tblr-x);--tblr-btn-hover-border-color: var(--tblr-x);--tblr-btn-active-color: var(--tblr-x-fg);--tblr-btn-active-bg: var(--tblr-x);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-x);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-facebook{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-facebook-fg, #ffffff);--tblr-btn-bg: var(--tblr-facebook);--tblr-btn-hover-color: var(--tblr-facebook-fg);--tblr-btn-hover-bg: var(--tblr-facebook-darken);--tblr-btn-active-color: var(--tblr-facebook-fg);--tblr-btn-active-bg: var(--tblr-facebook-darken);--tblr-btn-disabled-bg: var(--tblr-facebook);--tblr-btn-disabled-color: var(--tblr-facebook-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-facebook,.btn-outline.btn-facebook{--tblr-btn-color: var(--tblr-facebook);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-facebook);--tblr-btn-hover-color: var(--tblr-facebook-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-facebook);--tblr-btn-active-color: var(--tblr-facebook-fg);--tblr-btn-active-bg: var(--tblr-facebook);--tblr-btn-active-border-color: var(--tblr-facebook);--tblr-btn-disabled-color: var(--tblr-facebook);--tblr-btn-disabled-border-color: var(--tblr-facebook)}.btn-ghost-facebook,.btn-ghost.btn-facebook{--tblr-btn-color: var(--tblr-facebook);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-facebook-fg);--tblr-btn-hover-bg: var(--tblr-facebook);--tblr-btn-hover-border-color: var(--tblr-facebook);--tblr-btn-active-color: var(--tblr-facebook-fg);--tblr-btn-active-bg: var(--tblr-facebook);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-facebook);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-twitter{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-twitter-fg, #ffffff);--tblr-btn-bg: var(--tblr-twitter);--tblr-btn-hover-color: var(--tblr-twitter-fg);--tblr-btn-hover-bg: var(--tblr-twitter-darken);--tblr-btn-active-color: var(--tblr-twitter-fg);--tblr-btn-active-bg: var(--tblr-twitter-darken);--tblr-btn-disabled-bg: var(--tblr-twitter);--tblr-btn-disabled-color: var(--tblr-twitter-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-twitter,.btn-outline.btn-twitter{--tblr-btn-color: var(--tblr-twitter);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-twitter);--tblr-btn-hover-color: var(--tblr-twitter-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-twitter);--tblr-btn-active-color: var(--tblr-twitter-fg);--tblr-btn-active-bg: var(--tblr-twitter);--tblr-btn-active-border-color: var(--tblr-twitter);--tblr-btn-disabled-color: var(--tblr-twitter);--tblr-btn-disabled-border-color: var(--tblr-twitter)}.btn-ghost-twitter,.btn-ghost.btn-twitter{--tblr-btn-color: var(--tblr-twitter);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-twitter-fg);--tblr-btn-hover-bg: var(--tblr-twitter);--tblr-btn-hover-border-color: var(--tblr-twitter);--tblr-btn-active-color: var(--tblr-twitter-fg);--tblr-btn-active-bg: var(--tblr-twitter);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-twitter);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-linkedin{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-linkedin-fg, #ffffff);--tblr-btn-bg: var(--tblr-linkedin);--tblr-btn-hover-color: var(--tblr-linkedin-fg);--tblr-btn-hover-bg: var(--tblr-linkedin-darken);--tblr-btn-active-color: var(--tblr-linkedin-fg);--tblr-btn-active-bg: var(--tblr-linkedin-darken);--tblr-btn-disabled-bg: var(--tblr-linkedin);--tblr-btn-disabled-color: var(--tblr-linkedin-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-linkedin,.btn-outline.btn-linkedin{--tblr-btn-color: var(--tblr-linkedin);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-linkedin);--tblr-btn-hover-color: var(--tblr-linkedin-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-linkedin);--tblr-btn-active-color: var(--tblr-linkedin-fg);--tblr-btn-active-bg: var(--tblr-linkedin);--tblr-btn-active-border-color: var(--tblr-linkedin);--tblr-btn-disabled-color: var(--tblr-linkedin);--tblr-btn-disabled-border-color: var(--tblr-linkedin)}.btn-ghost-linkedin,.btn-ghost.btn-linkedin{--tblr-btn-color: var(--tblr-linkedin);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-linkedin-fg);--tblr-btn-hover-bg: var(--tblr-linkedin);--tblr-btn-hover-border-color: var(--tblr-linkedin);--tblr-btn-active-color: var(--tblr-linkedin-fg);--tblr-btn-active-bg: var(--tblr-linkedin);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-linkedin);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-google{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-google-fg, #ffffff);--tblr-btn-bg: var(--tblr-google);--tblr-btn-hover-color: var(--tblr-google-fg);--tblr-btn-hover-bg: var(--tblr-google-darken);--tblr-btn-active-color: var(--tblr-google-fg);--tblr-btn-active-bg: var(--tblr-google-darken);--tblr-btn-disabled-bg: var(--tblr-google);--tblr-btn-disabled-color: var(--tblr-google-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-google,.btn-outline.btn-google{--tblr-btn-color: var(--tblr-google);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-google);--tblr-btn-hover-color: var(--tblr-google-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-google);--tblr-btn-active-color: var(--tblr-google-fg);--tblr-btn-active-bg: var(--tblr-google);--tblr-btn-active-border-color: var(--tblr-google);--tblr-btn-disabled-color: var(--tblr-google);--tblr-btn-disabled-border-color: var(--tblr-google)}.btn-ghost-google,.btn-ghost.btn-google{--tblr-btn-color: var(--tblr-google);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-google-fg);--tblr-btn-hover-bg: var(--tblr-google);--tblr-btn-hover-border-color: var(--tblr-google);--tblr-btn-active-color: var(--tblr-google-fg);--tblr-btn-active-bg: var(--tblr-google);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-google);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-youtube{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-youtube-fg, #ffffff);--tblr-btn-bg: var(--tblr-youtube);--tblr-btn-hover-color: var(--tblr-youtube-fg);--tblr-btn-hover-bg: var(--tblr-youtube-darken);--tblr-btn-active-color: var(--tblr-youtube-fg);--tblr-btn-active-bg: var(--tblr-youtube-darken);--tblr-btn-disabled-bg: var(--tblr-youtube);--tblr-btn-disabled-color: var(--tblr-youtube-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-youtube,.btn-outline.btn-youtube{--tblr-btn-color: var(--tblr-youtube);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-youtube);--tblr-btn-hover-color: var(--tblr-youtube-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-youtube);--tblr-btn-active-color: var(--tblr-youtube-fg);--tblr-btn-active-bg: var(--tblr-youtube);--tblr-btn-active-border-color: var(--tblr-youtube);--tblr-btn-disabled-color: var(--tblr-youtube);--tblr-btn-disabled-border-color: var(--tblr-youtube)}.btn-ghost-youtube,.btn-ghost.btn-youtube{--tblr-btn-color: var(--tblr-youtube);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-youtube-fg);--tblr-btn-hover-bg: var(--tblr-youtube);--tblr-btn-hover-border-color: var(--tblr-youtube);--tblr-btn-active-color: var(--tblr-youtube-fg);--tblr-btn-active-bg: var(--tblr-youtube);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-youtube);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-vimeo{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-vimeo-fg, #ffffff);--tblr-btn-bg: var(--tblr-vimeo);--tblr-btn-hover-color: var(--tblr-vimeo-fg);--tblr-btn-hover-bg: var(--tblr-vimeo-darken);--tblr-btn-active-color: var(--tblr-vimeo-fg);--tblr-btn-active-bg: var(--tblr-vimeo-darken);--tblr-btn-disabled-bg: var(--tblr-vimeo);--tblr-btn-disabled-color: var(--tblr-vimeo-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-vimeo,.btn-outline.btn-vimeo{--tblr-btn-color: var(--tblr-vimeo);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-vimeo);--tblr-btn-hover-color: var(--tblr-vimeo-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-vimeo);--tblr-btn-active-color: var(--tblr-vimeo-fg);--tblr-btn-active-bg: var(--tblr-vimeo);--tblr-btn-active-border-color: var(--tblr-vimeo);--tblr-btn-disabled-color: var(--tblr-vimeo);--tblr-btn-disabled-border-color: var(--tblr-vimeo)}.btn-ghost-vimeo,.btn-ghost.btn-vimeo{--tblr-btn-color: var(--tblr-vimeo);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-vimeo-fg);--tblr-btn-hover-bg: var(--tblr-vimeo);--tblr-btn-hover-border-color: var(--tblr-vimeo);--tblr-btn-active-color: var(--tblr-vimeo-fg);--tblr-btn-active-bg: var(--tblr-vimeo);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-vimeo);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-dribbble{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-dribbble-fg, #ffffff);--tblr-btn-bg: var(--tblr-dribbble);--tblr-btn-hover-color: var(--tblr-dribbble-fg);--tblr-btn-hover-bg: var(--tblr-dribbble-darken);--tblr-btn-active-color: var(--tblr-dribbble-fg);--tblr-btn-active-bg: var(--tblr-dribbble-darken);--tblr-btn-disabled-bg: var(--tblr-dribbble);--tblr-btn-disabled-color: var(--tblr-dribbble-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-dribbble,.btn-outline.btn-dribbble{--tblr-btn-color: var(--tblr-dribbble);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-dribbble);--tblr-btn-hover-color: var(--tblr-dribbble-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-dribbble);--tblr-btn-active-color: var(--tblr-dribbble-fg);--tblr-btn-active-bg: var(--tblr-dribbble);--tblr-btn-active-border-color: var(--tblr-dribbble);--tblr-btn-disabled-color: var(--tblr-dribbble);--tblr-btn-disabled-border-color: var(--tblr-dribbble)}.btn-ghost-dribbble,.btn-ghost.btn-dribbble{--tblr-btn-color: var(--tblr-dribbble);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-dribbble-fg);--tblr-btn-hover-bg: var(--tblr-dribbble);--tblr-btn-hover-border-color: var(--tblr-dribbble);--tblr-btn-active-color: var(--tblr-dribbble-fg);--tblr-btn-active-bg: var(--tblr-dribbble);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-dribbble);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-github{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-github-fg, #ffffff);--tblr-btn-bg: var(--tblr-github);--tblr-btn-hover-color: var(--tblr-github-fg);--tblr-btn-hover-bg: var(--tblr-github-darken);--tblr-btn-active-color: var(--tblr-github-fg);--tblr-btn-active-bg: var(--tblr-github-darken);--tblr-btn-disabled-bg: var(--tblr-github);--tblr-btn-disabled-color: var(--tblr-github-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-github,.btn-outline.btn-github{--tblr-btn-color: var(--tblr-github);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-github);--tblr-btn-hover-color: var(--tblr-github-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-github);--tblr-btn-active-color: var(--tblr-github-fg);--tblr-btn-active-bg: var(--tblr-github);--tblr-btn-active-border-color: var(--tblr-github);--tblr-btn-disabled-color: var(--tblr-github);--tblr-btn-disabled-border-color: var(--tblr-github)}.btn-ghost-github,.btn-ghost.btn-github{--tblr-btn-color: var(--tblr-github);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-github-fg);--tblr-btn-hover-bg: var(--tblr-github);--tblr-btn-hover-border-color: var(--tblr-github);--tblr-btn-active-color: var(--tblr-github-fg);--tblr-btn-active-bg: var(--tblr-github);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-github);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-instagram{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-instagram-fg, #ffffff);--tblr-btn-bg: var(--tblr-instagram);--tblr-btn-hover-color: var(--tblr-instagram-fg);--tblr-btn-hover-bg: var(--tblr-instagram-darken);--tblr-btn-active-color: var(--tblr-instagram-fg);--tblr-btn-active-bg: var(--tblr-instagram-darken);--tblr-btn-disabled-bg: var(--tblr-instagram);--tblr-btn-disabled-color: var(--tblr-instagram-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-instagram,.btn-outline.btn-instagram{--tblr-btn-color: var(--tblr-instagram);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-instagram);--tblr-btn-hover-color: var(--tblr-instagram-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-instagram);--tblr-btn-active-color: var(--tblr-instagram-fg);--tblr-btn-active-bg: var(--tblr-instagram);--tblr-btn-active-border-color: var(--tblr-instagram);--tblr-btn-disabled-color: var(--tblr-instagram);--tblr-btn-disabled-border-color: var(--tblr-instagram)}.btn-ghost-instagram,.btn-ghost.btn-instagram{--tblr-btn-color: var(--tblr-instagram);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-instagram-fg);--tblr-btn-hover-bg: var(--tblr-instagram);--tblr-btn-hover-border-color: var(--tblr-instagram);--tblr-btn-active-color: var(--tblr-instagram-fg);--tblr-btn-active-bg: var(--tblr-instagram);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-instagram);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-pinterest{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-pinterest-fg, #ffffff);--tblr-btn-bg: var(--tblr-pinterest);--tblr-btn-hover-color: var(--tblr-pinterest-fg);--tblr-btn-hover-bg: var(--tblr-pinterest-darken);--tblr-btn-active-color: var(--tblr-pinterest-fg);--tblr-btn-active-bg: var(--tblr-pinterest-darken);--tblr-btn-disabled-bg: var(--tblr-pinterest);--tblr-btn-disabled-color: var(--tblr-pinterest-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-pinterest,.btn-outline.btn-pinterest{--tblr-btn-color: var(--tblr-pinterest);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-pinterest);--tblr-btn-hover-color: var(--tblr-pinterest-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-pinterest);--tblr-btn-active-color: var(--tblr-pinterest-fg);--tblr-btn-active-bg: var(--tblr-pinterest);--tblr-btn-active-border-color: var(--tblr-pinterest);--tblr-btn-disabled-color: var(--tblr-pinterest);--tblr-btn-disabled-border-color: var(--tblr-pinterest)}.btn-ghost-pinterest,.btn-ghost.btn-pinterest{--tblr-btn-color: var(--tblr-pinterest);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-pinterest-fg);--tblr-btn-hover-bg: var(--tblr-pinterest);--tblr-btn-hover-border-color: var(--tblr-pinterest);--tblr-btn-active-color: var(--tblr-pinterest-fg);--tblr-btn-active-bg: var(--tblr-pinterest);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-pinterest);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-vk{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-vk-fg, #ffffff);--tblr-btn-bg: var(--tblr-vk);--tblr-btn-hover-color: var(--tblr-vk-fg);--tblr-btn-hover-bg: var(--tblr-vk-darken);--tblr-btn-active-color: var(--tblr-vk-fg);--tblr-btn-active-bg: var(--tblr-vk-darken);--tblr-btn-disabled-bg: var(--tblr-vk);--tblr-btn-disabled-color: var(--tblr-vk-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-vk,.btn-outline.btn-vk{--tblr-btn-color: var(--tblr-vk);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-vk);--tblr-btn-hover-color: var(--tblr-vk-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-vk);--tblr-btn-active-color: var(--tblr-vk-fg);--tblr-btn-active-bg: var(--tblr-vk);--tblr-btn-active-border-color: var(--tblr-vk);--tblr-btn-disabled-color: var(--tblr-vk);--tblr-btn-disabled-border-color: var(--tblr-vk)}.btn-ghost-vk,.btn-ghost.btn-vk{--tblr-btn-color: var(--tblr-vk);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-vk-fg);--tblr-btn-hover-bg: var(--tblr-vk);--tblr-btn-hover-border-color: var(--tblr-vk);--tblr-btn-active-color: var(--tblr-vk-fg);--tblr-btn-active-bg: var(--tblr-vk);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-vk);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-rss{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-rss-fg, #ffffff);--tblr-btn-bg: var(--tblr-rss);--tblr-btn-hover-color: var(--tblr-rss-fg);--tblr-btn-hover-bg: var(--tblr-rss-darken);--tblr-btn-active-color: var(--tblr-rss-fg);--tblr-btn-active-bg: var(--tblr-rss-darken);--tblr-btn-disabled-bg: var(--tblr-rss);--tblr-btn-disabled-color: var(--tblr-rss-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-rss,.btn-outline.btn-rss{--tblr-btn-color: var(--tblr-rss);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-rss);--tblr-btn-hover-color: var(--tblr-rss-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-rss);--tblr-btn-active-color: var(--tblr-rss-fg);--tblr-btn-active-bg: var(--tblr-rss);--tblr-btn-active-border-color: var(--tblr-rss);--tblr-btn-disabled-color: var(--tblr-rss);--tblr-btn-disabled-border-color: var(--tblr-rss)}.btn-ghost-rss,.btn-ghost.btn-rss{--tblr-btn-color: var(--tblr-rss);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-rss-fg);--tblr-btn-hover-bg: var(--tblr-rss);--tblr-btn-hover-border-color: var(--tblr-rss);--tblr-btn-active-color: var(--tblr-rss-fg);--tblr-btn-active-bg: var(--tblr-rss);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-rss);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-flickr{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-flickr-fg, #ffffff);--tblr-btn-bg: var(--tblr-flickr);--tblr-btn-hover-color: var(--tblr-flickr-fg);--tblr-btn-hover-bg: var(--tblr-flickr-darken);--tblr-btn-active-color: var(--tblr-flickr-fg);--tblr-btn-active-bg: var(--tblr-flickr-darken);--tblr-btn-disabled-bg: var(--tblr-flickr);--tblr-btn-disabled-color: var(--tblr-flickr-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-flickr,.btn-outline.btn-flickr{--tblr-btn-color: var(--tblr-flickr);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-flickr);--tblr-btn-hover-color: var(--tblr-flickr-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-flickr);--tblr-btn-active-color: var(--tblr-flickr-fg);--tblr-btn-active-bg: var(--tblr-flickr);--tblr-btn-active-border-color: var(--tblr-flickr);--tblr-btn-disabled-color: var(--tblr-flickr);--tblr-btn-disabled-border-color: var(--tblr-flickr)}.btn-ghost-flickr,.btn-ghost.btn-flickr{--tblr-btn-color: var(--tblr-flickr);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-flickr-fg);--tblr-btn-hover-bg: var(--tblr-flickr);--tblr-btn-hover-border-color: var(--tblr-flickr);--tblr-btn-active-color: var(--tblr-flickr-fg);--tblr-btn-active-bg: var(--tblr-flickr);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-flickr);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-bitbucket{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-bitbucket-fg, #ffffff);--tblr-btn-bg: var(--tblr-bitbucket);--tblr-btn-hover-color: var(--tblr-bitbucket-fg);--tblr-btn-hover-bg: var(--tblr-bitbucket-darken);--tblr-btn-active-color: var(--tblr-bitbucket-fg);--tblr-btn-active-bg: var(--tblr-bitbucket-darken);--tblr-btn-disabled-bg: var(--tblr-bitbucket);--tblr-btn-disabled-color: var(--tblr-bitbucket-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-bitbucket,.btn-outline.btn-bitbucket{--tblr-btn-color: var(--tblr-bitbucket);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-bitbucket);--tblr-btn-hover-color: var(--tblr-bitbucket-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-bitbucket);--tblr-btn-active-color: var(--tblr-bitbucket-fg);--tblr-btn-active-bg: var(--tblr-bitbucket);--tblr-btn-active-border-color: var(--tblr-bitbucket);--tblr-btn-disabled-color: var(--tblr-bitbucket);--tblr-btn-disabled-border-color: var(--tblr-bitbucket)}.btn-ghost-bitbucket,.btn-ghost.btn-bitbucket{--tblr-btn-color: var(--tblr-bitbucket);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-bitbucket-fg);--tblr-btn-hover-bg: var(--tblr-bitbucket);--tblr-btn-hover-border-color: var(--tblr-bitbucket);--tblr-btn-active-color: var(--tblr-bitbucket-fg);--tblr-btn-active-bg: var(--tblr-bitbucket);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-bitbucket);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-tabler{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-tabler-fg, #ffffff);--tblr-btn-bg: var(--tblr-tabler);--tblr-btn-hover-color: var(--tblr-tabler-fg);--tblr-btn-hover-bg: var(--tblr-tabler-darken);--tblr-btn-active-color: var(--tblr-tabler-fg);--tblr-btn-active-bg: var(--tblr-tabler-darken);--tblr-btn-disabled-bg: var(--tblr-tabler);--tblr-btn-disabled-color: var(--tblr-tabler-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-tabler,.btn-outline.btn-tabler{--tblr-btn-color: var(--tblr-tabler);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-tabler);--tblr-btn-hover-color: var(--tblr-tabler-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-tabler);--tblr-btn-active-color: var(--tblr-tabler-fg);--tblr-btn-active-bg: var(--tblr-tabler);--tblr-btn-active-border-color: var(--tblr-tabler);--tblr-btn-disabled-color: var(--tblr-tabler);--tblr-btn-disabled-border-color: var(--tblr-tabler)}.btn-ghost-tabler,.btn-ghost.btn-tabler{--tblr-btn-color: var(--tblr-tabler);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-tabler-fg);--tblr-btn-hover-bg: var(--tblr-tabler);--tblr-btn-hover-border-color: var(--tblr-tabler);--tblr-btn-active-color: var(--tblr-tabler-fg);--tblr-btn-active-bg: var(--tblr-tabler);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-tabler);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-sm,.btn-group-sm>.btn{--tblr-btn-line-height: 1.3333333333;--tblr-btn-icon-size: 1rem}.btn-lg,.btn-group-lg>.btn{--tblr-btn-line-height: 1.5rem;--tblr-btn-icon-size: 1.5rem}.btn-xl,.btn-group-xl>.btn{--tblr-btn-line-height: 2;--tblr-btn-icon-size: 2rem;--tblr-btn-padding-y: .6875rem;--tblr-btn-padding-x: 2rem;--tblr-btn-font-size: 1.5rem}.btn-pill{padding-right:1.5em;padding-left:1.5em;border-radius:10rem}.btn-pill[class*=btn-icon]{padding:.375rem 15px}.btn-square{border-radius:0}.btn-icon,.btn-action{padding-left:0;padding-right:0}.btn-icon .icon,.btn-action .icon{margin:calc(-1 * var(--tblr-btn-padding-x))}.btn-list{--tblr-list-gap: .5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.btn-floating{position:fixed;z-index:1030;bottom:1rem;left:1rem;box-shadow:var(--tblr-shadow-dropdown)}.btn-loading{position:relative;color:transparent!important;text-shadow:none!important;pointer-events:none}.btn-loading>*{opacity:0}.btn-loading:after{content:"";display:inline-block;vertical-align:text-bottom;border:2px var(--tblr-border-style) currentColor;border-right-color:transparent;border-radius:100rem;color:var(--tblr-btn-color);position:absolute;width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);left:calc(50% - var(--tblr-btn-icon-size) / 2);top:calc(50% - var(--tblr-btn-icon-size) / 2);animation:spinner-border .75s linear infinite}.btn-action{--tblr-border-color: transparent;color:var(--tblr-secondary);border-radius:var(--tblr-border-radius);background:transparent;box-shadow:none}.btn-action:after{content:none}.btn-action:focus{outline:none;box-shadow:none}.btn-action:hover,.btn-action.show{color:var(--tblr-body-color);background:var(--tblr-active-bg);border-color:transparent}.btn-action.show{color:var(--tblr-primary)}.btn-actions{display:flex}.btn-animate-icon .icon{transition:transform .3s ease}.btn-animate-icon:hover .icon,.btn-animate-icon:focus-visible .icon{transform:translate(4px)}.btn-animate-icon.btn-animate-icon-rotate:hover .icon,.btn-animate-icon.btn-animate-icon-rotate:focus-visible .icon{transform:rotate(90deg)}.btn-animate-icon.btn-animate-icon-move-start:hover .icon,.btn-animate-icon.btn-animate-icon-move-start:focus-visible .icon{transform:translate(-4px)}.btn-animate-icon.btn-animate-icon-pulse:hover .icon,.btn-animate-icon.btn-animate-icon-pulse:focus-visible .icon{transform:none;animation:pulse .9s}.btn-animate-icon.btn-animate-icon-shake:hover .icon,.btn-animate-icon.btn-animate-icon-shake:focus-visible .icon{transform:none;animation:shake .9s}.btn-animate-icon.btn-animate-icon-tada:hover .icon,.btn-animate-icon.btn-animate-icon-tada:focus-visible .icon{transform:none;animation:tada .9s}.btn-group,.btn-group-vertical{box-shadow:var(--tblr-shadow-input)}.btn-group>.btn-check:checked+.btn,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:5}.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus{z-index:1}.calendar{display:block;font-size:.765625rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.calendar-nav{display:flex;align-items:center}.calendar-title{flex:1;text-align:center}.calendar-body,.calendar-header{display:flex;flex-wrap:wrap;justify-content:flex-start;padding:.5rem 0}.calendar-header{color:var(--tblr-secondary)}.calendar-date{flex:0 0 14.2857142857%;max-width:14.2857142857%;padding:.2rem;text-align:center;border:0}.calendar-date.prev-month,.calendar-date.next-month{opacity:.25}.calendar-date .date-item{position:relative;display:inline-block;width:1.4rem;height:1.4rem;line-height:1.4rem;color:#66758c;text-align:center;text-decoration:none;white-space:nowrap;vertical-align:middle;cursor:pointer;background:0 0;border:var(--tblr-border-width) var(--tblr-border-style) transparent;border-radius:100rem;outline:0;transition:background .3s,border .3s,box-shadow .32s,color .3s}@media(prefers-reduced-motion:reduce){.calendar-date .date-item{transition:none}}.calendar-date .date-item:hover{color:var(--tblr-primary);text-decoration:none;background:#fefeff;border-color:var(--tblr-border-color)}.calendar-date .date-today{color:var(--tblr-primary);border-color:var(--tblr-border-color)}.calendar-range{position:relative}.calendar-range:before{position:absolute;top:50%;right:0;left:0;height:1.4rem;content:"";background:rgba(var(--tblr-primary-rgb),.1);transform:translateY(-50%)}.calendar-range.range-start .date-item,.calendar-range.range-end .date-item{color:#fff;background:var(--tblr-primary);border-color:var(--tblr-primary)}.calendar-range.range-start:before{left:50%}.calendar-range.range-end:before{right:50%}.carousel-indicators-vertical{left:auto;top:0;margin:0 1rem 0 0;flex-direction:column}.carousel-indicators-vertical [data-bs-target]{margin:3px 0;width:3px;height:30px;border:0;border-left:10px var(--tblr-border-style) transparent;border-right:10px var(--tblr-border-style) transparent}.carousel-indicators-dot [data-bs-target]{width:.5rem;height:.5rem;border-radius:100rem;border:10px var(--tblr-border-style) transparent;margin:0}.carousel-indicators-thumb [data-bs-target]{width:2rem;height:auto;background:no-repeat center/cover;border:0;border-radius:var(--tblr-border-radius);box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px;margin:0 3px;opacity:.75}@media(min-width:992px){.carousel-indicators-thumb [data-bs-target]{width:4rem}}.carousel-indicators-thumb [data-bs-target]:before{content:"";padding-top:var(--tblr-aspect-ratio, 100%);display:block}.carousel-indicators-thumb.carousel-indicators-vertical [data-bs-target]{margin:3px 0}.carousel-caption-background{background:red;position:absolute;left:0;right:0;bottom:0;height:90%;background:linear-gradient(0deg,#1f2937e6,#1f293700)}.card{transition:transform .3s ease-out,opacity .3s ease-out,box-shadow .3s ease-out}@media(prefers-reduced-motion:reduce){.card{transition:none}}@media print{.card{border:none;box-shadow:none}}a.card{color:inherit}a.card:hover{text-decoration:none;box-shadow:rgba(var(--tblr-body-color-rgb),.16) 0 2px 16px}.card .card{box-shadow:none}.card-borderless,.card-borderless .card-header,.card-borderless .card-footer{border-color:transparent}.card-stamp{--tblr-stamp-size: 7rem;position:absolute;top:0;right:0;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);max-height:100%;border-top-right-radius:6px;opacity:.2;overflow:hidden;pointer-events:none}.card-stamp-lg{--tblr-stamp-size: 13rem}.card-stamp-icon{background:var(--tblr-secondary);color:var(--tblr-card-bg, var(--tblr-bg-surface));display:flex;align-items:center;justify-content:center;border-radius:100rem;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);position:relative;top:calc(var(--tblr-stamp-size) * -.25);right:calc(var(--tblr-stamp-size) * -.25);font-size:calc(var(--tblr-stamp-size) * .75);transform:rotate(10deg)}.card-stamp-icon .icon{stroke-width:2;width:calc(var(--tblr-stamp-size) * .75);height:calc(var(--tblr-stamp-size) * .75)}.card-img,.card-img-start{border-top-left-radius:calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)));border-bottom-left-radius:calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)))}.card-img,.card-img-end{border-top-right-radius:calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)));border-bottom-right-radius:calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)))}.card-img-overlay{display:flex;flex-direction:column;justify-content:flex-end}.card-img-overlay-dark{background-image:linear-gradient(180deg,#0000,#0009)}.card-inactive{pointer-events:none;box-shadow:none}.card-inactive .card-body{opacity:.64}.card-active{--tblr-card-border-color: var(--tblr-primary);--tblr-card-bg: var(--tblr-active-bg)}.card-btn{display:flex;align-items:center;justify-content:center;padding:1rem 1.25rem;text-align:center;transition:background .3s}@media(prefers-reduced-motion:reduce){.card-btn{transition:none}}.card-btn{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);flex:1;color:inherit;font-weight:var(--tblr-font-weight-medium)}.card-btn:hover{text-decoration:none;background:rgba(var(--tblr-primary-rgb),.04)}.card-btn+.card-btn{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-stacked{--tblr-card-stacked-offset: .25rem;position:relative}.card-stacked:after{position:absolute;top:calc(-1 * var(--tblr-card-stacked-offset));right:var(--tblr-card-stacked-offset);left:var(--tblr-card-stacked-offset);height:var(--tblr-card-stacked-offset);content:"";background:var(--tblr-card-bg, var(--tblr-bg-surface));border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-cover{position:relative;padding:1rem 1.25rem;background:#666 no-repeat center/cover}.card-cover:before{position:absolute;inset:0;content:"";background:#1f29377a}.card-cover:first-child,.card-cover:first-child:before{border-radius:6px 6px 0 0}.card-cover-blurred:before{backdrop-filter:blur(2px)}.card-actions{margin:-.5rem -.5rem -.5rem auto;padding-left:.5rem}.card-actions a{text-decoration:none}.card-header{color:inherit;display:flex;align-items:center;background:transparent}.card-header:first-child{border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-header-light{border-bottom-color:transparent;background:var(--tblr-bg-surface-tertiary)}.card-header-tabs{background:var(--tblr-bg-surface-tertiary);flex:1;margin:calc(var(--tblr-card-cap-padding-y) * -1) calc(var(--tblr-card-cap-padding-x) * -1) calc(var(--tblr-card-cap-padding-y) * -1);padding:calc(var(--tblr-card-cap-padding-y) * .5) calc(var(--tblr-card-cap-padding-x) * .5) 0;border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-header-pills{flex:1;margin-top:-.5rem;margin-bottom:-.5rem}.card-rotate-left,.card-rotate-start{transform:rotate(-1.5deg)}.card-rotate-right,.card-rotate-end{transform:rotate(1.5deg)}.card-link{color:inherit}.card-link:hover{color:inherit;text-decoration:none;box-shadow:0 1px 6px #00000014}.card-link-rotate:hover{transform:rotate(1.5deg);opacity:1}.card-link-pop:hover{transform:translateY(-2px);opacity:1}.card-footer{margin-top:auto}.card-footer:last-child{border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-footer-transparent{background:transparent;border-color:transparent;padding-top:0}.card-footer-borderless{border-top:none}.card-progress{height:.25rem}.card-progress:last-child{border-radius:0 0 2px 2px}.card-progress:first-child{border-radius:2px 2px 0 0}.card-meta{color:var(--tblr-secondary)}.card-title{display:block;margin:0 0 1rem;font-size:1rem;font-weight:var(--tblr-font-weight-medium);color:inherit;line-height:1.5rem}a.card-title:hover{color:inherit}.card-header .card-title{margin:0}.card-subtitle{margin-bottom:1.25rem;color:var(--tblr-secondary);font-weight:400}.card-header .card-subtitle{margin:0}.card-title .card-subtitle{margin:0 0 0 .25rem;font-size:.875rem}.card-body{position:relative}.card-body>:last-child{margin-bottom:0}.card-sm>.card-body{padding:1rem}@media(min-width:768px){.card-md>.card-body{padding:2.5rem}}@media(min-width:768px){.card-lg>.card-body{padding:2rem}}@media(min-width:992px){.card-lg>.card-body{padding:4rem}}@media print{.card-body{padding:0}}.card-body+.card-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-body-scrollable{overflow:auto}.card-options{top:1.5rem;right:.75rem;display:flex;margin-left:auto}.card-options-link{display:inline-block;min-width:1rem;margin-left:.25rem;color:var(--tblr-secondary)}.card-status-top{position:absolute;top:0;right:0;left:0;height:2px;border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-status-start{position:absolute;right:auto;bottom:0;width:2px;height:100%;border-radius:var(--tblr-card-border-radius) 0 0 var(--tblr-card-border-radius)}.card-status-bottom{position:absolute;top:initial;bottom:0;width:100%;height:2px;border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-table{margin-bottom:0!important}.card-table tr td:first-child,.card-table tr th:first-child{padding-left:1.25rem;border-left:0}.card-table tr td:last-child,.card-table tr th:last-child{padding-right:1.25rem;border-right:0}.card-table thead tr:first-child,.card-table tbody tr:first-child,.card-table tfoot tr:first-child,.card-table thead tr:first-child td,.card-table thead tr:first-child th,.card-table tbody tr:first-child td,.card-table tbody tr:first-child th,.card-table tfoot tr:first-child td,.card-table tfoot tr:first-child th{border-top:0}.card-body+.card-table{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-table-border-color)}.card-code{padding:0}.card-code .highlight{margin:0;border:0}.card-code pre{margin:0!important;border:0!important}.card-chart{position:relative;z-index:1;height:3.5rem}.card-avatar{margin-left:auto;margin-right:auto;box-shadow:0 0 0 .25rem var(--tblr-card-bg, var(--tblr-bg-surface));margin-top:calc(-1 * var(--tblr-avatar-size) * .5)}.card-body+.card-list-group{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-list-group .list-group-item{padding-right:1.25rem;padding-left:1.25rem;border-right:0;border-left:0;border-radius:0}.card-list-group .list-group-item:last-child{border-bottom:0}.card-list-group .list-group-item:first-child{border-top:0}.card-tabs .nav-tabs{position:relative;z-index:1000;border-bottom:0}.card-tabs .nav-tabs .nav-link{background:var(--tblr-bg-surface-tertiary);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.card-tabs .nav-tabs .nav-link.active,.card-tabs .nav-tabs .nav-link:active,.card-tabs .nav-tabs .nav-link:hover{border-color:var(--tblr-border-color-translucent);color:var(--tblr-body-color)}.card-tabs .nav-tabs .nav-link.active{color:inherit;background:var(--tblr-card-bg, var(--tblr-bg-surface));border-bottom-color:transparent}.card-tabs .nav-tabs .nav-item:not(:first-child) .nav-link{border-top-left-radius:0}.card-tabs .nav-tabs .nav-item:not(:last-child) .nav-link{border-top-right-radius:0}.card-tabs .nav-tabs .nav-item+.nav-item{margin-left:calc(-1 * var(--tblr-border-width))}.card-tabs .nav-tabs-bottom,.card-tabs .nav-tabs-bottom .nav-link{margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-link.active{border-top-color:transparent}.card-tabs .nav-tabs-bottom .nav-item{margin-top:calc(-1 * var(--tblr-border-width));margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-item .nav-link{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:0 0 var(--tblr-border-radius-lg) var(--tblr-border-radius-lg)}.card-tabs .nav-tabs-bottom .nav-item:not(:first-child) .nav-link{border-bottom-left-radius:0}.card-tabs .nav-tabs-bottom .nav-item:not(:last-child) .nav-link{border-bottom-right-radius:0}.card-tabs .card{border-bottom-left-radius:0}.card-tabs .nav-tabs+.tab-content .card{border-bottom-left-radius:var(--tblr-card-border-radius);border-top-left-radius:0}.card-note{--tblr-card-bg: #fff7dd;--tblr-card-border-color: #fff1c9}.btn-close{--tblr-btn-close-color: currentColor;--tblr-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f2937'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/%3e%3c/svg%3e");--tblr-btn-close-opacity: .4;--tblr-btn-close-hover-opacity: .75;--tblr-btn-close-focus-shadow: 0 0 0 .25rem rgba(var(--tblr-primary-rgb), .25);--tblr-btn-close-focus-opacity: 1;--tblr-btn-close-disabled-opacity: .25;--tblr-btn-close-size: 1em;width:var(--tblr-btn-close-size);height:var(--tblr-btn-close-size);padding:.25em;color:var(--tblr-btn-close-color);mask:var(--tblr-btn-close-bg) no-repeat center/calc(var(--tblr-btn-close-size) * .75);background-color:var(--tblr-btn-close-color);border:0;border-radius:var(--tblr-border-radius);opacity:var(--tblr-btn-close-opacity);cursor:pointer;display:block}.btn-close:hover{color:var(--tblr-btn-close-color);text-decoration:none;opacity:var(--tblr-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--tblr-btn-close-focus-shadow);opacity:var(--tblr-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--tblr-btn-close-disabled-opacity)}.dropdown-menu{user-select:none;background-clip:border-box}.dropdown-menu.card{padding:0;min-width:25rem;display:none}.dropdown-menu.card.show{display:flex}.dropdown-item{min-width:11rem;display:flex;align-items:center;margin:0;line-height:1.4285714286;gap:.5rem}.dropdown-item-icon{width:1.25rem!important;height:1.25rem!important;margin-right:.5rem;color:var(--tblr-secondary);opacity:.7;text-align:center}.dropdown-item-indicator{margin-right:.5rem;margin-left:-.25rem;height:1.25rem;display:inline-flex;line-height:1;vertical-align:bottom;align-items:center}.dropdown-header{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-bottom:.25rem;pointer-events:none}.dropdown-menu-scrollable{height:auto;max-height:13rem;overflow-x:hidden}.dropdown-menu-column{min-width:11rem}.dropdown-menu-column .dropdown-item{min-width:0}.dropdown-menu-columns{display:flex;flex:0 .25rem}.dropdown-menu-arrow:before{content:"";position:absolute;top:-.25rem;left:.75rem;display:block;background:inherit;width:14px;height:14px;transform:rotate(45deg);transform-origin:center;border:1px solid;border-color:inherit;z-index:-1;clip:rect(0px,9px,9px,0px)}.dropdown-menu-arrow.dropdown-menu-end:before{right:.75rem;left:auto}.dropend>.dropdown-menu{margin-top:calc(-.25rem - 1px);margin-left:-.25rem}.dropend .dropdown-toggle:after{margin-left:auto}.dropdown-menu-card{padding:0;min-width:20rem}.dropdown-menu-card>.card{margin:0;border:0;box-shadow:none}.datagrid{--tblr-datagrid-padding: 1.5rem;--tblr-datagrid-item-width: 15rem;display:grid;grid-gap:var(--tblr-datagrid-padding);grid-template-columns:repeat(auto-fit,minmax(var(--tblr-datagrid-item-width),1fr))}.datagrid-title{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);margin-bottom:.25rem}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:1rem;text-align:center}@media(min-width:768px){.empty{padding:3rem}}.empty-icon{margin:0 0 1rem;width:3rem;height:3rem;line-height:1;color:var(--tblr-secondary)}.empty-icon svg{width:100%;height:100%}.empty-img{margin:0 0 2rem;line-height:1}.empty-header{margin:0 0 1rem;font-size:4rem;font-weight:var(--tblr-font-weight-light);line-height:1;color:var(--tblr-secondary)}.empty-title{font-size:1.25rem;line-height:1.75rem;font-weight:var(--tblr-font-weight-bold)}.empty-title,.empty-subtitle{margin:0 0 .5rem}.empty-action{margin-top:1.5rem}.empty-bordered{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.row>*{min-width:0}.col-separator{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.container-slim{--tblr-gutter-x: calc(var(--tblr-page-padding) * 2);--tblr-gutter-y: 0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:16rem}.container-tight{--tblr-gutter-x: calc(var(--tblr-page-padding) * 2);--tblr-gutter-y: 0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:30rem}.container-narrow{--tblr-gutter-x: calc(var(--tblr-page-padding) * 2);--tblr-gutter-y: 0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:61.875rem}.row-0{margin-right:0;margin-left:0}.row-0>.col,.row-0>[class*=col-]{padding-right:0;padding-left:0}.row-0 .card{margin-bottom:0}.row-sm{margin-right:-.375rem;margin-left:-.375rem}.row-sm>.col,.row-sm>[class*=col-]{padding-right:.375rem;padding-left:.375rem}.row-sm .card{margin-bottom:.75rem}.row-md{margin-right:-1.5rem;margin-left:-1.5rem}.row-md>.col,.row-md>[class*=col-]{padding-right:1.5rem;padding-left:1.5rem}.row-md .card{margin-bottom:3rem}.row-lg{margin-right:-3rem;margin-left:-3rem}.row-lg>.col,.row-lg>[class*=col-]{padding-right:3rem;padding-left:3rem}.row-lg .card{margin-bottom:6rem}.row-deck>.col,.row-deck>[class*=col-]{display:flex;align-items:stretch}.row-deck>.col .card,.row-deck>[class*=col-] .card{flex:1 1 auto}.row-cards{--tblr-gutter-x: var(--tblr-page-padding);--tblr-gutter-y: var(--tblr-page-padding);min-width:0}.row-cards .row-cards{flex:1}.space-y{display:flex;flex-direction:column;gap:1rem}.space-x{display:flex;gap:1rem}.space-y-0{display:flex;flex-direction:column;gap:0}.space-x-0{display:flex;gap:0}.space-y-1{display:flex;flex-direction:column;gap:.25rem}.space-x-1{display:flex;gap:.25rem}.space-y-2{display:flex;flex-direction:column;gap:.5rem}.space-x-2{display:flex;gap:.5rem}.space-y-3{display:flex;flex-direction:column;gap:1rem}.space-x-3{display:flex;gap:1rem}.space-y-4{display:flex;flex-direction:column;gap:1.5rem}.space-x-4{display:flex;gap:1.5rem}.space-y-5{display:flex;flex-direction:column;gap:2rem}.space-x-5{display:flex;gap:2rem}.space-y-6{display:flex;flex-direction:column;gap:2.5rem}.space-x-6{display:flex;gap:2.5rem}.divide-y>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y>:not(template):not(:first-child){padding-top:1rem!important}.divide-y>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x>:not(template):not(:first-child){padding-left:1rem!important}.divide-x>:not(template):not(:last-child){padding-right:1rem!important}.divide-y-0>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-0>:not(template):not(:first-child){padding-top:0!important}.divide-y-0>:not(template):not(:last-child){padding-bottom:0!important}.divide-x-0>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-0>:not(template):not(:first-child){padding-left:0!important}.divide-x-0>:not(template):not(:last-child){padding-right:0!important}.divide-y-1>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-1>:not(template):not(:first-child){padding-top:.25rem!important}.divide-y-1>:not(template):not(:last-child){padding-bottom:.25rem!important}.divide-x-1>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-1>:not(template):not(:first-child){padding-left:.25rem!important}.divide-x-1>:not(template):not(:last-child){padding-right:.25rem!important}.divide-y-2>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-2>:not(template):not(:first-child){padding-top:.5rem!important}.divide-y-2>:not(template):not(:last-child){padding-bottom:.5rem!important}.divide-x-2>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-2>:not(template):not(:first-child){padding-left:.5rem!important}.divide-x-2>:not(template):not(:last-child){padding-right:.5rem!important}.divide-y-3>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-3>:not(template):not(:first-child){padding-top:1rem!important}.divide-y-3>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x-3>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-3>:not(template):not(:first-child){padding-left:1rem!important}.divide-x-3>:not(template):not(:last-child){padding-right:1rem!important}.divide-y-4>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-4>:not(template):not(:first-child){padding-top:1.5rem!important}.divide-y-4>:not(template):not(:last-child){padding-bottom:1.5rem!important}.divide-x-4>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-4>:not(template):not(:first-child){padding-left:1.5rem!important}.divide-x-4>:not(template):not(:last-child){padding-right:1.5rem!important}.divide-y-5>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-5>:not(template):not(:first-child){padding-top:2rem!important}.divide-y-5>:not(template):not(:last-child){padding-bottom:2rem!important}.divide-x-5>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-5>:not(template):not(:first-child){padding-left:2rem!important}.divide-x-5>:not(template):not(:last-child){padding-right:2rem!important}.divide-y-6>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-6>:not(template):not(:first-child){padding-top:2.5rem!important}.divide-y-6>:not(template):not(:last-child){padding-bottom:2.5rem!important}.divide-x-6>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-6>:not(template):not(:first-child){padding-left:2.5rem!important}.divide-x-6>:not(template):not(:last-child){padding-right:2.5rem!important}.divide-y-fill{display:flex;flex-direction:column;height:100%}.divide-y-fill>:not(template){flex:1;display:flex;justify-content:center;flex-direction:column}.icon{--tblr-icon-size: 1.25rem;width:var(--tblr-icon-size);height:var(--tblr-icon-size);font-size:var(--tblr-icon-size);vertical-align:bottom;stroke-width:1.5}.icon:hover{text-decoration:none}.icon-inline{--tblr-icon-size: 1rem;vertical-align:-.2rem}.icon-filled{fill:currentColor}.icon-sm{--tblr-icon-size: 1rem;stroke-width:1}.icon-md{--tblr-icon-size: 2.5rem;stroke-width:1}.icon-lg{--tblr-icon-size: 3.5rem;stroke-width:1}.icon-pulse{transition:all .15s ease 0s;animation:pulse 2s ease infinite;animation-fill-mode:both}.icon-tada{transition:all .15s ease 0s;animation:tada 3s ease infinite;animation-fill-mode:both}.icon-rotate{transition:all .15s ease 0s;animation:rotate-360 3s linear infinite;animation-fill-mode:both}.img-responsive{--tblr-img-responsive-ratio: 75%;background:no-repeat center/cover;padding-top:var(--tblr-img-responsive-ratio)}.img-responsive-grid{padding-top:calc(var(--tblr-img-responsive-ratio) - var(--tblr-gutter-y) / 2)}.img-responsive-1x1{--tblr-img-responsive-ratio: 100%}.img-responsive-2x1{--tblr-img-responsive-ratio: 50%}.img-responsive-1x2{--tblr-img-responsive-ratio: 200%}.img-responsive-3x1{--tblr-img-responsive-ratio: 33.3333333333%}.img-responsive-1x3{--tblr-img-responsive-ratio: 300%}.img-responsive-4x1{--tblr-img-responsive-ratio: 25%}.img-responsive-1x4{--tblr-img-responsive-ratio: 400%}.img-responsive-4x3{--tblr-img-responsive-ratio: 75%}.img-responsive-3x4{--tblr-img-responsive-ratio: 133.3333333333%}.img-responsive-16x9{--tblr-img-responsive-ratio: 56.25%}.img-responsive-9x16{--tblr-img-responsive-ratio: 177.7777777778%}.img-responsive-21x9{--tblr-img-responsive-ratio: 42.8571428571%}.img-responsive-9x21{--tblr-img-responsive-ratio: 233.3333333333%}.img-bg{background:no-repeat center/cover}textarea[cols]{height:auto}.col-form-label,.form-label{display:block;font-weight:var(--tblr-font-weight-medium)}.col-form-label.required:after,.form-label.required:after{content:"*";margin-left:.25rem;color:#d63939}.form-label-description{float:right;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-secondary)}.form-hint{display:block;color:var(--tblr-secondary)}.form-hint:last-child{margin-bottom:0}.form-hint+.form-control{margin-top:.25rem}.form-label+.form-hint{margin-top:-.25rem}.input-group+.form-hint,.form-control+.form-hint,.form-select+.form-hint{margin-top:.5rem;color:var(--tblr-secondary)}.form-select:-moz-focusring{color:var(--tblr-body-color)}.form-control:-webkit-autofill{box-shadow:0 0 0 1000px var(--tblr-bg-surface-secondary) inset;color:var(--tblr-body-color);-webkit-text-fill-color:var(--tblr-body-color)}.form-control:disabled,.form-control.disabled{color:var(--tblr-secondary);user-select:none}.form-control[size]{width:auto}.form-control-light{background-color:var(--tblr-gray-100);border-color:transparent}.form-control-dark{background-color:#0000001a;color:#fff;border-color:transparent}.form-control-dark:focus{background-color:#0000001a;box-shadow:none;border-color:#ffffff3d}.form-control-dark::placeholder{color:#fff9}.form-control-rounded{border-radius:10rem}.form-control-flush{padding:0;background:none!important;border-color:transparent!important;resize:none;box-shadow:none!important;line-height:inherit}.form-footer{margin-top:2rem}.form-fieldset{padding:1rem;margin-bottom:1rem;background:var(--tblr-bg-surface-secondary);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}fieldset:empty{display:none}.form-help{display:inline-flex;font-weight:var(--tblr-font-weight-bold);align-items:center;justify-content:center;width:1.125rem;height:1.125rem;font-size:.75rem;color:var(--tblr-secondary);text-align:center;text-decoration:none;cursor:pointer;user-select:none;background:var(--tblr-gray-100);border-radius:100rem;transition:background-color .3s,color .3s}@media(prefers-reduced-motion:reduce){.form-help{transition:none}}.form-help:hover,.form-help[aria-describedby]{color:#fff;background:var(--tblr-primary)}.input-group{box-shadow:var(--tblr-shadow-input);border-radius:var(--tblr-border-radius)}.input-group .form-control,.input-group .btn{box-shadow:none}.input-group-link{font-size:.75rem}.input-group-flat:focus-within{box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25);border-radius:var(--tblr-border-radius)}.input-group-flat:focus-within .form-control,.input-group-flat:focus-within .input-group-text{border-color:#80c2be!important}.input-group-flat .form-control:focus{border-color:var(--tblr-border-color);box-shadow:none}.input-group-flat .form-control:not(:last-child){border-right:0}.input-group-flat .form-control:not(:first-child){border-left:0}.input-group-flat .input-group-text{background:var(--tblr-bg-forms);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.input-group-flat .input-group-text{transition:none}}.input-group-flat .input-group-text:first-child{padding-right:0}.input-group-flat .input-group-text:last-child{padding-left:0}.form-file-button{margin-left:0;border-left:0}label[for=floating-input]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:575.98px){.form-control,.form-select{font-size:1rem}}.input-icon{position:relative}.input-icon .form-control:not(:last-child),.input-icon .form-select:not(:last-child){padding-right:2.5rem}.input-icon .form-control:not(:first-child),.input-icon .form-select:not(:last-child){padding-left:2.5rem}.input-icon-addon{position:absolute;top:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;min-width:2.5rem;color:var(--tblr-icon-color);pointer-events:none;font-size:1.2em}.input-icon-addon:last-child{right:0;left:auto}.form-colorinput{position:relative;display:inline-block;margin:0;line-height:1;cursor:pointer}.form-colorinput-input{position:absolute;z-index:-1;opacity:0}.form-colorinput-color{display:block;width:1.5rem;height:1.5rem;color:#fff;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:var(--tblr-border-radius);box-shadow:0 1px 2px #0000000d}.form-colorinput-color:before{position:absolute;top:0;left:0;width:100%;height:100%;content:"";background:no-repeat center center/1.25rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");opacity:0;transition:opacity .3s}@media(prefers-reduced-motion:reduce){.form-colorinput-color:before{transition:none}}.form-colorinput-input:checked~.form-colorinput-color:before{opacity:1}.form-colorinput-input:focus~.form-colorinput-color{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-colorinput-light .form-colorinput-color:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%231f2937' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-imagecheck{--tblr-form-imagecheck-radius: var(--tblr-border-radius);position:relative;margin:0;cursor:pointer}.form-imagecheck-input{position:absolute;z-index:-1;opacity:0}.form-imagecheck-figure{position:relative;display:block;margin:0;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-form-imagecheck-radius)}.form-imagecheck-input:focus~.form-imagecheck-figure{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-imagecheck-input:checked~.form-imagecheck-figure{border-color:var(--tblr-primary)}.form-imagecheck-figure:before{position:absolute;top:.25rem;left:.25rem;z-index:1;display:block;width:1.25rem;height:1.25rem;color:#fff;pointer-events:none;content:"";user-select:none;background:var(--tblr-bg-forms);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius);transition:opacity .3s}@media(prefers-reduced-motion:reduce){.form-imagecheck-figure:before{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure:before{background-color:var(--tblr-primary);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-imagecheck-input[type=radio]~.form-imagecheck-figure:before{border-radius:50%}.form-imagecheck-input[type=radio]:checked~.form-imagecheck-figure:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-imagecheck-image{max-width:100%;display:block;opacity:.64;transition:opacity .3s}@media(prefers-reduced-motion:reduce){.form-imagecheck-image{transition:none}}.form-imagecheck-image:first-child{border-top-left-radius:calc(var(--tblr-form-imagecheck-radius) - 1px);border-top-right-radius:calc(var(--tblr-form-imagecheck-radius) - 1px)}.form-imagecheck-image:last-child{border-bottom-right-radius:calc(var(--tblr-form-imagecheck-radius) - 1px);border-bottom-left-radius:calc(var(--tblr-form-imagecheck-radius) - 1px)}.form-imagecheck:hover .form-imagecheck-image,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-image{opacity:1}.form-imagecheck-caption{padding:.25rem;font-size:.765625rem;color:var(--tblr-secondary);text-align:center;transition:color .3s}@media(prefers-reduced-motion:reduce){.form-imagecheck-caption{transition:none}}.form-imagecheck:hover .form-imagecheck-caption,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-caption{color:var(--tblr-body-color)}.form-selectgroup{display:inline-flex;margin:0 -.5rem -.5rem 0;flex-wrap:wrap}.form-selectgroup .form-selectgroup-item{margin:0 .5rem .5rem 0}.form-selectgroup-vertical{flex-direction:column}.form-selectgroup-item{display:block;position:relative}.form-selectgroup-input{position:absolute;top:0;left:0;z-index:-1;opacity:0}.form-selectgroup-label{position:relative;display:block;min-width:calc(1.25rem + 1.125rem + calc(var(--tblr-border-width) * 2));margin:0;padding:.5625rem 1rem;font-size:.875rem;line-height:1.25rem;color:var(--tblr-secondary);background:var(--tblr-bg-forms);text-align:center;cursor:pointer;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-shadow-input);transition:border-color .3s,background .3s,color .3s}@media(prefers-reduced-motion:reduce){.form-selectgroup-label{transition:none}}.form-selectgroup-label .icon:only-child{margin:0 -.25rem}.form-selectgroup-label:hover{color:var(--tblr-body-color)}.form-selectgroup-check{display:inline-block;width:1.25rem;height:1.25rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);vertical-align:middle;box-shadow:var(--tblr-shadow-input)}.form-selectgroup-input[type=checkbox]+.form-selectgroup-label .form-selectgroup-check{border-radius:var(--tblr-border-radius)}.form-selectgroup-input[type=radio]+.form-selectgroup-label .form-selectgroup-check{border-radius:50%}.form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-check{background-color:var(--tblr-primary);background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-selectgroup-input[type=checkbox]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-selectgroup-input[type=radio]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-selectgroup-check-floated{position:absolute;top:.5625rem;right:.5625rem}.form-selectgroup-input:checked+.form-selectgroup-label{z-index:1;color:var(--tblr-primary);background:rgba(var(--tblr-primary-rgb),.04);border-color:var(--tblr-primary)}.form-selectgroup-input:focus+.form-selectgroup-label{z-index:2;color:var(--tblr-primary);border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-selectgroup-boxes .form-selectgroup-label{text-align:left;padding:1.25rem 1rem;color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label{color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-title{color:var(--tblr-primary)}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-label-content{opacity:1}.form-selectgroup-pills{flex-wrap:wrap;align-items:flex-start}.form-selectgroup-pills .form-selectgroup-item{flex-grow:0}.form-selectgroup-pills .form-selectgroup-label{border-radius:50px}.form-control-color::-webkit-color-swatch{border:none}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}.form-control::file-selector-button{background-color:var(--tblr-btn-color, var(--tblr-tertiary-bg))}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-btn-color, var(--tblr-secondary-bg))}.form-check{user-select:none}.form-check.form-check-highlight .form-check-input:not(:checked)~.form-check-label{color:var(--tblr-secondary)}.form-check .form-check-label-off{color:var(--tblr-secondary)}.form-check .form-check-input:checked~.form-check-label-off{display:none}.form-check .form-check-input:not(:checked)~.form-check-label-on{display:none}.form-check-input{background-size:1.25rem;margin-top:0rem;box-shadow:var(--tblr-shadow-input)}.form-switch .form-check-input{transition:background-color .3s,background-position .3s}@media(prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-check-label{display:block}.form-check-label.required:after{content:"*";margin-left:.25rem;color:#d63939}.form-check-description{display:block;color:var(--tblr-secondary);font-size:.75rem;margin-top:.25rem}.form-check-single,.form-check-single .form-check-input{margin:0}.form-switch .form-check-input{height:1.25rem;margin-top:0rem}.form-switch-lg{padding-left:3.5rem;min-height:1.5rem}.form-switch-lg .form-check-input{height:1.5rem;width:2.75rem;background-size:1.5rem;margin-left:-3.5rem}.form-switch-lg .form-check-label{padding-top:.125rem}.form-check-input:checked{border:none}.form-select.is-invalid-lite,.form-control.is-invalid-lite,.form-select.is-valid-lite,.form-control.is-valid-lite{border-color:var(--tblr-border-color)!important}.legend{--tblr-legend-size: .75em;display:inline-block;background:var(--tblr-border-color);width:var(--tblr-legend-size);height:var(--tblr-legend-size);border-radius:var(--tblr-border-radius-sm);border:1px solid var(--tblr-border-color-translucent)}.list-group{margin-left:0;margin-right:0}.list-group-header{background:var(--tblr-bg-surface-tertiary);padding:.5rem 1.25rem;font-size:.75rem;font-weight:var(--tblr-font-weight-medium);line-height:1;text-transform:uppercase;color:var(--tblr-gray-500);border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.list-group-flush>.list-group-header:last-child{border-bottom-width:0}.list-group-item{background-color:inherit}.list-group-item.active{background-color:rgba(var(--tblr-secondary-rgb),.08);border-left-color:#00857d;border-left-width:2px}.list-group-item.disabled,.list-group-item:disabled{color:#6b7280;background-color:rgba(var(--tblr-secondary-rgb),.08)}.list-bordered .list-item{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);margin-top:-1px}.list-bordered .list-item:first-child{border-top:none}.list-group-hoverable .list-group-item:active,.list-group-hoverable .list-group-item:focus,.list-group-hoverable .list-group-item:hover{background-color:rgba(var(--tblr-secondary-rgb),.08)}.list-group-hoverable .list-group-item-actions{opacity:0;transition:opacity .3s}@media(prefers-reduced-motion:reduce){.list-group-hoverable .list-group-item-actions{transition:none}}.list-group-hoverable .list-group-item:hover .list-group-item-actions,.list-group-hoverable .list-group-item-actions.show{opacity:1}.list-group-transparent{--tblr-list-group-border-radius: 0;margin:0 -1.25rem}.list-group-transparent .list-group-item{background:none;border:0}.list-group-transparent .list-group-item .icon{color:var(--tblr-secondary)}.list-group-transparent .list-group-item.active{font-weight:var(--tblr-font-weight-bold);color:inherit;background:var(--tblr-active-bg)}.list-group-transparent .list-group-item.active .icon{color:inherit}.list-separated{display:flex;flex-direction:column;gap:1rem}.list-inline{margin:0}.list-inline-item:not(:last-child){margin-right:auto;margin-inline-end:.5rem}.list-inline-dots .list-inline-item+.list-inline-item:before{content:" \b7 ";margin-inline-end:.5rem}.loader{position:relative;display:block;width:2.5rem;height:2.5rem;color:#066fd1;vertical-align:middle}.loader:after{position:absolute;top:0;left:0;width:100%;height:100%;content:"";border:1px var(--tblr-border-style);border-color:transparent;border-top-color:currentColor;border-left-color:currentColor;border-radius:100rem;animation:rotate-360 .6s linear;animation-iteration-count:infinite}.dimmer{position:relative}.dimmer .loader{position:absolute;top:50%;right:0;left:0;display:none;margin:0 auto;transform:translateY(-50%)}.dimmer.active .loader{display:block}.dimmer.active .dimmer-content{pointer-events:none;opacity:.1}@keyframes animated-dots{0%{transform:translate(-100%)}}.animated-dots{display:inline-block;overflow:hidden;vertical-align:bottom}.animated-dots:after{display:inline-block;content:"...";animation:animated-dots 1.2s steps(4,jump-none) infinite}.modal-content>.btn-close,.modal-header>.btn-close{position:absolute;top:0;right:0;width:3.5rem;height:3.5rem;margin:0;padding:0;z-index:10}.modal-body{scrollbar-color:color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 20%,transparent) transparent}.modal-body::-webkit-scrollbar{width:1rem;height:1rem;transition:background .3s}@media(prefers-reduced-motion:reduce){.modal-body::-webkit-scrollbar{transition:none}}.modal-body::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 20%,transparent)}.modal-body::-webkit-scrollbar-track{background:transparent}.modal-body:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 40%,transparent)}.modal-body::-webkit-scrollbar-corner{background:transparent}.modal-body .modal-title{margin-bottom:1rem}.modal-body+.modal-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.modal-status{position:absolute;top:0;left:0;right:0;height:2px;background:var(--tblr-secondary);border-radius:var(--tblr-border-radius-lg) var(--tblr-border-radius-lg) 0 0}.modal-header{align-items:center;min-height:3.5rem;background:transparent;padding:0 3.5rem 0 1.5rem}.modal-title{font-size:1rem;font-weight:var(--tblr-font-weight-bold);color:inherit;line-height:1.4285714286}.modal-footer{padding-top:.75rem;padding-bottom:.75rem}.modal-blur{backdrop-filter:blur(4px)}.modal-full-width{max-width:none;margin:0 .5rem}.nav{--tblr-nav-link-hover-bg: color-mix(in srgb, var(--tblr-nav-link-color) 4%, transparent)}.nav-vertical,.nav-vertical .nav{flex-direction:column;flex-wrap:nowrap}.nav-vertical .nav{margin-left:1.25rem;border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding-left:.5rem}.nav-vertical .nav-link.active,.nav-vertical .nav-item.show .nav-link{font-weight:var(--tblr-font-weight-bold);color:var(--tblr-nav-link-active-color)}.nav-vertical.nav-pills{margin:0 -.75rem}.nav-bordered{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.nav-bordered .nav-item+.nav-item{margin-left:1.25rem}.nav-bordered .nav-link{padding-left:0;padding-right:0;margin:0 0 calc(-1 * var(--tblr-border-width));border:0;border-bottom:2px var(--tblr-border-style) transparent}.nav-bordered .nav-link:hover{background-color:transparent}.nav-bordered .nav-link.active,.nav-bordered .nav-item.show .nav-link{color:var(--tblr-primary);border-color:var(--tblr-primary)}.nav-underline .nav-link{border-radius:0}.nav-link{display:flex;transition:color .3s,background-color .3s}@media(prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link{align-items:center}.nav-link:hover,.nav-link:focus{background-color:var(--tblr-nav-link-hover-bg)}.nav-link-toggle{margin-left:auto;padding:0 .25rem;transition:transform .3s}@media(prefers-reduced-motion:reduce){.nav-link-toggle{transition:none}}.nav-link-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-45deg)}.nav-link-toggle:after{margin:0}.nav-link[aria-expanded=true] .nav-link-toggle{transform:rotate(180deg)}.nav-link-icon{width:1.25rem;height:1.25rem;margin-right:.5rem;color:inherit}.nav-link-icon svg{display:block;height:100%}.nav-fill .nav-item .nav-link{justify-content:center}.stars{display:inline-flex;color:#9ca3af;font-size:.75rem}.stars .star:not(:first-child){margin-left:.25rem}.pagination{margin:0;--tblr-pagination-gap: .25rem;user-select:none;gap:var(--tblr-pagination-gap);line-height:var(--tblr-body-line-height)}.page-link{min-width:2rem;border-radius:var(--tblr-pagination-border-radius)}.page-item:not(.active) .page-link:hover{background:var(--tblr-pagination-hover-bg)}.page-text{padding-left:.5rem;padding-right:.5rem}.page-item{text-align:center}.page-item.page-prev,.page-item.page-next{flex:0 0 50%;text-align:left}.page-item.page-next{margin-left:auto;text-align:right}.page-item-subtitle{margin-bottom:2px;font-size:12px;color:var(--tblr-secondary);text-transform:uppercase}.page-item.disabled .page-item-subtitle{color:var(--tblr-disabled-color)}.page-item-title{font-size:1rem;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-body-color)}.page-link:hover .page-item-title{color:#00857d}.page-item.disabled .page-item-title{color:var(--tblr-disabled-color)}.pagination-outline{--tblr-pagination-border-color: var(--tblr-border-color);--tblr-pagination-disabled-border-color: var(--tblr-border-color);--tblr-pagination-border-width: 1px}.pagination-circle{--tblr-pagination-border-radius: var(--tblr-border-radius-pill)}@keyframes progress-indeterminate{0%{right:100%;left:-35%}to,60%{right:-90%;left:100%}}.progress{position:relative;width:100%;line-height:.5rem;appearance:none}.progress::-webkit-progress-bar{background:var(--tblr-progress-bg)}.progress::-webkit-progress-value{background-color:var(--tblr-primary)}.progress::-moz-progress-bar{background-color:var(--tblr-primary)}.progress::-ms-fill{background-color:var(--tblr-primary);border:none}.progress-sm{height:.25rem}.progress-bar{height:100%}.progress-bar-indeterminate:after,.progress-bar-indeterminate:before{position:absolute;top:0;bottom:0;left:0;content:"";background-color:inherit;will-change:left,right}.progress-bar-indeterminate:before{animation:progress-indeterminate 1.5s cubic-bezier(.65,.815,.735,.395) infinite}.progress-separated .progress-bar{box-shadow:0 0 0 2px var(--tblr-card-bg, var(--tblr-bg-surface))}.progressbg{position:relative;padding:.25rem .5rem;display:flex}.progressbg-text{position:relative;z-index:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progressbg-progress{position:absolute;inset:0;z-index:0;height:100%;background:transparent;pointer-events:none}.progressbg-value{font-weight:var(--tblr-font-weight-medium);margin-left:auto;padding-left:2rem}.ribbon{--tblr-ribbon-margin: .25rem;--tblr-ribbon-border-radius: var(--tblr-border-radius);position:absolute;top:.75rem;right:calc(-1 * var(--tblr-ribbon-margin));z-index:1;padding:.25rem .75rem;font-size:.625rem;font-weight:var(--tblr-font-weight-bold);line-height:1;color:#fff;text-align:center;text-transform:uppercase;background:var(--tblr-primary);border-color:var(--tblr-primary);border-radius:var(--tblr-ribbon-border-radius) 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius);display:inline-flex;align-items:center;justify-content:center;min-height:2rem;min-width:2rem}.ribbon:before{position:absolute;right:0;bottom:100%;width:0;height:0;content:"";filter:brightness(70%);border:calc(var(--tblr-ribbon-margin) * .5) var(--tblr-border-style);border-color:inherit;border-top-color:transparent;border-right-color:transparent}.ribbon.bg-blue{border-color:var(--tblr-blue)}.ribbon.bg-blue-lt{border-color:rgba(var(--tblr-blue-rgb),.1)!important}.ribbon.bg-azure{border-color:var(--tblr-azure)}.ribbon.bg-azure-lt{border-color:rgba(var(--tblr-azure-rgb),.1)!important}.ribbon.bg-indigo{border-color:var(--tblr-indigo)}.ribbon.bg-indigo-lt{border-color:rgba(var(--tblr-indigo-rgb),.1)!important}.ribbon.bg-purple{border-color:var(--tblr-purple)}.ribbon.bg-purple-lt{border-color:rgba(var(--tblr-purple-rgb),.1)!important}.ribbon.bg-pink{border-color:var(--tblr-pink)}.ribbon.bg-pink-lt{border-color:rgba(var(--tblr-pink-rgb),.1)!important}.ribbon.bg-red{border-color:var(--tblr-red)}.ribbon.bg-red-lt{border-color:rgba(var(--tblr-red-rgb),.1)!important}.ribbon.bg-orange{border-color:var(--tblr-orange)}.ribbon.bg-orange-lt{border-color:rgba(var(--tblr-orange-rgb),.1)!important}.ribbon.bg-yellow{border-color:var(--tblr-yellow)}.ribbon.bg-yellow-lt{border-color:rgba(var(--tblr-yellow-rgb),.1)!important}.ribbon.bg-lime{border-color:var(--tblr-lime)}.ribbon.bg-lime-lt{border-color:rgba(var(--tblr-lime-rgb),.1)!important}.ribbon.bg-green{border-color:var(--tblr-green)}.ribbon.bg-green-lt{border-color:rgba(var(--tblr-green-rgb),.1)!important}.ribbon.bg-teal{border-color:var(--tblr-teal)}.ribbon.bg-teal-lt{border-color:rgba(var(--tblr-teal-rgb),.1)!important}.ribbon.bg-cyan{border-color:var(--tblr-cyan)}.ribbon.bg-cyan-lt{border-color:rgba(var(--tblr-cyan-rgb),.1)!important}.ribbon .icon{width:1.25rem;height:1.25rem;font-size:1.25rem}.ribbon-top{top:calc(-1 * var(--tblr-ribbon-margin));right:.75rem;width:2rem;padding:.5rem 0;border-radius:0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius)}.ribbon-top:before{top:0;right:100%;bottom:auto;border-color:inherit;border-top-color:transparent;border-left-color:transparent}.ribbon-top.ribbon-start{right:auto;left:.75rem}.ribbon-top.ribbon-start:before{top:0;right:100%;left:auto}.ribbon-start{right:auto;left:calc(-1 * var(--tblr-ribbon-margin));border-radius:0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius)}.ribbon-start:before{top:auto;bottom:100%;left:0;border-color:inherit;border-top-color:transparent;border-left-color:transparent}.ribbon-bottom{top:auto;bottom:.75rem}.ribbon-bookmark{padding-left:.25rem;border-radius:0 0 var(--tblr-ribbon-border-radius) 0}.ribbon-bookmark:after{position:absolute;top:0;right:100%;display:block;width:0;height:0;content:"";border:1rem var(--tblr-border-style);border-color:inherit;border-right-width:0;border-left-color:transparent;border-left-width:.5rem}.ribbon-bookmark.ribbon-left{padding-right:.5rem}.ribbon-bookmark.ribbon-left:after{right:auto;left:100%;border-right-color:transparent;border-right-width:.5rem;border-left-width:0}.ribbon-bookmark.ribbon-top{padding-right:0;padding-bottom:.25rem;padding-left:0;border-radius:0 var(--tblr-ribbon-border-radius) 0 0}.ribbon-bookmark.ribbon-top:after{top:100%;right:0;left:0;border-color:inherit;border-width:1rem;border-top-width:0;border-bottom-color:transparent;border-bottom-width:.5rem}.markdown{line-height:2}.markdown>:first-child{margin-top:0}.markdown>:last-child,.markdown>:last-child .highlight{margin-bottom:0}@media(min-width:768px){.markdown>hr,.markdown>.hr{margin-top:3em;margin-bottom:3em}}.markdown>h1,.markdown>.h1,.markdown>h2,.markdown>.h2,.markdown>h3,.markdown>.h3,.markdown>h4,.markdown>.h4,.markdown>h5,.markdown>.h5,.markdown>h6,.markdown>.h6{font-weight:var(--tblr-font-weight-bold)}.markdown>h2,.markdown>.h2,.markdown>h3,.markdown>.h3,.markdown>h4,.markdown>.h4,.markdown>h5,.markdown>.h5,.markdown>h6,.markdown>.h6{margin-top:2.5rem}.markdown>table{font-size:var(--tblr-body-font-size)}.markdown>blockquote{font-size:1rem;margin:1.5rem 0;padding:.5rem 1.5rem}.markdown>img,.markdown>p>img{border-radius:var(--tblr-border-radius);border:1px solid var(--tblr-border-color)}.markdown pre{max-height:20rem}.placeholder:not(.btn):not([class*=bg-]){background-color:currentColor!important}.placeholder:not(.avatar):not([class*=card-img-]){border-radius:var(--tblr-border-radius)}.nav-segmented{--tblr-nav-bg: var(--tblr-bg-surface-tertiary);--tblr-nav-padding: 2px;--tblr-nav-height: 2.5rem;--tblr-nav-gap: .25rem;--tblr-nav-active-bg: var(--tblr-bg-surface);--tblr-nav-font-size: inherit;--tblr-nav-radius: 6px;--tblr-nav-link-disabled-color: var(--tblr-disabled-color);--tblr-nav-link-gap: .25rem;--tblr-nav-link-padding-x: .75rem;--tblr-nav-link-icon-size: 1.25rem;display:inline-flex;flex-wrap:wrap;gap:var(--tblr-nav-gap);padding:var(--tblr-nav-padding);list-style:none;background:var(--tblr-nav-bg);border-radius:calc(var(--tblr-nav-radius) + var(--tblr-nav-padding));box-shadow:inset 0 0 0 1px #0000000a}.nav-segmented .nav-link{display:inline-flex;gap:calc(.25rem + var(--tblr-nav-link-gap));align-items:center;margin:0;font-size:var(--tblr-nav-font-size);min-width:calc(var(--tblr-nav-height) - 2 * var(--tblr-nav-padding));height:calc(var(--tblr-nav-height) - 2 * var(--tblr-nav-padding));padding:0 calc(var(--tblr-nav-link-padding-x) - 2px);border:1px solid transparent;background:transparent;color:var(--tblr-secondary);text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color .3s,color .3s;border-radius:var(--tblr-nav-radius);flex-grow:1;justify-content:center}.nav-segmented .nav-link:hover,.nav-segmented .nav-link.hover{background:#0000000a;color:var(--tblr-body-color)}.nav-segmented .nav-link.disabled,.nav-segmented .nav-link:disabled{color:var(--tblr-nav-link-disabled-color);cursor:not-allowed}.nav-segmented .nav-link-input:checked+.nav-link,.nav-segmented .nav-link.active{color:var(--tblr-body-color);background:var(--tblr-nav-active-bg);border-color:var(--tblr-border-color)}.nav-segmented .nav-link-input{display:none}.nav-segmented .nav-link-icon{width:var(--tblr-nav-link-icon-size);height:var(--tblr-nav-link-icon-size);margin:0 -.25rem;color:inherit}.nav-segmented-vertical{flex-direction:column}.nav-segmented-vertical .nav-link{justify-content:flex-start}.nav-sm{--tblr-nav-height: 2rem;--tblr-nav-font-size: var(--tblr-font-size-h5);--tblr-nav-radius: 4px;--tblr-nav-link-padding-x: .5rem;--tblr-nav-link-gap: .25rem;--tblr-nav-link-icon-size: 1rem}.nav-lg{--tblr-nav-height: 3rem;--tblr-nav-font-size: var(--tblr-font-size-h3);--tblr-nav-radius: 8px;--tblr-nav-link-padding-x: 1rem;--tblr-nav-link-gap: .5rem;--tblr-nav-link-icon-size: 1.5rem}.steps{--tblr-steps-color: var(--tblr-primary);--tblr-steps-inactive-color: var(--tblr-border-color);--tblr-steps-dot-size: .5rem;--tblr-steps-border-width: 2px;display:flex;flex-wrap:nowrap;width:100%;padding:0;margin:0;list-style:none}.steps-blue{--tblr-steps-color: var(--tblr-blue)}.steps-blue-lt{--tblr-steps-color: var(--tblr-blue-lt)}.steps-azure{--tblr-steps-color: var(--tblr-azure)}.steps-azure-lt{--tblr-steps-color: var(--tblr-azure-lt)}.steps-indigo{--tblr-steps-color: var(--tblr-indigo)}.steps-indigo-lt{--tblr-steps-color: var(--tblr-indigo-lt)}.steps-purple{--tblr-steps-color: var(--tblr-purple)}.steps-purple-lt{--tblr-steps-color: var(--tblr-purple-lt)}.steps-pink{--tblr-steps-color: var(--tblr-pink)}.steps-pink-lt{--tblr-steps-color: var(--tblr-pink-lt)}.steps-red{--tblr-steps-color: var(--tblr-red)}.steps-red-lt{--tblr-steps-color: var(--tblr-red-lt)}.steps-orange{--tblr-steps-color: var(--tblr-orange)}.steps-orange-lt{--tblr-steps-color: var(--tblr-orange-lt)}.steps-yellow{--tblr-steps-color: var(--tblr-yellow)}.steps-yellow-lt{--tblr-steps-color: var(--tblr-yellow-lt)}.steps-lime{--tblr-steps-color: var(--tblr-lime)}.steps-lime-lt{--tblr-steps-color: var(--tblr-lime-lt)}.steps-green{--tblr-steps-color: var(--tblr-green)}.steps-green-lt{--tblr-steps-color: var(--tblr-green-lt)}.steps-teal{--tblr-steps-color: var(--tblr-teal)}.steps-teal-lt{--tblr-steps-color: var(--tblr-teal-lt)}.steps-cyan{--tblr-steps-color: var(--tblr-cyan)}.steps-cyan-lt{--tblr-steps-color: var(--tblr-cyan-lt)}.step-item{position:relative;flex:1 1 0;min-height:1rem;margin-top:0;color:inherit;text-align:center;cursor:default;padding-top:calc(var(--tblr-steps-dot-size))}a.step-item{cursor:pointer}a.step-item:hover{color:inherit}.step-item:after,.step-item:before{background:var(--tblr-steps-color)}.step-item:not(:last-child):after{position:absolute;left:50%;width:100%;content:"";transform:translateY(-50%)}.step-item:after{top:calc(var(--tblr-steps-dot-size) * .5);height:var(--tblr-steps-border-width)}.step-item:before{content:"";position:absolute;top:0;left:50%;z-index:1;box-sizing:content-box;display:flex;align-items:center;justify-content:center;border-radius:100rem;transform:translate(-50%);color:var(--tblr-white);width:var(--tblr-steps-dot-size);height:var(--tblr-steps-dot-size)}.step-item.active{font-weight:var(--tblr-font-weight-bold)}.step-item.active:after{background:var(--tblr-steps-inactive-color)}.step-item.active~.step-item{color:var(--tblr-disabled-color)}.step-item.active~.step-item:after,.step-item.active~.step-item:before{background:var(--tblr-steps-inactive-color)}.steps-counter{--tblr-steps-dot-size: 1.5rem;counter-reset:steps}.steps-counter .step-item{counter-increment:steps}.steps-counter .step-item:before{content:counter(steps)}.steps-vertical{--tblr-steps-dot-offset: 6px;flex-direction:column}.steps-vertical.steps-counter{--tblr-steps-dot-offset: -2px}.steps-vertical .step-item{text-align:left;padding-top:0;padding-left:calc(var(--tblr-steps-dot-size) + 1rem);min-height:auto}.steps-vertical .step-item:not(:first-child){margin-top:1rem}.steps-vertical .step-item:before{top:var(--tblr-steps-dot-offset);left:0;transform:translate(0)}.steps-vertical .step-item:not(:last-child):after{position:absolute;content:"";transform:translate(-50%);top:var(--tblr-steps-dot-offset);left:calc(var(--tblr-steps-dot-size) * .5);width:var(--tblr-steps-border-width);height:calc(100% + 1rem)}@keyframes status-pulsate-main{40%{transform:scale(1.25)}60%{transform:scale(1.25)}}@keyframes status-pulsate-secondary{10%{transform:scale(1)}30%{transform:scale(3)}80%{transform:scale(3)}to{transform:scale(1)}}@keyframes status-pulsate-tertiary{25%{transform:scale(1)}80%{transform:scale(3);opacity:0}to{transform:scale(3);opacity:0}}.status{--tblr-status-height: 1.5rem;--tblr-status-color: #6b7280;--tblr-status-color-rgb: 107, 114, 128;display:inline-flex;align-items:center;height:var(--tblr-status-height);padding:.25rem .75rem;gap:.5rem;color:var(--tblr-status-color);background:rgba(var(--tblr-status-color-rgb),.1);font-size:.875rem;text-transform:none;letter-spacing:normal;border-radius:100rem;font-weight:var(--tblr-font-weight-medium);line-height:1;margin:0}.status .status-dot{background:var(--tblr-status-color)}.status .icon{font-size:1.25rem}.status-lite{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)!important;background:transparent!important;color:var(--tblr-body-color)!important}.status-primary{--tblr-status-color: #00857D;--tblr-status-color-rgb: 0, 133, 125}.status-secondary{--tblr-status-color: #6b7280;--tblr-status-color-rgb: 107, 114, 128}.status-success{--tblr-status-color: #2fb344;--tblr-status-color-rgb: 47, 179, 68}.status-info{--tblr-status-color: #4299e1;--tblr-status-color-rgb: 66, 153, 225}.status-warning{--tblr-status-color: #f59f00;--tblr-status-color-rgb: 245, 159, 0}.status-danger{--tblr-status-color: #d63939;--tblr-status-color-rgb: 214, 57, 57}.status-light{--tblr-status-color: #f9fafb;--tblr-status-color-rgb: 249, 250, 251}.status-dark{--tblr-status-color: #1f2937;--tblr-status-color-rgb: 31, 41, 55}.status-muted{--tblr-status-color: #6b7280;--tblr-status-color-rgb: 107, 114, 128}.status-blue{--tblr-status-color: #066fd1;--tblr-status-color-rgb: 6, 111, 209}.status-azure{--tblr-status-color: #4299e1;--tblr-status-color-rgb: 66, 153, 225}.status-indigo{--tblr-status-color: #4263eb;--tblr-status-color-rgb: 66, 99, 235}.status-purple{--tblr-status-color: #ae3ec9;--tblr-status-color-rgb: 174, 62, 201}.status-pink{--tblr-status-color: #d6336c;--tblr-status-color-rgb: 214, 51, 108}.status-red{--tblr-status-color: #d63939;--tblr-status-color-rgb: 214, 57, 57}.status-orange{--tblr-status-color: #f76707;--tblr-status-color-rgb: 247, 103, 7}.status-yellow{--tblr-status-color: #f59f00;--tblr-status-color-rgb: 245, 159, 0}.status-lime{--tblr-status-color: #74b816;--tblr-status-color-rgb: 116, 184, 22}.status-green{--tblr-status-color: #2fb344;--tblr-status-color-rgb: 47, 179, 68}.status-teal{--tblr-status-color: #0ca678;--tblr-status-color-rgb: 12, 166, 120}.status-cyan{--tblr-status-color: #17a2b8;--tblr-status-color-rgb: 23, 162, 184}.status-dot{--tblr-status-dot-color: var(--tblr-status-color, #6b7280);--tblr-status-size: .5rem;position:relative;display:inline-block;width:var(--tblr-status-size);height:var(--tblr-status-size);background:var(--tblr-status-dot-color);border-radius:100rem}.status-dot-animated:before{content:"";position:absolute;inset:0;z-index:0;background:inherit;border-radius:inherit;opacity:.6;animation:1s linear 2s backwards infinite status-pulsate-tertiary}.status-indicator{--tblr-status-indicator-size: 2.5rem;--tblr-status-indicator-color: var(--tblr-status-color, #6b7280);display:block;position:relative;width:var(--tblr-status-indicator-size);height:var(--tblr-status-indicator-size)}.status-indicator-circle{--tblr-status-circle-size: .75rem;position:absolute;left:50%;top:50%;margin:calc(var(--tblr-status-circle-size) / -2) 0 0 calc(var(--tblr-status-circle-size) / -2);width:var(--tblr-status-circle-size);height:var(--tblr-status-circle-size);border-radius:100rem;background:var(--tblr-status-color)}.status-indicator-circle:nth-child(1){z-index:3}.status-indicator-circle:nth-child(2){z-index:2;opacity:.1}.status-indicator-circle:nth-child(3){z-index:1;opacity:.3}.status-indicator-animated .status-indicator-circle:nth-child(1){animation:2s linear 1s infinite backwards status-pulsate-main}.status-indicator-animated .status-indicator-circle:nth-child(2){animation:2s linear 1s infinite backwards status-pulsate-secondary}.status-indicator-animated .status-indicator-circle:nth-child(3){animation:2s linear 1s infinite backwards status-pulsate-tertiary}.switch-icon{display:inline-block;line-height:1;border:0;padding:0;background:transparent;width:1.25rem;height:1.25rem;vertical-align:bottom;position:relative;cursor:pointer}.switch-icon.disabled{pointer-events:none;opacity:.4}.switch-icon:focus{outline:none}.switch-icon svg{display:block;width:100%;height:100%}.switch-icon .switch-icon-a,.switch-icon .switch-icon-b{display:block;width:100%;height:100%}.switch-icon .switch-icon-a{opacity:1}.switch-icon .switch-icon-b{position:absolute;top:0;left:0;opacity:0}.switch-icon.active .switch-icon-a{opacity:0}.switch-icon.active .switch-icon-b{opacity:1}.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:opacity .5s}@media(prefers-reduced-motion:reduce){.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:opacity .5s,transform 0s .5s}@media(prefers-reduced-motion:reduce){.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-b{transform:scale(1.5)}.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:opacity 0s,transform .5s}@media(prefers-reduced-motion:reduce){.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:none}}.switch-icon-scale.active .switch-icon-b{transform:scale(1)}.switch-icon-flip{perspective:10em}.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{backface-visibility:hidden;transform-style:preserve-3d;transition:opacity 0s .2s,transform .4s ease-in-out}@media(prefers-reduced-motion:reduce){.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{transition:none}}.switch-icon-flip .switch-icon-a{opacity:1;transform:rotateY(0)}.switch-icon-flip .switch-icon-b{opacity:1;transform:rotateY(-180deg)}.switch-icon-flip.active .switch-icon-a{opacity:1;transform:rotateY(180deg)}.switch-icon-flip.active .switch-icon-b{opacity:1;transform:rotateY(0)}.switch-icon-slide-up,.switch-icon-slide-left,.switch-icon-slide-start,.switch-icon-slide-right,.switch-icon-slide-end,.switch-icon-slide-down{overflow:hidden}.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-start .switch-icon-a,.switch-icon-slide-start .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-end .switch-icon-a,.switch-icon-slide-end .switch-icon-b,.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b{transition:opacity .3s,transform .3s}@media(prefers-reduced-motion:reduce){.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-start .switch-icon-a,.switch-icon-slide-start .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-end .switch-icon-a,.switch-icon-slide-end .switch-icon-b,.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b{transition:none}}.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-start .switch-icon-a,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-end .switch-icon-a,.switch-icon-slide-down .switch-icon-a{transform:translateY(0)}.switch-icon-slide-up .switch-icon-b,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-start .switch-icon-b,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-end .switch-icon-b,.switch-icon-slide-down .switch-icon-b{transform:translateY(100%)}.switch-icon-slide-up.active .switch-icon-a,.switch-icon-slide-left.active .switch-icon-a,.switch-icon-slide-start.active .switch-icon-a,.switch-icon-slide-right.active .switch-icon-a,.switch-icon-slide-end.active .switch-icon-a,.switch-icon-slide-down.active .switch-icon-a{transform:translateY(-100%)}.switch-icon-slide-up.active .switch-icon-b,.switch-icon-slide-left.active .switch-icon-b,.switch-icon-slide-start.active .switch-icon-b,.switch-icon-slide-right.active .switch-icon-b,.switch-icon-slide-end.active .switch-icon-b,.switch-icon-slide-down.active .switch-icon-b{transform:translateY(0)}.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-start .switch-icon-a{transform:translate(0)}.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-start .switch-icon-b{transform:translate(100%)}.switch-icon-slide-left.active .switch-icon-a,.switch-icon-slide-start.active .switch-icon-a{transform:translate(-100%)}.switch-icon-slide-left.active .switch-icon-b,.switch-icon-slide-start.active .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-end .switch-icon-a{transform:translate(0)}.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-end .switch-icon-b{transform:translate(-100%)}.switch-icon-slide-right.active .switch-icon-a,.switch-icon-slide-end.active .switch-icon-a{transform:translate(100%)}.switch-icon-slide-right.active .switch-icon-b,.switch-icon-slide-end.active .switch-icon-b{transform:translate(0)}.switch-icon-slide-down .switch-icon-a{transform:translateY(0)}.switch-icon-slide-down .switch-icon-b{transform:translateY(-100%)}.switch-icon-slide-down.active .switch-icon-a{transform:translateY(100%)}.switch-icon-slide-down.active .switch-icon-b{transform:translateY(0)}.table thead th,.markdown>table thead th{background:var(--tblr-bg-surface-tertiary);font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-top:.5rem;padding-bottom:.5rem;white-space:nowrap}@media print{.table thead th,.markdown>table thead th{background:transparent}}.table-responsive .table,.table-responsive .markdown>table{margin-bottom:0}.table-responsive+.card-footer{border-top:0}.table-transparent thead th{background:transparent}.table-nowrap>:not(caption)>*>*{white-space:nowrap}.table-vcenter>:not(caption)>*>*{vertical-align:middle}.table-center>:not(caption)>*>*{text-align:center}.td-truncate{max-width:1px;width:100%}.table-mobile{display:block}.table-mobile thead{display:none}.table-mobile tbody,.table-mobile tr{display:flex;flex-direction:column}.table-mobile td{display:block;padding:.5rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile .btn{display:block}@media(max-width:575.98px){.table-mobile-sm{display:block}.table-mobile-sm thead{display:none}.table-mobile-sm tbody,.table-mobile-sm tr{display:flex;flex-direction:column}.table-mobile-sm td{display:block;padding:.5rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-sm td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-sm tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-sm .btn{display:block}}@media(max-width:767.98px){.table-mobile-md{display:block}.table-mobile-md thead{display:none}.table-mobile-md tbody,.table-mobile-md tr{display:flex;flex-direction:column}.table-mobile-md td{display:block;padding:.5rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-md td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-md tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-md .btn{display:block}}@media(max-width:991.98px){.table-mobile-lg{display:block}.table-mobile-lg thead{display:none}.table-mobile-lg tbody,.table-mobile-lg tr{display:flex;flex-direction:column}.table-mobile-lg td{display:block;padding:.5rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-lg td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-lg tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-lg .btn{display:block}}@media(max-width:1199.98px){.table-mobile-xl{display:block}.table-mobile-xl thead{display:none}.table-mobile-xl tbody,.table-mobile-xl tr{display:flex;flex-direction:column}.table-mobile-xl td{display:block;padding:.5rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xl td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xl .btn{display:block}}@media(max-width:1399.98px){.table-mobile-xxl{display:block}.table-mobile-xxl thead{display:none}.table-mobile-xxl tbody,.table-mobile-xxl tr{display:flex;flex-direction:column}.table-mobile-xxl td{display:block;padding:.5rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xxl td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xxl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xxl .btn{display:block}}.table-sort{font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;border:0;background:inherit;display:block;width:100%;text-align:inherit;transition:color .3s}@media(prefers-reduced-motion:reduce){.table-sort{transition:none}}.table-sort{margin:-.5rem;padding:.5rem}.table-sort:hover,.table-sort.asc,.table-sort.desc{color:var(--tblr-body-color)}.table-sort:after{content:"";display:inline-flex;width:1rem;height:1rem;vertical-align:bottom;mask-image:url("data:image/svg+xml,");background:currentColor;margin-left:.25rem}.table-sort.asc:after{mask-image:url("data:image/svg+xml,")}.table-sort.desc:after{mask-image:url("data:image/svg+xml,")}.table-borderless thead th{background:transparent}.table-selectable tbody tr .on-checked{display:none}.table-selectable tbody tr .on-unchecked{display:initial}.table-selectable tbody tr:has(.table-selectable-check:checked){background-color:var(--tblr-active-bg)}.table-selectable tbody tr:has(.table-selectable-check:checked) .on-checked{display:initial}.table-selectable tbody tr:has(.table-selectable-check:checked) .on-unchecked{display:none}.tag{--tblr-tag-height: 1.5rem;border:1px solid var(--tblr-border-color);display:inline-flex;align-items:center;height:var(--tblr-tag-height);border-radius:var(--tblr-border-radius);padding:0 .5rem;background:var(--tblr-bg-surface);box-shadow:var(--tblr-shadow-input);gap:.5rem}.tag .btn-close{margin-right:-.25rem;margin-left:-.125rem;padding:0;width:1rem;height:1rem;font-size:.5rem}.tag-badge{--tblr-badge-font-size: .625rem;--tblr-badge-padding-x: .25rem;--tblr-badge-padding-y: .125rem;margin-right:-.25rem}.tag-avatar,.tag-flag,.tag-payment,.tag-icon,.tag-check{margin-left:-.25rem}.tag-icon{color:var(--tblr-secondary);margin-right:-.125rem;width:1rem;height:1rem}.tag-check{width:1rem;height:1rem;background-size:1rem}.tags-list{--tblr-list-gap: .5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.toast{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);box-shadow:#1f29370a 0 2px 4px}.toast .toast-header{user-select:none}.toast button[data-bs-dismiss=toast]{outline:none}.toast-primary{--tblr-toast-color: #00857D}.toast-secondary{--tblr-toast-color: #6b7280}.toast-success{--tblr-toast-color: #2fb344}.toast-info{--tblr-toast-color: #4299e1}.toast-warning{--tblr-toast-color: #f59f00}.toast-danger{--tblr-toast-color: #d63939}.toast-light{--tblr-toast-color: #f9fafb}.toast-dark{--tblr-toast-color: #1f2937}.toast-muted{--tblr-toast-color: #6b7280}.toast-blue{--tblr-toast-color: #066fd1}.toast-azure{--tblr-toast-color: #4299e1}.toast-indigo{--tblr-toast-color: #4263eb}.toast-purple{--tblr-toast-color: #ae3ec9}.toast-pink{--tblr-toast-color: #d6336c}.toast-red{--tblr-toast-color: #d63939}.toast-orange{--tblr-toast-color: #f76707}.toast-yellow{--tblr-toast-color: #f59f00}.toast-lime{--tblr-toast-color: #74b816}.toast-green{--tblr-toast-color: #2fb344}.toast-teal{--tblr-toast-color: #0ca678}.toast-cyan{--tblr-toast-color: #17a2b8}.toolbar{display:flex;flex-wrap:nowrap;flex-shrink:0;margin:0 -.5rem}.toolbar>*{margin:0 .5rem}.tracking{--tblr-tracking-height: 1.5rem;--tblr-tracking-gap-width: .125rem;--tblr-tracking-block-border-radius: var(--tblr-border-radius);display:flex;gap:var(--tblr-tracking-gap-width)}.tracking-squares{--tblr-tracking-block-border-radius: var(--tblr-border-radius-sm)}.tracking-squares .tracking-block{height:auto}.tracking-squares .tracking-block:before{content:"";display:block;padding-top:100%}.tracking-block{flex:1;border-radius:var(--tblr-tracking-block-border-radius);height:var(--tblr-tracking-height);min-width:.25rem;background:var(--tblr-border-color)}.timeline{--tblr-timeline-icon-size: 2.5rem;position:relative;list-style:none;padding:0}.timeline-event{position:relative}.timeline-event:not(:last-child){margin-bottom:var(--tblr-page-padding)}.timeline-event:not(:last-child):before{content:"";position:absolute;top:var(--tblr-timeline-icon-size);left:calc(var(--tblr-timeline-icon-size) / 2);bottom:calc(-1 * var(--tblr-page-padding));width:var(--tblr-border-width);background-color:var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.timeline-event-icon{position:absolute;display:flex;align-items:center;justify-content:center;width:var(--tblr-timeline-icon-size, 2.5rem);height:var(--tblr-timeline-icon-size, 2.5rem);background:var(--tblr-bg-surface-secondary);color:var(--tblr-secondary);border-radius:var(--tblr-border-radius);z-index:5}.timeline-event-card{margin-left:calc(var(--tblr-timeline-icon-size, 2.5rem) + var(--tblr-page-padding))}.timeline-simple .timeline-event-icon{display:none}.timeline-simple .timeline-event-card{margin-left:0}.hr-text{display:flex;align-items:center;margin:2rem 0;font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);height:1px}.hr-text:after,.hr-text:before{flex:1 1 auto;height:1px;background-color:var(--tblr-border-color)}.hr-text:before{content:"";margin-right:.5rem}.hr-text:after{content:"";margin-left:.5rem}.hr-text>*:first-child{padding-right:.5rem;padding-left:0;color:var(--tblr-secondary)}.hr-text.hr-text-left:before,.hr-text.hr-text-start:before{content:none}.hr-text.hr-text-left>*:first-child,.hr-text.hr-text-start>*:first-child{padding-right:.5rem;padding-left:.5rem}.hr-text.hr-text-right:before,.hr-text.hr-text-end:before{content:""}.hr-text.hr-text-right:after,.hr-text.hr-text-end:after{content:none}.hr-text.hr-text-right>*:first-child,.hr-text.hr-text-end>*:first-child{padding-right:0;padding-left:.5rem}.card>.hr-text{margin:0}.hr-text-spaceless{margin:-.5rem 0}.lead{color:var(--tblr-secondary);font-size:inherit}a{text-decoration-skip-ink:auto;color:color-mix(in srgb,transparent,var(--tblr-link-color) var(--tblr-link-opacity, 100%))}a:hover{color:color-mix(in srgb,transparent,var(--tblr-link-hover-color) var(--tblr-link-opacity, 100%))}h1 a,h2 a,h3 a,.field-group h2 a,h4 a,h5 a,h6 a,.h1 a,.h2 a,.h3 a,.h4 a,.h5 a,.h6 a,h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover,.h1 a:hover,.h2 a:hover,.h3 a:hover,.h4 a:hover,.h5 a:hover,.h6 a:hover{color:inherit}h1,.h1{font-size:var(--tblr-font-size-h1);line-height:var(--tblr-line-height-h1)}h2,.h2{font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h2)}h3,.field-group h2,.field-group .h2,.h3{font-size:var(--tblr-font-size-h3);line-height:var(--tblr-line-height-h3)}h4,.h4{font-size:var(--tblr-font-size-h4);line-height:var(--tblr-line-height-h4)}h5,.h5{font-size:var(--tblr-font-size-h5);line-height:var(--tblr-line-height-h5)}h6,.h6{font-size:var(--tblr-font-size-h6);line-height:var(--tblr-line-height-h6)}.fs-base{font-size:var(--tblr-body-font-size)}strong,.strong,b{font-weight:var(--tblr-font-weight-bold)}blockquote{padding:1rem;border-left:2px var(--tblr-border-style) var(--tblr-border-color)}blockquote p{margin-bottom:1rem}blockquote cite{display:block;text-align:right}blockquote cite:before{content:"\2014 "}ul,ol{padding-left:1.5rem}hr,.hr{margin:2rem 0}dl dd:last-child{margin-bottom:0}pre{--tblr-scrollbar-color: var(--tblr-light);padding:1rem;background:var(--tblr-bg-surface-dark);color:var(--tblr-light);border-radius:var(--tblr-border-radius);line-height:1.4285714286}pre{scrollbar-color:color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 20%,transparent) transparent}pre::-webkit-scrollbar{width:1rem;height:1rem;transition:background .3s}@media(prefers-reduced-motion:reduce){pre::-webkit-scrollbar{transition:none}}pre::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 20%,transparent)}pre::-webkit-scrollbar-track{background:transparent}pre:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 40%,transparent)}pre::-webkit-scrollbar-corner{background:transparent}pre code{background:transparent;padding:0}code{background:var(--tblr-code-bg);padding:2px 4px;border-radius:var(--tblr-border-radius)}abbr{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}kbd,.kbd{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);display:inline-block;box-sizing:border-box;max-width:100%;font-size:var(--tblr-font-size-h5);font-weight:var(--tblr-font-weight-medium);line-height:1;vertical-align:baseline;border-radius:var(--tblr-border-radius)}img{max-width:100%;height:auto}.list-unstyled{margin-left:0}::selection,.text-selected{background-color:color-mix(in srgb,var(--tblr-primary) 10%,transparent)}.text-selected{display:inline-block}[class^=link-].disabled,[class*=" link-"].disabled{color:var(--tblr-disabled-color)!important;pointer-events:none}a:hover:has(.icon){text-decoration:none}.link-hoverable{border-radius:var(--tblr-border-radius);transition:background-color .15s ease-in-out}.link-hoverable:hover{text-decoration:none;color:var(--tblr-primary);background:color-mix(in srgb,var(--tblr-secondary) 4%,transparent)}.subheader{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.mention{display:inline-block;box-shadow:var(--tblr-shadow-border);border-radius:var(--tblr-border-radius-pill);line-height:1.3333333333em;font-size:.8571428571em;color:var(--tblr-body-color);background:var(--tblr-bg-surface-tertiary);padding:.1666666667em .6666666667em;font-weight:var(--tblr-font-weight-medium)}a.mention{cursor:pointer}a.mention:hover,a.mention.hover{background:var(--tblr-bg-surface-secondary);text-decoration:underline}.mention-avatar,.mention-app,.mention-color{width:1.1666666667em;height:1.1666666667em;border-radius:var(--tblr-border-radius-pill);margin:-.1666666667em .3333333333em 0 -.3333333333em;display:inline-flex;background:no-repeat center center/cover;box-shadow:var(--tblr-shadow-border);vertical-align:middle;text-align:center}.mention-app{box-shadow:none;background:none;border-radius:0}.mention-count{color:var(--tblr-secondary);margin-left:.6666666667em}.text-incorrect{background:color-mix(in srgb,var(--tblr-red) 4%,transparent);text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:var(--tblr-red)}.text-correct{background:color-mix(in srgb,var(--tblr-green) 4%,transparent);text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:var(--tblr-green)}.steps{--tblr-steps-padding: 2rem;--tblr-steps-item-size: 1.5rem;margin-left:1rem;padding-left:var(--tblr-steps-padding);counter-reset:step;border-left:1px solid var(--tblr-border-color);margin-bottom:2rem}.steps h3,.steps .field-group h2,.field-group .steps h2,.steps .field-group .h2,.field-group .steps .h2,.steps .h3{counter-increment:step}.steps h3:not(:first-child),.steps .field-group h2:not(:first-child),.field-group .steps h2:not(:first-child),.steps .field-group .h2:not(:first-child),.field-group .steps .h2:not(:first-child),.steps .h3:not(:first-child){margin-top:2.5rem!important}.steps h3:before,.steps .field-group h2:before,.field-group .steps h2:before,.steps .field-group .h2:before,.field-group .steps .h2:before,.steps .h3:before{content:counter(step);display:inline-block;position:absolute;margin-top:1px;margin-left:calc(-1 * var(--tblr-steps-padding) - var(--tblr-steps-item-size) / 2);width:var(--tblr-steps-item-size);height:var(--tblr-steps-item-size);text-align:center;color:var(--tblr-body-color);border:1px solid var(--tblr-border-color);background:var(--tblr-bg-surface);border-radius:var(--tblr-border-radius);line-height:calc(var(--tblr-steps-item-size) - 2px);font-size:var(--tblr-font-size-h4);font-weight:var(--tblr-font-weight-bold)}.steps>:last-child{margin-bottom:0}.callout{margin-bottom:1.5rem;border:1px solid var(--tblr-primary-200);border-radius:var(--tblr-border-radius);padding:.5rem 1rem;background:var(--tblr-primary-lt)}.callout>:last-child{margin-bottom:0}.chart{display:block;min-height:10rem}.chart text{font-family:inherit}.chart-sm{height:2.5rem}.chart-lg{height:15rem}.chart-square{height:5.75rem}.chart-sparkline{position:relative;width:4rem;height:2.5rem;line-height:1;min-height:0!important}.chart-sparkline-sm{height:1.5rem}.chart-sparkline-square{width:2.5rem}.chart-sparkline-wide{width:6rem}.chart-sparkline-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.625rem}.chart-sparkline-label .icon{width:1rem;height:1rem;font-size:1rem}.offcanvas-header{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.offcanvas-footer{padding:1.5rem}.offcanvas-title{font-size:1rem;font-weight:var(--tblr-font-weight-medium);line-height:1.5rem}.offcanvas-narrow{width:20rem}.chat-bubbles{display:flex;flex-direction:column;gap:1rem}.chat-bubble{background:var(--tblr-bg-surface-secondary);border-radius:var(--tblr-border-radius-lg);padding:1rem;position:relative}.chat-bubble-me{background-color:var(--tblr-primary-lt);box-shadow:none}.chat-bubble-title{margin-bottom:.25rem}.chat-bubble-author{font-weight:600}.chat-bubble-date{color:var(--tblr-secondary)}.chat-bubble-body>*:last-child{margin-bottom:0}.signature{--tblr-signature-padding: var(--tblr-spacer-1);--tblr-signature-border-radius: var(--tblr-border-radius);border:var(--tblr-border-width) solid var(--tblr-border-color);padding:var(--tblr-signature-padding);border-radius:var(--tblr-border-radius)}.signature-canvas{border:var(--tblr-border-width) dashed var(--tblr-border-color);border-radius:calc(var(--tblr-signature-border-radius) - var(--tblr-signature-padding));display:block;cursor:crosshair;width:100%}.clearfix:after{display:block;clear:both;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--tblr-border-width);min-height:1em;background-color:currentcolor;opacity:.16}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!important}.visually-hidden *,.visually-hidden-focusable:not(:focus):not(:focus-within) *{overflow:hidden!important}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--tblr-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--tblr-aspect-ratio: 100%}.ratio-2x1{--tblr-aspect-ratio: 50%}.ratio-1x2{--tblr-aspect-ratio: 200%}.ratio-3x1{--tblr-aspect-ratio: 33.3333333333%}.ratio-1x3{--tblr-aspect-ratio: 300%}.ratio-4x1{--tblr-aspect-ratio: 25%}.ratio-1x4{--tblr-aspect-ratio: 400%}.ratio-4x3{--tblr-aspect-ratio: 75%}.ratio-3x4{--tblr-aspect-ratio: 133.3333333333%}.ratio-16x9{--tblr-aspect-ratio: 56.25%}.ratio-9x16{--tblr-aspect-ratio: 177.7777777778%}.ratio-21x9{--tblr-aspect-ratio: 42.8571428571%}.ratio-9x21{--tblr-aspect-ratio: 233.3333333333%}.focus-ring:focus{outline:0;box-shadow:var(--tblr-focus-ring-x, 0) var(--tblr-focus-ring-y, 0) var(--tblr-focus-ring-blur, 0) var(--tblr-focus-ring-width) var(--tblr-focus-ring-color)}.bg-white-overlay{color:#fff;background-color:#f9fafb3d}.bg-dark-overlay{color:#fff;background-color:#1f29373d}.bg-cover{background-repeat:no-repeat;background-size:cover;background-position:center}.bg-primary{background-color:color-mix(in srgb,var(--tblr-primary) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-primary-lt{color:color-mix(in srgb,var(--tblr-primary) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-primary-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-primary{border-color:color-mix(in srgb,var(--tblr-primary) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-primary{--tblr-gradient-from: var(--tblr-primary)}.bg-gradient-to-primary{--tblr-gradient-to: var(--tblr-primary)}.bg-gradient-via-primary{--tblr-gradient-via: var(--tblr-primary);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-primary{color:#f9fafb!important;background-color:RGBA(var(--tblr-primary-rgb),var(--tblr-bg-opacity, 1))!important}.link-primary{color:color-mix(in srgb,var(--tblr-primary) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-primary) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-primary:hover,.link-primary:focus{color:RGBA(0,106,100,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(0,106,100,var(--tblr-link-underline-opacity, 1))!important}.bg-secondary{background-color:color-mix(in srgb,var(--tblr-secondary) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-secondary-lt{color:color-mix(in srgb,var(--tblr-secondary) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-secondary-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-secondary{border-color:color-mix(in srgb,var(--tblr-secondary) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-secondary{--tblr-gradient-from: var(--tblr-secondary)}.bg-gradient-to-secondary{--tblr-gradient-to: var(--tblr-secondary)}.bg-gradient-via-secondary{--tblr-gradient-via: var(--tblr-secondary);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-secondary,.text-bg-gray{color:#f9fafb!important;background-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-bg-opacity, 1))!important}.link-secondary{color:color-mix(in srgb,var(--tblr-secondary) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-secondary) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-secondary:hover,.link-secondary:focus{color:RGBA(86,91,102,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(86,91,102,var(--tblr-link-underline-opacity, 1))!important}.bg-success{background-color:color-mix(in srgb,var(--tblr-success) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-success-lt{color:color-mix(in srgb,var(--tblr-success) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-success-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-success{border-color:color-mix(in srgb,var(--tblr-success) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-success{--tblr-gradient-from: var(--tblr-success)}.bg-gradient-to-success{--tblr-gradient-to: var(--tblr-success)}.bg-gradient-via-success{--tblr-gradient-via: var(--tblr-success);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-success{color:#f9fafb!important;background-color:RGBA(var(--tblr-success-rgb),var(--tblr-bg-opacity, 1))!important}.link-success{color:color-mix(in srgb,var(--tblr-success) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-success) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-success:hover,.link-success:focus{color:RGBA(38,143,54,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity, 1))!important}.bg-info{background-color:color-mix(in srgb,var(--tblr-info) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-info-lt{color:color-mix(in srgb,var(--tblr-info) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-info-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-info{border-color:color-mix(in srgb,var(--tblr-info) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-info{--tblr-gradient-from: var(--tblr-info)}.bg-gradient-to-info{--tblr-gradient-to: var(--tblr-info)}.bg-gradient-via-info{--tblr-gradient-via: var(--tblr-info);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-info{color:#f9fafb!important;background-color:RGBA(var(--tblr-info-rgb),var(--tblr-bg-opacity, 1))!important}.link-info{color:color-mix(in srgb,var(--tblr-info) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-info) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-info:hover,.link-info:focus{color:RGBA(53,122,180,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity, 1))!important}.bg-warning{background-color:color-mix(in srgb,var(--tblr-warning) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-warning-lt{color:color-mix(in srgb,var(--tblr-warning) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-warning-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-warning{border-color:color-mix(in srgb,var(--tblr-warning) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-warning{--tblr-gradient-from: var(--tblr-warning)}.bg-gradient-to-warning{--tblr-gradient-to: var(--tblr-warning)}.bg-gradient-via-warning{--tblr-gradient-via: var(--tblr-warning);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-warning{color:#f9fafb!important;background-color:RGBA(var(--tblr-warning-rgb),var(--tblr-bg-opacity, 1))!important}.link-warning{color:color-mix(in srgb,var(--tblr-warning) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-warning) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-warning:hover,.link-warning:focus{color:RGBA(196,127,0,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(196,127,0,var(--tblr-link-underline-opacity, 1))!important}.bg-danger{background-color:color-mix(in srgb,var(--tblr-danger) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-danger-lt{color:color-mix(in srgb,var(--tblr-danger) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-danger-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-danger{border-color:color-mix(in srgb,var(--tblr-danger) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-danger{--tblr-gradient-from: var(--tblr-danger)}.bg-gradient-to-danger{--tblr-gradient-to: var(--tblr-danger)}.bg-gradient-via-danger{--tblr-gradient-via: var(--tblr-danger);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-danger{color:#f9fafb!important;background-color:RGBA(var(--tblr-danger-rgb),var(--tblr-bg-opacity, 1))!important}.link-danger{color:color-mix(in srgb,var(--tblr-danger) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-danger) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-danger:hover,.link-danger:focus{color:RGBA(171,46,46,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity, 1))!important}.bg-light{background-color:color-mix(in srgb,var(--tblr-light) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-light-lt{color:color-mix(in srgb,var(--tblr-light) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-light-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-light{border-color:color-mix(in srgb,var(--tblr-light) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-light{--tblr-gradient-from: var(--tblr-light)}.bg-gradient-to-light{--tblr-gradient-to: var(--tblr-light)}.bg-gradient-via-light{--tblr-gradient-via: var(--tblr-light);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-light,.text-bg-white{color:#1f2937!important;background-color:RGBA(var(--tblr-light-rgb),var(--tblr-bg-opacity, 1))!important}.link-light{color:color-mix(in srgb,var(--tblr-light) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-light) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-light:hover,.link-light:focus{color:RGBA(250,251,252,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(250,251,252,var(--tblr-link-underline-opacity, 1))!important}.bg-dark{background-color:color-mix(in srgb,var(--tblr-dark) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-dark-lt{color:color-mix(in srgb,var(--tblr-dark) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-dark-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-dark{border-color:color-mix(in srgb,var(--tblr-dark) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-dark{--tblr-gradient-from: var(--tblr-dark)}.bg-gradient-to-dark{--tblr-gradient-to: var(--tblr-dark)}.bg-gradient-via-dark{--tblr-gradient-via: var(--tblr-dark);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-dark,.text-bg-black{color:#f9fafb!important;background-color:RGBA(var(--tblr-dark-rgb),var(--tblr-bg-opacity, 1))!important}.link-dark{color:color-mix(in srgb,var(--tblr-dark) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-dark) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-dark:hover,.link-dark:focus{color:RGBA(25,33,44,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(25,33,44,var(--tblr-link-underline-opacity, 1))!important}.bg-muted{background-color:color-mix(in srgb,var(--tblr-muted) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-muted-lt{color:color-mix(in srgb,var(--tblr-muted) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-muted-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-muted{border-color:color-mix(in srgb,var(--tblr-muted) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-muted{--tblr-gradient-from: var(--tblr-muted)}.bg-gradient-to-muted{--tblr-gradient-to: var(--tblr-muted)}.bg-gradient-via-muted{--tblr-gradient-via: var(--tblr-muted);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-muted{color:#f9fafb!important;background-color:RGBA(var(--tblr-muted-rgb),var(--tblr-bg-opacity, 1))!important}.link-muted{color:color-mix(in srgb,var(--tblr-muted) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-muted) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-muted:hover,.link-muted:focus{color:RGBA(86,91,102,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(86,91,102,var(--tblr-link-underline-opacity, 1))!important}.bg-blue{background-color:color-mix(in srgb,var(--tblr-blue) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-blue-lt{color:color-mix(in srgb,var(--tblr-blue) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-blue-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-blue{border-color:color-mix(in srgb,var(--tblr-blue) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-blue{--tblr-gradient-from: var(--tblr-blue)}.bg-gradient-to-blue{--tblr-gradient-to: var(--tblr-blue)}.bg-gradient-via-blue{--tblr-gradient-via: var(--tblr-blue);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-blue{color:#f9fafb!important;background-color:RGBA(var(--tblr-blue-rgb),var(--tblr-bg-opacity, 1))!important}.link-blue{color:color-mix(in srgb,var(--tblr-blue) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-blue) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-blue:hover,.link-blue:focus{color:RGBA(5,89,167,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(5,89,167,var(--tblr-link-underline-opacity, 1))!important}.bg-azure{background-color:color-mix(in srgb,var(--tblr-azure) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-azure-lt{color:color-mix(in srgb,var(--tblr-azure) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-azure-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-azure{border-color:color-mix(in srgb,var(--tblr-azure) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-azure{--tblr-gradient-from: var(--tblr-azure)}.bg-gradient-to-azure{--tblr-gradient-to: var(--tblr-azure)}.bg-gradient-via-azure{--tblr-gradient-via: var(--tblr-azure);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-azure{color:#f9fafb!important;background-color:RGBA(var(--tblr-azure-rgb),var(--tblr-bg-opacity, 1))!important}.link-azure{color:color-mix(in srgb,var(--tblr-azure) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-azure) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-azure:hover,.link-azure:focus{color:RGBA(53,122,180,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity, 1))!important}.bg-indigo{background-color:color-mix(in srgb,var(--tblr-indigo) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-indigo-lt{color:color-mix(in srgb,var(--tblr-indigo) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-indigo-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-indigo{border-color:color-mix(in srgb,var(--tblr-indigo) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-indigo{--tblr-gradient-from: var(--tblr-indigo)}.bg-gradient-to-indigo{--tblr-gradient-to: var(--tblr-indigo)}.bg-gradient-via-indigo{--tblr-gradient-via: var(--tblr-indigo);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-indigo{color:#f9fafb!important;background-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-bg-opacity, 1))!important}.link-indigo{color:color-mix(in srgb,var(--tblr-indigo) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-indigo) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-indigo:hover,.link-indigo:focus{color:RGBA(53,79,188,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(53,79,188,var(--tblr-link-underline-opacity, 1))!important}.bg-purple{background-color:color-mix(in srgb,var(--tblr-purple) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-purple-lt{color:color-mix(in srgb,var(--tblr-purple) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-purple-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-purple{border-color:color-mix(in srgb,var(--tblr-purple) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-purple{--tblr-gradient-from: var(--tblr-purple)}.bg-gradient-to-purple{--tblr-gradient-to: var(--tblr-purple)}.bg-gradient-via-purple{--tblr-gradient-via: var(--tblr-purple);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-purple{color:#f9fafb!important;background-color:RGBA(var(--tblr-purple-rgb),var(--tblr-bg-opacity, 1))!important}.link-purple{color:color-mix(in srgb,var(--tblr-purple) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-purple) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-purple:hover,.link-purple:focus{color:RGBA(139,50,161,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(139,50,161,var(--tblr-link-underline-opacity, 1))!important}.bg-pink{background-color:color-mix(in srgb,var(--tblr-pink) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-pink-lt{color:color-mix(in srgb,var(--tblr-pink) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-pink-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-pink{border-color:color-mix(in srgb,var(--tblr-pink) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-pink{--tblr-gradient-from: var(--tblr-pink)}.bg-gradient-to-pink{--tblr-gradient-to: var(--tblr-pink)}.bg-gradient-via-pink{--tblr-gradient-via: var(--tblr-pink);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-pink{color:#f9fafb!important;background-color:RGBA(var(--tblr-pink-rgb),var(--tblr-bg-opacity, 1))!important}.link-pink{color:color-mix(in srgb,var(--tblr-pink) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-pink) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-pink:hover,.link-pink:focus{color:RGBA(171,41,86,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(171,41,86,var(--tblr-link-underline-opacity, 1))!important}.bg-red{background-color:color-mix(in srgb,var(--tblr-red) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-red-lt{color:color-mix(in srgb,var(--tblr-red) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-red-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-red{border-color:color-mix(in srgb,var(--tblr-red) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-red{--tblr-gradient-from: var(--tblr-red)}.bg-gradient-to-red{--tblr-gradient-to: var(--tblr-red)}.bg-gradient-via-red{--tblr-gradient-via: var(--tblr-red);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-red{color:#f9fafb!important;background-color:RGBA(var(--tblr-red-rgb),var(--tblr-bg-opacity, 1))!important}.link-red{color:color-mix(in srgb,var(--tblr-red) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-red) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-red:hover,.link-red:focus{color:RGBA(171,46,46,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity, 1))!important}.bg-orange{background-color:color-mix(in srgb,var(--tblr-orange) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-orange-lt{color:color-mix(in srgb,var(--tblr-orange) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-orange-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-orange{border-color:color-mix(in srgb,var(--tblr-orange) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-orange{--tblr-gradient-from: var(--tblr-orange)}.bg-gradient-to-orange{--tblr-gradient-to: var(--tblr-orange)}.bg-gradient-via-orange{--tblr-gradient-via: var(--tblr-orange);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-orange{color:#f9fafb!important;background-color:RGBA(var(--tblr-orange-rgb),var(--tblr-bg-opacity, 1))!important}.link-orange{color:color-mix(in srgb,var(--tblr-orange) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-orange) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-orange:hover,.link-orange:focus{color:RGBA(198,82,6,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity, 1))!important}.bg-yellow{background-color:color-mix(in srgb,var(--tblr-yellow) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-yellow-lt{color:color-mix(in srgb,var(--tblr-yellow) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-yellow-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-yellow{border-color:color-mix(in srgb,var(--tblr-yellow) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-yellow{--tblr-gradient-from: var(--tblr-yellow)}.bg-gradient-to-yellow{--tblr-gradient-to: var(--tblr-yellow)}.bg-gradient-via-yellow{--tblr-gradient-via: var(--tblr-yellow);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-yellow{color:#f9fafb!important;background-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-bg-opacity, 1))!important}.link-yellow{color:color-mix(in srgb,var(--tblr-yellow) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-yellow) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-yellow:hover,.link-yellow:focus{color:RGBA(196,127,0,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(196,127,0,var(--tblr-link-underline-opacity, 1))!important}.bg-lime{background-color:color-mix(in srgb,var(--tblr-lime) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-lime-lt{color:color-mix(in srgb,var(--tblr-lime) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-lime-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-lime{border-color:color-mix(in srgb,var(--tblr-lime) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-lime{--tblr-gradient-from: var(--tblr-lime)}.bg-gradient-to-lime{--tblr-gradient-to: var(--tblr-lime)}.bg-gradient-via-lime{--tblr-gradient-via: var(--tblr-lime);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-lime{color:#f9fafb!important;background-color:RGBA(var(--tblr-lime-rgb),var(--tblr-bg-opacity, 1))!important}.link-lime{color:color-mix(in srgb,var(--tblr-lime) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-lime) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-lime:hover,.link-lime:focus{color:RGBA(93,147,18,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(93,147,18,var(--tblr-link-underline-opacity, 1))!important}.bg-green{background-color:color-mix(in srgb,var(--tblr-green) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-green-lt{color:color-mix(in srgb,var(--tblr-green) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-green-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-green{border-color:color-mix(in srgb,var(--tblr-green) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-green{--tblr-gradient-from: var(--tblr-green)}.bg-gradient-to-green{--tblr-gradient-to: var(--tblr-green)}.bg-gradient-via-green{--tblr-gradient-via: var(--tblr-green);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-green{color:#f9fafb!important;background-color:RGBA(var(--tblr-green-rgb),var(--tblr-bg-opacity, 1))!important}.link-green{color:color-mix(in srgb,var(--tblr-green) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-green) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-green:hover,.link-green:focus{color:RGBA(38,143,54,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity, 1))!important}.bg-teal{background-color:color-mix(in srgb,var(--tblr-teal) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-teal-lt{color:color-mix(in srgb,var(--tblr-teal) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-teal-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-teal{border-color:color-mix(in srgb,var(--tblr-teal) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-teal{--tblr-gradient-from: var(--tblr-teal)}.bg-gradient-to-teal{--tblr-gradient-to: var(--tblr-teal)}.bg-gradient-via-teal{--tblr-gradient-via: var(--tblr-teal);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-teal{color:#f9fafb!important;background-color:RGBA(var(--tblr-teal-rgb),var(--tblr-bg-opacity, 1))!important}.link-teal{color:color-mix(in srgb,var(--tblr-teal) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-teal) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-teal:hover,.link-teal:focus{color:RGBA(10,133,96,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(10,133,96,var(--tblr-link-underline-opacity, 1))!important}.bg-cyan{background-color:color-mix(in srgb,var(--tblr-cyan) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-cyan-lt{color:color-mix(in srgb,var(--tblr-cyan) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-cyan-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-cyan{border-color:color-mix(in srgb,var(--tblr-cyan) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-cyan{--tblr-gradient-from: var(--tblr-cyan)}.bg-gradient-to-cyan{--tblr-gradient-to: var(--tblr-cyan)}.bg-gradient-via-cyan{--tblr-gradient-via: var(--tblr-cyan);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-cyan{color:#f9fafb!important;background-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-bg-opacity, 1))!important}.link-cyan{color:color-mix(in srgb,var(--tblr-cyan) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-cyan) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-cyan:hover,.link-cyan:focus{color:RGBA(18,130,147,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(18,130,147,var(--tblr-link-underline-opacity, 1))!important}.bg-white{background-color:color-mix(in srgb,var(--tblr-white) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-white-lt{color:color-mix(in srgb,var(--tblr-white) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-white-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-white{border-color:color-mix(in srgb,var(--tblr-white) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-white{--tblr-gradient-from: var(--tblr-white)}.bg-gradient-to-white{--tblr-gradient-to: var(--tblr-white)}.bg-gradient-via-white{--tblr-gradient-via: var(--tblr-white);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-white{color:#1f2937!important;background-color:RGBA(var(--tblr-white-rgb),var(--tblr-bg-opacity, 1))!important}.link-white{color:color-mix(in srgb,var(--tblr-white) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-white) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-white:hover,.link-white:focus{color:RGBA(255,255,255,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(255,255,255,var(--tblr-link-underline-opacity, 1))!important}.text-primary{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-primary) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-primary-fg{color:var(--tblr-primary-fg)!important}.text-secondary{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-secondary) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-secondary-fg{color:var(--tblr-secondary-fg)!important}.text-success{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-success) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-success-fg{color:var(--tblr-success-fg)!important}.text-info{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-info) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-info-fg{color:var(--tblr-info-fg)!important}.text-warning{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-warning) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-warning-fg{color:var(--tblr-warning-fg)!important}.text-danger{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-danger) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-danger-fg{color:var(--tblr-danger-fg)!important}.text-light{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-light) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-light-fg{color:var(--tblr-light-fg)!important}.text-dark{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-dark) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-dark-fg{color:var(--tblr-dark-fg)!important}.text-muted{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-muted) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-muted-fg{color:var(--tblr-muted-fg)!important}.text-blue{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-blue) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-blue-fg{color:var(--tblr-blue-fg)!important}.text-azure{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-azure) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-azure-fg{color:var(--tblr-azure-fg)!important}.text-indigo{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-indigo) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-indigo-fg{color:var(--tblr-indigo-fg)!important}.text-purple{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-purple) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-purple-fg{color:var(--tblr-purple-fg)!important}.text-pink{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-pink) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-pink-fg{color:var(--tblr-pink-fg)!important}.text-red{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-red) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-red-fg{color:var(--tblr-red-fg)!important}.text-orange{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-orange) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-orange-fg{color:var(--tblr-orange-fg)!important}.text-yellow{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-yellow) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-yellow-fg{color:var(--tblr-yellow-fg)!important}.text-lime{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-lime) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-lime-fg{color:var(--tblr-lime-fg)!important}.text-green{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-green) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-green-fg{color:var(--tblr-green-fg)!important}.text-teal{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-teal) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-teal-fg{color:var(--tblr-teal-fg)!important}.text-cyan{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-cyan) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-cyan-fg{color:var(--tblr-cyan-fg)!important}.bg-gray-50{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-50) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-50-fg{color:var(--tblr-gray-50-fg)!important}.bg-gray-100{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-100) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-100-fg{color:var(--tblr-gray-100-fg)!important}.bg-gray-200{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-200) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-200-fg{color:var(--tblr-gray-200-fg)!important}.bg-gray-300{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-300) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-300-fg{color:var(--tblr-gray-300-fg)!important}.bg-gray-400{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-400) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-400-fg{color:var(--tblr-gray-400-fg)!important}.bg-gray-500{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-500) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-500-fg{color:var(--tblr-gray-500-fg)!important}.bg-gray-600{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-600) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-600-fg{color:var(--tblr-gray-600-fg)!important}.bg-gray-700{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-700) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-700-fg{color:var(--tblr-gray-700-fg)!important}.bg-gray-800{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-800) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-800-fg{color:var(--tblr-gray-800-fg)!important}.bg-gray-900{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-900) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-900-fg{color:var(--tblr-gray-900-fg)!important}.bg-gray-950{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-950) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-950-fg{color:var(--tblr-gray-950-fg)!important}.bg-x{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-x) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-x-fg{color:var(--tblr-x-fg)!important}.bg-facebook{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-facebook) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-facebook-fg{color:var(--tblr-facebook-fg)!important}.bg-twitter{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-twitter) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-twitter-fg{color:var(--tblr-twitter-fg)!important}.bg-linkedin{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-linkedin) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-linkedin-fg{color:var(--tblr-linkedin-fg)!important}.bg-google{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-google) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-google-fg{color:var(--tblr-google-fg)!important}.bg-youtube{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-youtube) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-youtube-fg{color:var(--tblr-youtube-fg)!important}.bg-vimeo{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-vimeo) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-vimeo-fg{color:var(--tblr-vimeo-fg)!important}.bg-dribbble{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-dribbble) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-dribbble-fg{color:var(--tblr-dribbble-fg)!important}.bg-github{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-github) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-github-fg{color:var(--tblr-github-fg)!important}.bg-instagram{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-instagram) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-instagram-fg{color:var(--tblr-instagram-fg)!important}.bg-pinterest{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-pinterest) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-pinterest-fg{color:var(--tblr-pinterest-fg)!important}.bg-vk{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-vk) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-vk-fg{color:var(--tblr-vk-fg)!important}.bg-rss{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-rss) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-rss-fg{color:var(--tblr-rss-fg)!important}.bg-flickr{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-flickr) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-flickr-fg{color:var(--tblr-flickr-fg)!important}.bg-bitbucket{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-bitbucket) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-bitbucket-fg{color:var(--tblr-bitbucket-fg)!important}.bg-tabler{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-tabler) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-tabler-fg{color:var(--tblr-tabler-fg)!important}.bg-inverted{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-bg-surface-inverted) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.bg-surface{background-color:var(--tblr-bg-surface)!important}.bg-surface-secondary{background-color:var(--tblr-bg-surface-secondary)!important}.bg-surface-tertiary{background-color:var(--tblr-bg-surface-tertiary)!important}.bg-surface-backdrop{background-color:color-mix(in srgb,var(--tblr-gray-800) 24%,transparent)!important}.scrollable{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.hover{overflow-y:hidden}.scrollable.hover>*{margin-top:-1px}.scrollable.hover:hover,.scrollable.hover:focus,.scrollable.hover:active{overflow:visible;overflow-y:auto}.touch .scrollable{overflow-y:auto!important}.scroll-x,.scroll-y{overflow:hidden;-webkit-overflow-scrolling:touch}.scroll-y{overflow-y:auto}.scroll-x{overflow-x:auto}.no-scroll{overflow:hidden}.w-0{width:0!important}.h-0{height:0!important}.w-1{width:.25rem!important}.h-1{height:.25rem!important}.w-2{width:.5rem!important}.h-2{height:.5rem!important}.w-3{width:1rem!important}.h-3{height:1rem!important}.w-4{width:1.5rem!important}.h-4{height:1.5rem!important}.w-5{width:2rem!important}.h-5{height:2rem!important}.w-6{width:2.5rem!important}.h-6{height:2.5rem!important}.w-auto{width:auto!important}.h-auto{height:auto!important}.w-px{width:1px!important}.h-px{height:1px!important}.w-full{width:100%!important}.h-full{height:100%!important}.opacity-0{opacity:0!important}.opacity-5{opacity:.05!important}.opacity-10{opacity:.1!important}.opacity-15{opacity:.15!important}.opacity-20{opacity:.2!important}.opacity-25{opacity:.25!important}.opacity-30{opacity:.3!important}.opacity-35{opacity:calc(35 / 100)!important}.opacity-40{opacity:.4!important}.opacity-45{opacity:.45!important}.opacity-50{opacity:.5!important}.opacity-55{opacity:.55!important}.opacity-60{opacity:.6!important}.opacity-65{opacity:.65!important}.opacity-70{opacity:calc(70 / 100)!important}.opacity-75{opacity:.75!important}.opacity-80{opacity:.8!important}.opacity-85{opacity:.85!important}.opacity-90{opacity:.9!important}.opacity-95{opacity:calc(95 / 100)!important}.opacity-100{opacity:1!important}.hover-shadow-sm:hover{box-shadow:0 .125rem .25rem #00000013!important}.hover-shadow:hover{box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px!important}.hover-shadow-lg:hover{box-shadow:0 1rem 3rem #0000002d!important}.hover-shadow-none:hover{box-shadow:none!important}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.hover-rotate-start,.hover-rotate-end,.hover-scale,.hover-elevate-down,.hover-elevate-up{transition:transform .3s ease}.hover-rotate-start:hover,.hover-rotate-end:hover,.hover-scale:hover,.hover-elevate-down:hover,.hover-elevate-up:hover{will-change:transform}.hover-elevate-up:hover{transform:translateY(-4px)}.hover-elevate-down:hover{transform:translateY(4px)}.hover-scale:hover{transform:scale(1.1)}.hover-rotate-end:hover{transform:rotate(4deg)}.hover-rotate-start:hover{transform:rotate(-4deg)}.ts-control{border:1px solid var(--tblr-border-color);padding:.5625rem 1rem;width:100%;overflow:hidden;position:relative;z-index:1;box-sizing:border-box;box-shadow:none;border-radius:var(--tblr-border-radius);display:flex;flex-wrap:wrap}.ts-wrapper.multi.has-items .ts-control{padding:calc(.5625rem - 1px + -0) 1rem calc(.5625rem - 4px + -0)}.full .ts-control{background-color:var(--tblr-bg-forms)}.disabled .ts-control,.disabled .ts-control *{cursor:default!important}.focus .ts-control{box-shadow:none}.ts-control>*{vertical-align:baseline;display:inline-block}.ts-wrapper.multi .ts-control>div{cursor:pointer;margin:0 3px 3px 0;padding:1px 5px;background:#efefef;color:#1f2937;border:0 solid #e5e7eb;overflow:auto}.ts-wrapper.multi .ts-control>div.active{background:#00857d;color:#fff;border:0 solid rgba(0,0,0,0)}.ts-wrapper.multi.disabled .ts-control>div,.ts-wrapper.multi.disabled .ts-control>div.active{color:#787878;background:#fff;border:0 solid white}.ts-control>input{flex:1 1 auto;min-width:7rem;display:inline-block!important;padding:0!important;min-height:0!important;max-height:none!important;max-width:100%!important;margin:0!important;text-indent:0!important;border:0 none!important;background:none!important;line-height:inherit!important;user-select:auto!important;box-shadow:none!important}.ts-control>input::-ms-clear{display:none}.ts-control>input:focus{outline:none!important}.has-items .ts-control>input{margin:0 4px!important}.ts-control.rtl{text-align:right}.ts-control.rtl.single .ts-control:after{left:calc(1rem + 5px);right:auto}.ts-control.rtl .ts-control>input{margin:0 4px 0 -2px!important}.disabled .ts-control{opacity:1;background-color:var(--tblr-bg-surface-secondary)}.input-hidden .ts-control>input{opacity:0;position:absolute;left:-10000px}.ts-dropdown{position:absolute;top:100%;left:0;width:100%;z-index:10;border:1px solid #d0d0d0;background:var(--tblr-bg-surface);margin:.25rem 0 0;border-top:0 none;box-sizing:border-box;box-shadow:0 1px 3px #0000001a;border-radius:0 0 var(--tblr-border-radius) var(--tblr-border-radius)}.ts-dropdown [data-selectable]{cursor:pointer;overflow:hidden}.ts-dropdown [data-selectable] .highlight{background:#ffed2866;border-radius:1px}.ts-dropdown .option,.ts-dropdown .optgroup-header,.ts-dropdown .no-results,.ts-dropdown .create{padding:3px 1rem}.ts-dropdown .option,.ts-dropdown [data-disabled],.ts-dropdown [data-disabled] [data-selectable].option{cursor:inherit;opacity:.5}.ts-dropdown [data-selectable].option{opacity:1;cursor:pointer}.ts-dropdown .optgroup:first-child .optgroup-header{border-top:0 none}.ts-dropdown .optgroup-header{color:#4b5563;background:var(--tblr-bg-surface);cursor:default}.ts-dropdown .active{background-color:rgba(var(--tblr-secondary-rgb),.08);color:inherit}.ts-dropdown .active.create{color:inherit}.ts-dropdown .create{color:#1f293780}.ts-dropdown .spinner{display:inline-block;width:30px;height:30px;margin:3px 1rem}.ts-dropdown .spinner:after{content:" ";display:block;width:24px;height:24px;margin:3px;border-radius:50%;border:5px solid #d0d0d0;border-color:#d0d0d0 transparent #d0d0d0 transparent;animation:lds-dual-ring 1.2s linear infinite}@keyframes lds-dual-ring{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ts-dropdown-content{overflow:hidden auto;max-height:200px;scroll-behavior:smooth}.ts-wrapper.plugin-drag_drop .ts-dragging{color:transparent!important}.ts-wrapper.plugin-drag_drop .ts-dragging>*{visibility:hidden!important}.plugin-checkbox_options:not(.rtl) .option input{margin-right:.5rem}.plugin-checkbox_options.rtl .option input{margin-left:.5rem}.plugin-clear_button{--ts-pr-clear-button: 1em}.plugin-clear_button .clear-button{opacity:0;position:absolute;top:50%;transform:translateY(-50%);right:calc(1rem - 5px);margin-right:0!important;background:transparent!important;transition:opacity .5s;cursor:pointer}.plugin-clear_button.form-select .clear-button,.plugin-clear_button.single .clear-button{right:max(var(--ts-pr-caret),1rem)}.plugin-clear_button.focus.has-items .clear-button,.plugin-clear_button:not(.disabled):hover.has-items .clear-button{opacity:1}.ts-wrapper .dropdown-header{position:relative;padding:6px 1rem;border-bottom:1px solid #d0d0d0;background:color-mix(var(--tblr-bg-surface),#d0d0d0,85%);border-radius:var(--tblr-border-radius) var(--tblr-border-radius) 0 0}.ts-wrapper .dropdown-header-close{position:absolute;right:1rem;top:50%;color:#1f2937;opacity:.4;margin-top:-12px;line-height:20px;font-size:20px!important}.ts-wrapper .dropdown-header-close:hover{color:#000}.plugin-dropdown_input.focus.dropdown-active .ts-control{box-shadow:none;border:1px solid var(--tblr-border-color);box-shadow:var(--tblr-shadow-input)}.plugin-dropdown_input .dropdown-input{border:1px solid #d0d0d0;border-width:0 0 1px;display:block;padding:.5625rem 1rem;box-shadow:none;width:100%;background:transparent}.plugin-dropdown_input.focus .ts-dropdown .dropdown-input{border-color:#80c2be;outline:0;box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.plugin-dropdown_input .items-placeholder{border:0 none!important;box-shadow:none!important;width:100%}.plugin-dropdown_input.has-items .items-placeholder,.plugin-dropdown_input.dropdown-active .items-placeholder{display:none!important}.ts-wrapper.plugin-input_autogrow.has-items .ts-control>input{min-width:0}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input{flex:none;min-width:4px}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::placeholder{color:transparent}.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content{display:flex}.ts-dropdown.plugin-optgroup_columns .optgroup{border-right:1px solid #f2f2f2;border-top:0 none;flex-grow:1;flex-basis:0;min-width:0}.ts-dropdown.plugin-optgroup_columns .optgroup:last-child{border-right:0 none}.ts-dropdown.plugin-optgroup_columns .optgroup:before{display:none}.ts-dropdown.plugin-optgroup_columns .optgroup-header{border-top:0 none}.ts-wrapper.plugin-remove_button .item{display:inline-flex;align-items:center}.ts-wrapper.plugin-remove_button .item .remove{color:inherit;text-decoration:none;vertical-align:middle;display:inline-block;padding:0 5px;border-radius:0 2px 2px 0;box-sizing:border-box}.ts-wrapper.plugin-remove_button .item .remove:hover{background:#0000000d}.ts-wrapper.plugin-remove_button.disabled .item .remove:hover{background:none}.ts-wrapper.plugin-remove_button .remove-single{position:absolute;right:0;top:0;font-size:23px}.ts-wrapper.plugin-remove_button:not(.rtl) .item{padding-right:0!important}.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove{border-left:1px solid #e5e7eb;margin-left:5px}.ts-wrapper.plugin-remove_button:not(.rtl) .item.active .remove{border-left-color:#0000}.ts-wrapper.plugin-remove_button:not(.rtl).disabled .item .remove{border-left-color:#fff}.ts-wrapper.plugin-remove_button.rtl .item{padding-left:0!important}.ts-wrapper.plugin-remove_button.rtl .item .remove{border-right:1px solid #e5e7eb;margin-right:5px}.ts-wrapper.plugin-remove_button.rtl .item.active .remove{border-right-color:#0000}.ts-wrapper.plugin-remove_button.rtl.disabled .item .remove{border-right-color:#fff}:root{--ts-pr-clear-button: 0px;--ts-pr-caret: 0px;--ts-pr-min: .75rem}.ts-wrapper.single .ts-control,.ts-wrapper.single .ts-control input{cursor:pointer}.ts-control:not(.rtl){padding-right:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret))!important}.ts-control.rtl{padding-left:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret))!important}.ts-wrapper{position:relative}.ts-dropdown,.ts-control,.ts-control input{color:#1f2937;font-family:inherit;font-size:inherit;line-height:1.25rem}.ts-control,.ts-wrapper.single.input-active .ts-control{background:var(--tblr-bg-forms);cursor:text}.ts-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;white-space:nowrap!important}.ts-dropdown,.ts-dropdown.form-control,.ts-dropdown.form-select{height:auto;padding:0;z-index:1000;background:var(--tblr-bg-surface);border:1px solid var(--tblr-border-color-translucent);border-radius:6px;box-shadow:0 6px 12px #0000002d}.ts-dropdown .optgroup-header{font-size:.765625rem;line-height:1.4285714286}.ts-dropdown .optgroup:first-child:before{display:none}.ts-dropdown .optgroup:before{content:" ";display:block;height:0;margin:var(--tblr-spacer-2) 0;overflow:hidden;border-top:1px solid var(--tblr-border-color-translucent);margin-left:-1rem;margin-right:-1rem}.ts-dropdown .create{padding-left:1rem}.ts-dropdown-content{padding:5px 0}.ts-control{box-shadow:var(--tblr-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.ts-control{transition:none}}.ts-control{display:flex;align-items:center}.focus .ts-control{border-color:#80c2be;outline:0;box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.ts-control .item{display:flex;align-items:center}.ts-control input::placeholder{color:var(--bs-secondary-color, #a7aeb8);opacity:1}.ts-wrapper.is-invalid,select.tomselected.is-invalid+div.ts-wrapper,.was-validated .invalid,.was-validated :invalid+.ts-wrapper{border-color:var(--tblr-form-invalid-color)}.ts-wrapper.is-invalid:not(.single),select.tomselected.is-invalid+div.ts-wrapper:not(.single),.was-validated .invalid:not(.single),.was-validated :invalid+.ts-wrapper:not(.single){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-position:right 1.53125rem center;background-size:1.8125rem 1.8125rem;background-repeat:no-repeat}.ts-wrapper.is-invalid.single,select.tomselected.is-invalid+div.ts-wrapper.single,.was-validated .invalid.single,.was-validated :invalid+.ts-wrapper.single{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%239ca3af' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-position:right 1rem center,center right 3rem;background-size:16px 12px,1.8125rem 1.8125rem;background-repeat:no-repeat}.ts-wrapper.is-invalid.focus .ts-control,select.tomselected.is-invalid+div.ts-wrapper.focus .ts-control,.was-validated .invalid.focus .ts-control,.was-validated :invalid+.ts-wrapper.focus .ts-control{border-color:var(--tblr-form-invalid-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-form-invalid-color),.25)}.ts-wrapper.is-valid,.was-validated .valid,.was-validated :valid+.ts-wrapper{border-color:var(--tblr-form-valid-color)}.ts-wrapper.is-valid:not(.single),.was-validated .valid:not(.single),.was-validated :valid+.ts-wrapper:not(.single){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-position:right 1.53125rem center;background-size:1.8125rem 1.8125rem;background-repeat:no-repeat}.ts-wrapper.is-valid.single,.was-validated .valid.single,.was-validated :valid+.ts-wrapper.single{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%239ca3af' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-position:right 1rem center,center right 3rem;background-size:16px 12px,1.8125rem 1.8125rem;background-repeat:no-repeat}.ts-wrapper.is-valid.focus .ts-control,.was-validated .valid.focus .ts-control,.was-validated :valid+.ts-wrapper.focus .ts-control{border-color:var(--tblr-form-valid-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-form-valid-color),.25)}.ts-wrapper{min-height:calc(1.25rem + 1.125rem + calc(var(--tblr-border-width) * 2));display:flex}.input-group-sm>.ts-wrapper,.ts-wrapper.form-select-sm,.ts-wrapper.form-control-sm{min-height:calc(1.25rem + .625rem + calc(var(--tblr-border-width) * 2))}.input-group-sm>.ts-wrapper .ts-control,.ts-wrapper.form-select-sm .ts-control,.ts-wrapper.form-control-sm .ts-control{border-radius:var(--tblr-border-radius-sm);font-size:.75rem}.input-group-sm>.ts-wrapper.has-items .ts-control,.ts-wrapper.form-select-sm.has-items .ts-control,.ts-wrapper.form-control-sm.has-items .ts-control{font-size:.75rem}.input-group-sm>.ts-wrapper.multi.has-items .ts-control,.ts-wrapper.form-select-sm.multi.has-items .ts-control,.ts-wrapper.form-control-sm.multi.has-items .ts-control{padding-top:calc((calc(1.25rem + .625rem + calc(var(--tblr-border-width) * 2)) - 1.25rem * .75rem - calc((var(--tblr-border-width) + 1px) * 2)) / 2)!important}.ts-wrapper.multi.has-items .ts-control{padding-left:calc(1rem - 5px);--ts-pr-min: calc(1rem - 5px) }.ts-wrapper.multi .ts-control>div{border-radius:calc(var(--tblr-border-radius) - 1px)}.input-group-lg>.ts-wrapper,.ts-wrapper.form-control-lg,.ts-wrapper.form-select-lg{min-height:calc(1.25rem + 1.375rem + calc(var(--tblr-border-width) * 2))}.input-group-lg>.ts-wrapper .ts-control,.ts-wrapper.form-control-lg .ts-control,.ts-wrapper.form-select-lg .ts-control{border-radius:var(--tblr-border-radius-lg);font-size:1rem}.ts-wrapper:not(.form-control,.form-select){padding:0;border:none;height:auto;box-shadow:none;background:none}.ts-wrapper:not(.form-control,.form-select).single .ts-control{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%239ca3af' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 1rem center;background-size:16px 12px}.ts-wrapper.form-select,.ts-wrapper.single{--ts-pr-caret: 3rem}.ts-wrapper.form-control,.ts-wrapper.form-select{padding:0!important;height:auto;box-shadow:none;display:flex}.ts-wrapper.form-control .ts-control,.ts-wrapper.form-control.single.input-active .ts-control,.ts-wrapper.form-select .ts-control,.ts-wrapper.form-select.single.input-active .ts-control{border:none!important}.ts-wrapper.form-control:not(.disabled) .ts-control,.ts-wrapper.form-control:not(.disabled).single.input-active .ts-control,.ts-wrapper.form-select:not(.disabled) .ts-control,.ts-wrapper.form-select:not(.disabled).single.input-active .ts-control{background:transparent!important}.input-group>.ts-wrapper{flex-grow:1;width:1%}.input-group>.ts-wrapper:not(:nth-child(2))>.ts-control{border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.ts-wrapper:not(:last-child)>.ts-control{border-top-right-radius:0;border-bottom-right-radius:0}.form-select .ts-dropdown,.form-select .ts-control,.form-select .ts-control input{color:var(--tblr-body-color)}:root{--ts-pr-clear-button: 0rem;--ts-pr-caret: 0rem}.ts-input{color:inherit}.focus .ts-control{border-radius:var(--tblr-border-radius)}.ts-control{color:inherit}.ts-control .dropdown-menu{width:100%;height:auto}.ts-wrapper .form-control,.ts-wrapper .form-select,.ts-wrapper.form-control,.ts-wrapper.form-select{box-shadow:var(--tblr-shadow-input)}.ts-wrapper.is-invalid .ts-control,select.tomselected.is-invalid+div.ts-wrapper .ts-control,.ts-wrapper.is-valid .ts-control{--ts-pr-clear-button: 1.5rem}.ts-dropdown{background:var(--tblr-bg-surface);color:var(--tblr-body-color);box-shadow:var(--tblr-shadow-dropdown);z-index:1000}.ts-dropdown .option{padding:.5rem .75rem}.ts-control,.ts-control input{color:var(--tblr-body-color)}.ts-control input::placeholder{color:var(--tblr-tertiary)}.ts-wrapper.multi .ts-control>div,.ts-wrapper.multi.disabled .ts-control>div{background:var(--tblr-bg-surface-secondary);border:1px solid var(--tblr-border-color);color:var(--tblr-body-color)}.ts-wrapper.disabled .ts-control{opacity:1}.ts-wrapper.disabled .ts-control>div.item{color:var(--tblr-gray-500)}html{scroll-behavior:auto!important}mark,.mark{padding-left:0;padding-right:0}.table-responsive .dropdown,.table-responsive .btn-group,.table-responsive .btn-group-vertical{position:static}.progress{min-width:80px}hr.dropdown-divider,.dropdown-divider.hr{margin-bottom:.25rem;margin-top:.25rem}.dropdown-item{font-weight:400}*{font-feature-settings:"liga" 0;font-variant-ligatures:none}@media(min-width:992px){:root,:host{margin-left:0;scrollbar-gutter:stable}}pre{background-color:transparent;color:inherit}.alert{background:var(--tblr-bg-surface)}.badge{user-select:text}.btn{display:inline-block}.btn:focus{border:1px solid var(--tblr-primary-fg);outline:2px solid var(--tblr-primary)!important}.btn-sm,.btn-group-sm>.btn{border-radius:6px}.dropdown-item{display:inline-block}.footer .text-primary{color:#001423!important}.nav-tabs .nav-link{display:inline-block}.page,.page-tabs .nav-tabs .nav-link.active{background-color:var(--tblr-bg-surface-tertiary)!important}.navbar{--tblr-navbar-active-bg: rgba(0, 0, 0, .06)}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{--tblr-alert-color: darken(var(--tblr-warning),10%);--tblr-link-color: #00F2D4;--tblr-link-color-rgb: 0,242,212;--tblr-link-hover-color-rgb: 0,242,212;--tblr-secondary: #9ca3af;--tblr-primary: #00F2D4;--tblr-primary-fg: #001423;--tblr-primary-rgb: 0,242,212;--tblr-btn-active-color: #001423}html[data-bs-theme=dark] ::selection,body[data-bs-theme=dark] html[data-bs-theme=light] ::selection{background-color:rgba(var(--tblr-primary-rgb),.48)}html[data-bs-theme=dark] .btn-primary,body[data-bs-theme=dark] html[data-bs-theme=light] .btn-primary,html[data-bs-theme=dark] .bg-primary .card-title,body[data-bs-theme=dark] html[data-bs-theme=light] .bg-primary .card-title,html[data-bs-theme=dark] .bg-primary a,body[data-bs-theme=dark] html[data-bs-theme=light] .bg-primary a,html[data-bs-theme=dark] .bg-primary i,body[data-bs-theme=dark] html[data-bs-theme=light] .bg-primary i,html[data-bs-theme=dark] .text-bg-primary,body[data-bs-theme=dark] html[data-bs-theme=light] .text-bg-primary{color:#001423!important}html[data-bs-theme=dark] .card,body[data-bs-theme=dark] html[data-bs-theme=light] .card{background:#001423!important}html[data-bs-theme=dark],body[data-bs-theme=dark] html[data-bs-theme=light],html[data-bs-theme=dark] .navbar,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar,html[data-bs-theme=dark] .page-header,body[data-bs-theme=dark] html[data-bs-theme=light] .page-header{background-color:#001423}html[data-bs-theme=dark] .page,body[data-bs-theme=dark] html[data-bs-theme=light] .page,html[data-bs-theme=dark] .page-tabs .nav-tabs .nav-link.active,body[data-bs-theme=dark] html[data-bs-theme=light] .page-tabs .nav-tabs .nav-link.active{background-color:#081b2a!important}html[data-bs-theme=dark] .page-link.active,body[data-bs-theme=dark] html[data-bs-theme=light] .page-link.active,html[data-bs-theme=dark] .active>.page-link,body[data-bs-theme=dark] html[data-bs-theme=light] .active>.page-link{color:#001423}html[data-bs-theme=dark] .text-bg-primary,body[data-bs-theme=dark] html[data-bs-theme=light] .text-bg-primary{color:#001423!important}html[data-bs-theme=dark] .text-muted,body[data-bs-theme=dark] html[data-bs-theme=light] .text-muted{color:var(--tblr-secondary-color)!important}html[data-bs-theme=dark] .text-secondary,body[data-bs-theme=dark] html[data-bs-theme=light] .text-secondary{color:#9ca3af!important}html[data-bs-theme=dark] .footer .text-primary,body[data-bs-theme=dark] html[data-bs-theme=light] .footer .text-primary{color:#fff!important}html[data-bs-theme=dark] .toast,body[data-bs-theme=dark] html[data-bs-theme=light] .toast{color:var(--tblr-body-color)}html[data-bs-theme=dark] .table-primary,body[data-bs-theme=dark] html[data-bs-theme=light] .table-primary{--tblr-table-bg: rgba(var(--tblr-secondary-rgb), .48);--tblr-table-hover-bg: inherit;--tblr-table-hover-color: inherit}pre code{padding:unset}.dropdown-toggle:after{font-family:Material Design Icons;content:"\f0140";padding-right:9px;border-bottom:none;border-left:none;transform:none;vertical-align:.05em;height:auto}:root:not(.dummy)[data-bs-theme=light] .hide-theme-light,:root:not(.dummy)[data-bs-theme=dark] .hide-theme-dark,body[data-bs-theme=dark] [data-bs-theme=light]:root:not(.dummy) .hide-theme-dark{display:none!important}:root:not(.dummy)[data-bs-theme=dark] .hide-theme-light,body[data-bs-theme=dark] [data-bs-theme=light]:root:not(.dummy) .hide-theme-light,:root:not(.dummy)[data-bs-theme=light] .hide-theme-dark{display:inline-flex!important}.ts-wrapper.multi .ts-control{padding:7px 7px 3px}.ts-wrapper.multi .ts-control div{margin:0 4px 4px 0}.badge a{color:inherit;text-decoration:none}.page-body .card{margin-bottom:1rem}.page-body .card .card-header,.page-body .card .card-body,.page-body .card .card-footer{padding:.75rem}.page-body .card .card-header{background:var(--tblr-bg-surface-tertiary)}.page-body .card h2.card-header,.page-body .card .card-header.h2{font-size:var(--tblr-font-size-h5);line-height:var(--tblr-line-height-h5);margin-bottom:0}.page-body .card .list-group-item{padding:.5rem .75rem}.page-body .card .table,.page-body .card .markdown>table{margin-bottom:0}form.object-edit{margin:auto;max-width:800px}.col-form-label.required{font-weight:700}.col-form-label.required:after{position:absolute;display:inline-block;margin-left:0;font-family:Material Design Icons;font-size:8px;content:"\f06c4"}.has-errors input,.has-errors select,.has-errors textarea{border:1px solid #d63939}select[multiple] optgroup{top:0;background-color:var(--bs-body-bg);font-style:normal;font-weight:700}select[multiple] option{padding-left:.5rem}.modifier-select{min-width:10rem;max-width:15rem;width:auto;white-space:nowrap}.page{background-color:var(--tblr-bg-surface-secondary)}.page-header{background-color:var(--tblr-bg-surface);min-height:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .nav-link-icon,.navbar-vertical.navbar-expand-lg .navbar-collapse .nav-link-title{color:#001423}.navbar-vertical.navbar-expand-lg .navbar-collapse .text-secondary{color:#00857d!important}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item a{color:#001423}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item .btn-group{visibility:hidden}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:hover,.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active{background-color:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:hover a,.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active a{text-decoration:none}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:hover .btn-group,.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active .btn-group{visibility:visible}.navbar-vertical.navbar-expand-lg .navbar-nav{z-index:1}@media(max-width:991.98px){.navbar-vertical.navbar-expand-lg .navbar-brand{padding:.2rem 0}}.navbar-vertical.navbar-expand-lg .navbar-brand a:hover{text-decoration:none}.navbar-vertical.navbar-expand-lg img.motif{bottom:0;display:none;left:0;mask-image:linear-gradient(180deg,#0000,#0000004d);opacity:.5;position:fixed;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none;width:18rem}@media(min-width:992px){.navbar-vertical.navbar-expand-lg img.motif{display:block}}html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg{background:linear-gradient(180deg,#00857d00,#00857d1a),#fff}html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg{background:linear-gradient(180deg,#00f2d400,#00f2d41a),#001423}html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .nav-item.dropdown.active:after,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .nav-item.dropdown.active:after{border-color:#00f2d4!important}html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .nav-link-title,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .nav-link-title,html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .nav-link-icon,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .nav-link-icon,html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .dropdown-item a,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .dropdown-item a{color:#fff!important}html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .dropdown-item.active,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .dropdown-item.active,html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .dropdown-item:hover,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .dropdown-item:hover{background-color:#ffffff0f!important}html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .text-secondary,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .text-secondary{color:#00f2d4!important}html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg img.motif,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg img.motif{opacity:.25}.progress{height:20px}.progress .progress-label{display:flex;flex-direction:column;justify-content:center;padding-left:.25rem}.table thead th,.markdown>table thead th{font-size:.625rem}table.object-list tbody>tr:last-child>td{border-bottom-width:0}table.object-list th.asc>a:after{content:"\f0140";font-family:Material Design Icons}table.object-list th.desc>a:after{content:"\f0143";font-family:Material Design Icons}table.attr-table th{font-weight:400;width:min-content}table.attr-table th,table.attr-table td{border-bottom-style:dashed}table.attr-table tr:last-child{border-bottom-style:hidden}table.attr-table td{overflow-wrap:anywhere}td pre{margin-bottom:0}table th.orderable a{color:var(--tblr-body-color)}html[data-bs-theme=dark] .table thead th,body[data-bs-theme=dark] html[data-bs-theme=light] .table thead th,body[data-bs-theme=dark] html[data-bs-theme=light] .markdown>table thead th,html[data-bs-theme=dark] .markdown>table thead th{background:#001423!important}.page-tabs{border-bottom:1px solid var(--tblr-border-color-translucent)}.page-tabs .nav-tabs{position:relative;border:none}.page-tabs .nav-tabs .nav-link.active,.page-tabs .nav-tabs .nav-link:active,.page-tabs .nav-tabs .nav-link:hover{border-color:var(--tblr-border-color-translucent);border-bottom-color:transparent}.page-tabs .nav-tabs .nav-link.active{color:inherit;background:var(--tblr-bg-surface-secondary);border-bottom-color:transparent}pre.change-data{border-radius:0;padding:0}pre.change-data>span{display:block;padding-right:1rem;padding-left:1rem;width:100%;min-width:fit-content}pre.change-data>span.added{color:var(--tblr-dark);background-color:#82d18f}pre.change-data>span.removed{color:var(--tblr-dark);background-color:#e68888}pre.change-diff{border-color:transparent}pre.change-diff.change-added{color:var(--tblr-dark);background-color:#82d18f}pre.change-diff.change-removed{color:var(--tblr-dark);background-color:#e68888}pre.block{padding:1rem;border:1px solid #e5e7eb;border-radius:6px}.grid-stack .card-header.bg-default{background:var(--tblr-bg-surface-secondary)!important}.grid-stack .card-header a{color:inherit!important}tr[data-cable-status=connected]{background-color:#2fb34426}tr[data-cable-status=planned]{background-color:#066fd126}tr[data-cable-status=decommissioning]{background-color:#f59f0026}tr[data-mark-connected=true]{background-color:#2fb34426}tr[data-virtual=true]{background-color:#00857d26}tr[data-enabled=disabled]{background-color:#9ca3af26}tr[data-cable-status=connected] button.mark-installed{display:none}tr:not([data-cable-status=connected]) button.mark-planned{display:none}.rendered-markdown table{width:100%}.rendered-markdown table th{border-bottom:2px solid #dddddd;padding:8px}.rendered-markdown table td{border-top:1px solid #dddddd;padding:8px}.rendered-markdown table th[align=left]{text-align:left}.rendered-markdown table th[align=center]{text-align:center}.rendered-markdown table th[align=right]{text-align:right}.rendered-markdown p:last-child{margin-bottom:0}td>.rendered-markdown{max-height:200px;overflow-y:scroll}.markdown-widget .preview{border:1px solid #e5e7eb;border-radius:6px;min-height:200px}span.color-label{display:inline-block;width:5rem;height:1rem;padding:.25em .5em;border:1px solid #303030;border-radius:6px}.record-depth{display:inline;user-select:none;opacity:33%}.record-depth span:only-of-type,.record-depth span:last-of-type{margin-right:.25rem}.hide-last-child :last-child{visibility:hidden;opacity:0}.netbox-edition{letter-spacing:.15rem}.btn-float-group,.btn-float-group-right,.btn-float-group-left{position:sticky;bottom:10px;z-index:4}.btn-float-group-left{float:left}.btn-float-group-right{float:right}.btn-float{--tblr-btn-bg: var(--tblr-bg-surface-tertiary) !important}.logo{height:80px}.sso-icon{height:24px}img.plugin-icon{max-width:1.4285em;height:auto}.thumbnail{max-width:200px}.thumbnail img{border:1px solid #606060}.image-preview-popover{--bs-popover-max-width: clamp(240px, 25vw, 640px)}.image-preview-popover .popover-header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.image-preview-popover .popover-body{display:flex;justify-content:center;align-items:center}.image-preview-popover img{display:block;max-width:100%;max-height:clamp(160px,33vh,640px);height:auto}html[data-bs-theme=dark] img.plugin-icon,body[data-bs-theme=dark] html[data-bs-theme=light] img.plugin-icon{filter:grayscale(100%) invert(100%) brightness(80%)}tr[data-read=True] td{background-color:var(--tblr-bg-surface-secondary);color:#6b7280}.rack-loading-container{min-height:200px;margin-left:30px} +@charset "UTF-8";:root,[data-bs-theme=light]{--tblr-black: #000000;--tblr-white: #ffffff;--tblr-gray: #4b5563;--tblr-gray-dark: #1f2937;--tblr-gray-100: #f3f4f6;--tblr-gray-200: #e5e7eb;--tblr-gray-300: #d1d5db;--tblr-gray-400: #9ca3af;--tblr-gray-500: #6b7280;--tblr-gray-600: #4b5563;--tblr-gray-700: #374151;--tblr-gray-800: #1f2937;--tblr-gray-900: #111827;--tblr-primary: #00857D;--tblr-secondary: #6b7280;--tblr-success: #2fb344;--tblr-info: #4299e1;--tblr-warning: #f59f00;--tblr-danger: #d63939;--tblr-light: #f9fafb;--tblr-dark: #1f2937;--tblr-muted: #6b7280;--tblr-blue: #066fd1;--tblr-azure: #4299e1;--tblr-indigo: #4263eb;--tblr-purple: #ae3ec9;--tblr-pink: #d6336c;--tblr-red: #d63939;--tblr-orange: #f76707;--tblr-yellow: #f59f00;--tblr-lime: #74b816;--tblr-green: #2fb344;--tblr-teal: #0ca678;--tblr-cyan: #17a2b8;--tblr-primary-rgb: 0, 133, 125;--tblr-secondary-rgb: 107, 114, 128;--tblr-success-rgb: 47, 179, 68;--tblr-info-rgb: 66, 153, 225;--tblr-warning-rgb: 245, 159, 0;--tblr-danger-rgb: 214, 57, 57;--tblr-light-rgb: 249, 250, 251;--tblr-dark-rgb: 31, 41, 55;--tblr-muted-rgb: 107, 114, 128;--tblr-blue-rgb: 6, 111, 209;--tblr-azure-rgb: 66, 153, 225;--tblr-indigo-rgb: 66, 99, 235;--tblr-purple-rgb: 174, 62, 201;--tblr-pink-rgb: 214, 51, 108;--tblr-red-rgb: 214, 57, 57;--tblr-orange-rgb: 247, 103, 7;--tblr-yellow-rgb: 245, 159, 0;--tblr-lime-rgb: 116, 184, 22;--tblr-green-rgb: 47, 179, 68;--tblr-teal-rgb: 12, 166, 120;--tblr-cyan-rgb: 23, 162, 184;--tblr-primary-text-emphasis: rgb(0, 53.2, 50);--tblr-secondary-text-emphasis: rgb(42.8, 45.6, 51.2);--tblr-success-text-emphasis: rgb(18.8, 71.6, 27.2);--tblr-info-text-emphasis: rgb(26.4, 61.2, 90);--tblr-warning-text-emphasis: rgb(98, 63.6, 0);--tblr-danger-text-emphasis: rgb(85.6, 22.8, 22.8);--tblr-light-text-emphasis: #374151;--tblr-dark-text-emphasis: #374151;--tblr-primary-bg-subtle: rgb(204, 230.6, 229);--tblr-secondary-bg-subtle: rgb(225.4, 226.8, 229.6);--tblr-success-bg-subtle: rgb(213.4, 239.8, 217.6);--tblr-info-bg-subtle: rgb(217.2, 234.6, 249);--tblr-warning-bg-subtle: rgb(253, 235.8, 204);--tblr-danger-bg-subtle: rgb(246.8, 215.4, 215.4);--tblr-light-bg-subtle: rgb(249, 249.5, 250.5);--tblr-dark-bg-subtle: #9ca3af;--tblr-primary-border-subtle: rgb(153, 206.2, 203);--tblr-secondary-border-subtle: rgb(195.8, 198.6, 204.2);--tblr-success-border-subtle: rgb(171.8, 224.6, 180.2);--tblr-info-border-subtle: rgb(179.4, 214.2, 243);--tblr-warning-border-subtle: rgb(251, 216.6, 153);--tblr-danger-border-subtle: rgb(238.6, 175.8, 175.8);--tblr-light-border-subtle: #e5e7eb;--tblr-dark-border-subtle: #6b7280;--tblr-white-rgb: 255, 255, 255;--tblr-black-rgb: 0, 0, 0;--tblr-font-sans-serif: "Inter", system-ui, sans-serif;--tblr-font-monospace: "Roboto Mono";--tblr-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--tblr-body-font-family: var(--tblr-font-sans-serif);--tblr-body-font-size: .875rem;--tblr-body-font-weight: 400;--tblr-body-line-height: 1.4285714286;--tblr-body-color: #1f2937;--tblr-body-color-rgb: 31, 41, 55;--tblr-body-bg: #f9fafb;--tblr-body-bg-rgb: 249, 250, 251;--tblr-emphasis-color: #374151;--tblr-emphasis-color-rgb: 55, 65, 81;--tblr-secondary-color: rgba(31, 41, 55, .75);--tblr-secondary-color-rgb: 31, 41, 55;--tblr-secondary-bg: #e5e7eb;--tblr-secondary-bg-rgb: 229, 231, 235;--tblr-tertiary-color: rgba(31, 41, 55, .5);--tblr-tertiary-color-rgb: 31, 41, 55;--tblr-tertiary-bg: #f3f4f6;--tblr-tertiary-bg-rgb: 243, 244, 246;--tblr-heading-color: inherit;--tblr-link-color: #00857D;--tblr-link-color-rgb: 0, 133, 125;--tblr-link-decoration: none;--tblr-link-hover-color: rgb(0, 106.4, 100);--tblr-link-hover-color-rgb: 0, 106, 100;--tblr-link-hover-decoration: underline;--tblr-code-color: light-dark(var(--tblr-gray-600), var(--tblr-gray-400));--tblr-highlight-color: #1f2937;--tblr-highlight-bg: rgb(253, 235.8, 204);--tblr-border-width: 1px;--tblr-border-style: solid;--tblr-border-color: #e5e7eb;--tblr-border-color-translucent: rgba(4, 32, 69, .1);--tblr-border-radius: 6px;--tblr-border-radius-sm: 4px;--tblr-border-radius-lg: 8px;--tblr-border-radius-xl: 1rem;--tblr-border-radius-xxl: 2rem;--tblr-border-radius-2xl: var(--tblr-border-radius-xxl);--tblr-border-radius-pill: 100rem;--tblr-box-shadow: rgba(var(--tblr-body-color-rgb), .04) 0 2px 4px 0;--tblr-box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075);--tblr-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .175);--tblr-box-shadow-inset: 0 0 transparent;--tblr-focus-ring-width: .25rem;--tblr-focus-ring-opacity: .25;--tblr-focus-ring-color: rgba(var(--tblr-primary-rgb), .25);--tblr-form-valid-color: #2fb344;--tblr-form-valid-border-color: #2fb344;--tblr-form-invalid-color: #d63939;--tblr-form-invalid-border-color: #d63939}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{color-scheme:dark;--tblr-body-color: #e5e7eb;--tblr-body-color-rgb: 229, 231, 235;--tblr-body-bg: #111827;--tblr-body-bg-rgb: 17, 24, 39;--tblr-emphasis-color: #ffffff;--tblr-emphasis-color-rgb: 255, 255, 255;--tblr-secondary-color: rgba(229, 231, 235, .75);--tblr-secondary-color-rgb: 229, 231, 235;--tblr-secondary-bg: #1f2937;--tblr-secondary-bg-rgb: 31, 41, 55;--tblr-tertiary-color: rgba(229, 231, 235, .5);--tblr-tertiary-color-rgb: 229, 231, 235;--tblr-tertiary-bg: rgb(24, 32.5, 47);--tblr-tertiary-bg-rgb: 24, 33, 47;--tblr-primary-text-emphasis: rgb(102, 181.8, 177);--tblr-secondary-text-emphasis: rgb(166.2, 170.4, 178.8);--tblr-success-text-emphasis: rgb(130.2, 209.4, 142.8);--tblr-info-text-emphasis: rgb(141.6, 193.8, 237);--tblr-warning-text-emphasis: rgb(249, 197.4, 102);--tblr-danger-text-emphasis: rgb(230.4, 136.2, 136.2);--tblr-light-text-emphasis: #f3f4f6;--tblr-dark-text-emphasis: #d1d5db;--tblr-primary-bg-subtle: rgb(0, 26.6, 25);--tblr-secondary-bg-subtle: rgb(21.4, 22.8, 25.6);--tblr-success-bg-subtle: rgb(9.4, 35.8, 13.6);--tblr-info-bg-subtle: rgb(13.2, 30.6, 45);--tblr-warning-bg-subtle: rgb(49, 31.8, 0);--tblr-danger-bg-subtle: rgb(42.8, 11.4, 11.4);--tblr-light-bg-subtle: #1f2937;--tblr-dark-bg-subtle: rgb(15.5, 20.5, 27.5);--tblr-primary-border-subtle: rgb(0, 79.8, 75);--tblr-secondary-border-subtle: rgb(64.2, 68.4, 76.8);--tblr-success-border-subtle: rgb(28.2, 107.4, 40.8);--tblr-info-border-subtle: rgb(39.6, 91.8, 135);--tblr-warning-border-subtle: rgb(147, 95.4, 0);--tblr-danger-border-subtle: rgb(128.4, 34.2, 34.2);--tblr-light-border-subtle: #374151;--tblr-dark-border-subtle: #1f2937;--tblr-heading-color: inherit;--tblr-link-color: rgb(102, 181.8, 177);--tblr-link-hover-color: rgb(132.6, 196.44, 192.6);--tblr-link-color-rgb: 102, 182, 177;--tblr-link-hover-color-rgb: 133, 196, 193;--tblr-code-color: var(--tblr-gray-300);--tblr-highlight-color: #e5e7eb;--tblr-highlight-bg: rgb(98, 63.6, 0);--tblr-border-color: rgb(45.7069767442, 60.4511627907, 81.0930232558);--tblr-border-color-translucent: rgba(72, 110, 149, .14);--tblr-form-valid-color: rgb(130.2, 209.4, 142.8);--tblr-form-valid-border-color: rgb(130.2, 209.4, 142.8);--tblr-form-invalid-color: rgb(230.4, 136.2, 136.2);--tblr-form-invalid-border-color: rgb(230.4, 136.2, 136.2)}*,*:before,*:after{box-sizing:border-box}@media(prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--tblr-body-font-family);font-size:var(--tblr-body-font-size);font-weight:var(--tblr-body-font-weight);line-height:var(--tblr-body-line-height);color:var(--tblr-body-color);text-align:var(--tblr-body-text-align);background-color:var(--tblr-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr,.hr{margin:2rem 0;color:inherit;border:0;border-top:var(--tblr-border-width) solid;opacity:.16}h6,.h6,h5,.h5,h4,.h4,h3,.field-group h2,.field-group .h2,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:var(--tblr-spacer);font-weight:var(--tblr-font-weight-bold);line-height:1.2;color:var(--tblr-heading-color)}h1,.h1{font-size:1.5rem}h2,.h2{font-size:1.25rem}h3,.field-group h2,.field-group .h2,.h3{font-size:1rem}h4,.h4{font-size:.875rem}h5,.h5{font-size:.75rem}h6,.h6{font-size:.625rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:600}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;color:var(--tblr-highlight-color);background-color:var(--tblr-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity, 1));text-decoration:none}a:hover{--tblr-link-color-rgb: var(--tblr-link-hover-color-rgb);text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--tblr-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.85714285em;color:var(--tblr-light)}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.85714285em;color:var(--tblr-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.25rem .5rem;font-size:var(--tblr-font-size-h5);color:var(--tblr-text-secondary-dark);background-color:var(--tblr-code-bg);border-radius:4px}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--tblr-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;line-height:inherit;font-size:1.5rem}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale(1)}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:.875rem;font-weight:var(--tblr-font-weight-normal)}.display-1{font-weight:300;line-height:1.2;font-size:5rem}.display-2{font-weight:300;line-height:1.2;font-size:4.5rem}.display-3{font-weight:300;line-height:1.2;font-size:4rem}.display-4{font-weight:300;line-height:1.2;font-size:3.5rem}.display-5{font-weight:300;line-height:1.2;font-size:3rem}.display-6{font-weight:300;line-height:1.2;font-size:2rem}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:.875rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#4b5563}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--tblr-body-bg);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-sm);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--tblr-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--tblr-gutter-x: calc(var(--tblr-page-padding) * 2);--tblr-gutter-y: 0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto}@media(min-width:576px){.container-sm,.container{max-width:540px}}@media(min-width:768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width:992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width:1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width:1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--tblr-breakpoint-xs: 0;--tblr-breakpoint-sm: 576px;--tblr-breakpoint-md: 768px;--tblr-breakpoint-lg: 992px;--tblr-breakpoint-xl: 1200px;--tblr-breakpoint-xxl: 1400px}.row{--tblr-gutter-x: var(--tblr-page-padding);--tblr-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--tblr-gutter-y));margin-right:calc(-.5 * var(--tblr-gutter-x));margin-left:calc(-.5 * var(--tblr-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-top:var(--tblr-gutter-y)}.grid{display:grid;grid-template-rows:repeat(var(--tblr-rows, 1),1fr);grid-template-columns:repeat(var(--tblr-columns, 12),1fr);gap:var(--tblr-gap, var(--tblr-page-padding))}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width:576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width:768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width:992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width:1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width:1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.col{flex:1 0 0}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--tblr-gutter-x: 0}.g-0,.gy-0{--tblr-gutter-y: 0}.g-1,.gx-1{--tblr-gutter-x: .25rem}.g-1,.gy-1{--tblr-gutter-y: .25rem}.g-2,.gx-2{--tblr-gutter-x: .5rem}.g-2,.gy-2{--tblr-gutter-y: .5rem}.g-3,.gx-3{--tblr-gutter-x: 1rem}.g-3,.gy-3{--tblr-gutter-y: 1rem}.g-4,.gx-4{--tblr-gutter-x: 1.5rem}.g-4,.gy-4{--tblr-gutter-y: 1.5rem}.g-5,.gx-5{--tblr-gutter-x: 2rem}.g-5,.gy-5{--tblr-gutter-y: 2rem}.g-6,.gx-6{--tblr-gutter-x: 2.5rem}.g-6,.gy-6{--tblr-gutter-y: 2.5rem}@media(min-width:576px){.col-sm{flex:1 0 0}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--tblr-gutter-x: 0}.g-sm-0,.gy-sm-0{--tblr-gutter-y: 0}.g-sm-1,.gx-sm-1{--tblr-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--tblr-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--tblr-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--tblr-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--tblr-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--tblr-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--tblr-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--tblr-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--tblr-gutter-x: 2rem}.g-sm-5,.gy-sm-5{--tblr-gutter-y: 2rem}.g-sm-6,.gx-sm-6{--tblr-gutter-x: 2.5rem}.g-sm-6,.gy-sm-6{--tblr-gutter-y: 2.5rem}}@media(min-width:768px){.col-md{flex:1 0 0}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--tblr-gutter-x: 0}.g-md-0,.gy-md-0{--tblr-gutter-y: 0}.g-md-1,.gx-md-1{--tblr-gutter-x: .25rem}.g-md-1,.gy-md-1{--tblr-gutter-y: .25rem}.g-md-2,.gx-md-2{--tblr-gutter-x: .5rem}.g-md-2,.gy-md-2{--tblr-gutter-y: .5rem}.g-md-3,.gx-md-3{--tblr-gutter-x: 1rem}.g-md-3,.gy-md-3{--tblr-gutter-y: 1rem}.g-md-4,.gx-md-4{--tblr-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--tblr-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--tblr-gutter-x: 2rem}.g-md-5,.gy-md-5{--tblr-gutter-y: 2rem}.g-md-6,.gx-md-6{--tblr-gutter-x: 2.5rem}.g-md-6,.gy-md-6{--tblr-gutter-y: 2.5rem}}@media(min-width:992px){.col-lg{flex:1 0 0}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--tblr-gutter-x: 0}.g-lg-0,.gy-lg-0{--tblr-gutter-y: 0}.g-lg-1,.gx-lg-1{--tblr-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--tblr-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--tblr-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--tblr-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--tblr-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--tblr-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--tblr-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--tblr-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--tblr-gutter-x: 2rem}.g-lg-5,.gy-lg-5{--tblr-gutter-y: 2rem}.g-lg-6,.gx-lg-6{--tblr-gutter-x: 2.5rem}.g-lg-6,.gy-lg-6{--tblr-gutter-y: 2.5rem}}@media(min-width:1200px){.col-xl{flex:1 0 0}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--tblr-gutter-x: 0}.g-xl-0,.gy-xl-0{--tblr-gutter-y: 0}.g-xl-1,.gx-xl-1{--tblr-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--tblr-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--tblr-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--tblr-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--tblr-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--tblr-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--tblr-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--tblr-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--tblr-gutter-x: 2rem}.g-xl-5,.gy-xl-5{--tblr-gutter-y: 2rem}.g-xl-6,.gx-xl-6{--tblr-gutter-x: 2.5rem}.g-xl-6,.gy-xl-6{--tblr-gutter-y: 2.5rem}}@media(min-width:1400px){.col-xxl{flex:1 0 0}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--tblr-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--tblr-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--tblr-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--tblr-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--tblr-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--tblr-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--tblr-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--tblr-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--tblr-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--tblr-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--tblr-gutter-x: 2rem}.g-xxl-5,.gy-xxl-5{--tblr-gutter-y: 2rem}.g-xxl-6,.gx-xxl-6{--tblr-gutter-x: 2.5rem}.g-xxl-6,.gy-xxl-6{--tblr-gutter-y: 2.5rem}}.table,.markdown>table{--tblr-table-color-type: initial;--tblr-table-bg-type: initial;--tblr-table-color-state: initial;--tblr-table-bg-state: initial;--tblr-table-color: inherit;--tblr-table-bg: transparent;--tblr-table-border-color: var(--tblr-border-color-translucent);--tblr-table-accent-bg: transparent;--tblr-table-striped-color: inherit;--tblr-table-striped-bg: var(--tblr-bg-surface-tertiary);--tblr-table-active-color: inherit;--tblr-table-active-bg: var(--tblr-active-bg);--tblr-table-hover-color: inherit;--tblr-table-hover-bg: rgba(var(--tblr-emphasis-color-rgb), .075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--tblr-table-border-color)}.table>:not(caption)>*>*,.markdown>table>:not(caption)>*>*{padding:.5rem;color:var(--tblr-table-color-state, var(--tblr-table-color-type, var(--tblr-table-color)));background-color:var(--tblr-table-bg);border-bottom-width:var(--tblr-border-width);box-shadow:inset 0 0 0 9999px var(--tblr-table-bg-state, var(--tblr-table-bg-type, var(--tblr-table-accent-bg)))}.table>tbody,.markdown>table>tbody{vertical-align:inherit}.table>thead,.markdown>table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--tblr-border-width) * 2) solid var(--tblr-border-color-translucent)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*,.markdown>table>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*,.markdown>table>:not(caption)>*{border-width:var(--tblr-border-width) 0}.table-bordered>:not(caption)>*>*,.markdown>table>:not(caption)>*>*{border-width:0 var(--tblr-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(2n)>*{--tblr-table-color-type: var(--tblr-table-striped-color);--tblr-table-bg-type: var(--tblr-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--tblr-table-color-type: var(--tblr-table-striped-color);--tblr-table-bg-type: var(--tblr-table-striped-bg)}.table-active{--tblr-table-color-state: var(--tblr-table-active-color);--tblr-table-bg-state: var(--tblr-table-active-bg)}.table-hover>tbody>tr:hover>*{--tblr-table-color-state: var(--tblr-table-hover-color);--tblr-table-bg-state: var(--tblr-table-hover-bg)}.table-primary{--tblr-table-color: #1f2937;--tblr-table-bg: rgb(204, 230.6, 229);--tblr-table-border-color: rgb(169.4, 192.68, 194.2);--tblr-table-striped-bg: rgb(195.35, 221.12, 220.3);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(186.7, 211.64, 211.6);--tblr-table-active-color: #1f2937;--tblr-table-hover-bg: rgb(191.025, 216.38, 215.95);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-secondary{--tblr-table-color: #1f2937;--tblr-table-bg: rgb(225.4, 226.8, 229.6);--tblr-table-border-color: rgb(186.52, 189.64, 194.68);--tblr-table-striped-bg: rgb(215.68, 217.51, 220.87);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(205.96, 208.22, 212.14);--tblr-table-active-color: #1f2937;--tblr-table-hover-bg: rgb(210.82, 212.865, 216.505);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-success{--tblr-table-color: #1f2937;--tblr-table-bg: rgb(213.4, 239.8, 217.6);--tblr-table-border-color: rgb(176.92, 200.04, 185.08);--tblr-table-striped-bg: rgb(204.28, 229.86, 209.47);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(195.16, 219.92, 201.34);--tblr-table-active-color: #1f2937;--tblr-table-hover-bg: rgb(199.72, 224.89, 205.405);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-info{--tblr-table-color: #1f2937;--tblr-table-bg: rgb(217.2, 234.6, 249);--tblr-table-border-color: rgb(179.96, 195.88, 210.2);--tblr-table-striped-bg: rgb(207.89, 224.92, 239.3);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(198.58, 215.24, 229.6);--tblr-table-active-color: #1f2937;--tblr-table-hover-bg: rgb(203.235, 220.08, 234.45);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-warning{--tblr-table-color: #1f2937;--tblr-table-bg: rgb(253, 235.8, 204);--tblr-table-border-color: rgb(208.6, 196.84, 174.2);--tblr-table-striped-bg: rgb(241.9, 226.06, 196.55);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(230.8, 216.32, 189.1);--tblr-table-active-color: #1f2937;--tblr-table-hover-bg: rgb(236.35, 221.19, 192.825);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-danger{--tblr-table-color: #1f2937;--tblr-table-bg: rgb(246.8, 215.4, 215.4);--tblr-table-border-color: rgb(203.64, 180.52, 183.32);--tblr-table-striped-bg: rgb(236.01, 206.68, 207.38);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(225.22, 197.96, 199.36);--tblr-table-active-color: #f9fafb;--tblr-table-hover-bg: rgb(230.615, 202.32, 203.37);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-light{--tblr-table-color: #1f2937;--tblr-table-bg: #f9fafb;--tblr-table-border-color: rgb(205.4, 208.2, 211.8);--tblr-table-striped-bg: rgb(238.1, 239.55, 241.2);--tblr-table-striped-color: #1f2937;--tblr-table-active-bg: rgb(227.2, 229.1, 231.4);--tblr-table-active-color: #1f2937;--tblr-table-hover-bg: rgb(232.65, 234.325, 236.3);--tblr-table-hover-color: #1f2937;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-dark{--tblr-table-color: #f9fafb;--tblr-table-bg: #1f2937;--tblr-table-border-color: rgb(74.6, 82.8, 94.2);--tblr-table-striped-bg: rgb(41.9, 51.45, 64.8);--tblr-table-striped-color: #f9fafb;--tblr-table-active-bg: rgb(52.8, 61.9, 74.6);--tblr-table-active-color: #f9fafb;--tblr-table-hover-bg: rgb(47.35, 56.675, 69.7);--tblr-table-hover-color: #f9fafb;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem;font-size:.875rem;font-weight:var(--tblr-font-weight-medium)}.col-form-label{padding-top:calc(.5625rem + var(--tblr-border-width));padding-bottom:calc(.5625rem + var(--tblr-border-width));margin-bottom:0;font-size:inherit;font-weight:var(--tblr-font-weight-medium);line-height:1.25rem}.col-form-label-lg{padding-top:calc(.6875rem + var(--tblr-border-width));padding-bottom:calc(.6875rem + var(--tblr-border-width));font-size:1rem}.col-form-label-sm{padding-top:calc(.3125rem + var(--tblr-border-width));padding-bottom:calc(.3125rem + var(--tblr-border-width));font-size:.75rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--tblr-secondary-color)}.form-control{display:block;width:100%;padding:.5625rem 1rem;font-family:var(--tblr-body-font-family);font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--tblr-body-color);appearance:none;background-color:var(--tblr-bg-forms);background-clip:padding-box;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--tblr-body-color);background-color:var(--tblr-bg-forms);border-color:#80c2be;outline:0;box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.25rem;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--tblr-tertiary);opacity:1}.form-control:disabled{background-color:var(--tblr-bg-surface-secondary);opacity:1}.form-control::file-selector-button{padding:.5625rem 1rem;margin:-.5625rem -1rem;margin-inline-end:1rem;color:var(--tblr-body-color);background-color:var(--tblr-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--tblr-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.5625rem 0;margin-bottom:0;line-height:1.25rem;color:var(--tblr-body-color);background-color:transparent;border:solid transparent;border-width:var(--tblr-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.25rem + .625rem + calc(var(--tblr-border-width) * 2));padding:.3125rem .5rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-control-sm::file-selector-button{padding:.3125rem .5rem;margin:-.3125rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.25rem + 1.375rem + calc(var(--tblr-border-width) * 2));padding:.6875rem 1.5rem;font-size:1rem;border-radius:var(--tblr-border-radius-lg)}.form-control-lg::file-selector-button{padding:.6875rem 1.5rem;margin:-.6875rem -1.5rem;margin-inline-end:1.5rem}textarea.form-control{min-height:calc(1.25rem + 1.125rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.25rem + .625rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.25rem + 1.375rem + calc(var(--tblr-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.25rem + 1.125rem + calc(var(--tblr-border-width) * 2));padding:.5625rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color.form-control-sm{height:calc(1.25rem + .625rem + calc(var(--tblr-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.25rem + 1.375rem + calc(var(--tblr-border-width) * 2))}.form-select{--tblr-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%239ca3af' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.5625rem 3rem .5625rem 1rem;font-family:var(--tblr-body-font-family);font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--tblr-body-color);appearance:none;background-color:var(--tblr-bg-forms);background-image:var(--tblr-form-select-bg-img),var(--tblr-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right 1rem center;background-size:16px 12px;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#80c2be;outline:0;box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:1rem;background-image:none}.form-select:disabled{background-color:var(--tblr-bg-surface-secondary)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--tblr-body-color)}.form-select-sm{padding-top:.3125rem;padding-bottom:.3125rem;padding-left:.5rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-select-lg{padding-top:.6875rem;padding-bottom:.6875rem;padding-left:1.5rem;font-size:1rem;border-radius:var(--tblr-border-radius-lg)}[data-bs-theme=dark] .form-select,body[data-bs-theme=dark] [data-bs-theme=light] .form-select{--tblr-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23e5e7eb' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.25rem;padding-left:2rem;margin-bottom:.75rem}.form-check .form-check-input{float:left;margin-left:-2rem}.form-check-reverse{padding-right:2rem;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-2rem;margin-left:0}.form-check-input{--tblr-form-check-bg: var(--tblr-bg-forms);flex-shrink:0;width:1.25rem;height:1.25rem;margin-top:.0892857143rem;vertical-align:top;appearance:none;background-color:var(--tblr-form-check-bg);background-image:var(--tblr-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:var(--tblr-border-radius)}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#80c2be;outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-check-input:checked{background-color:var(--tblr-primary);border-color:var(--tblr-border-color-translucent)}.form-check-input:checked[type=checkbox]{--tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:var(--tblr-primary);border-color:var(--tblr-primary);--tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.7}.form-switch{padding-left:2.5rem}.form-switch .form-check-input{--tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23e5e7eb'/%3e%3c/svg%3e");width:2rem;margin-left:-2.5rem;background-image:var(--tblr-form-switch-bg);background-position:left center;border-radius:2rem;transition:background-position .15s ease-in-out}.form-switch .form-check-input:focus{--tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgb%28127.5, 194, 190%29'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ffffff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5rem;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5rem;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.4}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.25rem;padding:0;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #f9fafb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #f9fafb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.375rem;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #ffffff;border-radius:1rem;box-shadow:0 .1rem .25rem #0000001a;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b3dad8}.form-range::-webkit-slider-runnable-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:var(--tblr-box-shadow-inset)}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #ffffff;border-radius:1rem;box-shadow:0 .1rem .25rem #0000001a;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b3dad8}.form-range::-moz-range-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:var(--tblr-box-shadow-inset)}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--tblr-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--tblr-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--tblr-border-width) * 2));min-height:calc(3.5rem + calc(var(--tblr-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;max-width:100%;height:100%;padding:1rem;overflow:hidden;color:rgba(var(--tblr-body-color-rgb),.65);text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--tblr-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem;padding-left:1rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:-webkit-autofill~label{transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>textarea:focus~label:after,.form-floating>textarea:not(:placeholder-shown)~label:after{position:absolute;inset:1rem .5rem;z-index:-1;height:1.5em;content:"";background-color:var(--tblr-bg-forms);border-radius:var(--tblr-border-radius)}.form-floating>textarea:disabled~label:after{background-color:var(--tblr-bg-surface-secondary)}.form-floating>.form-control-plaintext~label{border-width:var(--tblr-border-width) 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#4b5563}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.5625rem 1rem;font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--tblr-gray-500);text-align:center;white-space:nowrap;background-color:var(--tblr-bg-surface-secondary);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.6875rem 1.5rem;font-size:1rem;border-radius:var(--tblr-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.3125rem .5rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:4rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(-1 * var(--tblr-border-width));border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--tblr-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-1) var(--tblr-spacer-3);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-success);border-radius:var(--tblr-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--tblr-form-valid-border-color);padding-right:2.375rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 1.53125rem center;background-size:1.8125rem 1.8125rem}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:2.375rem;background-position:top 1.53125rem right 1.53125rem}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--tblr-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");padding-right:5.5rem;background-position:right 1rem center,center right 3rem;background-size:16px 12px,1.8125rem 1.8125rem}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:5.375rem}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--tblr-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--tblr-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--tblr-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--tblr-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-1) var(--tblr-spacer-3);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-danger);border-radius:var(--tblr-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,select.tomselected.is-invalid+div.ts-wrapper~.invalid-feedback,.is-invalid~.invalid-tooltip,select.tomselected.is-invalid+div.ts-wrapper~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid,select.tomselected.is-invalid+div.form-control.ts-wrapper{border-color:var(--tblr-form-invalid-border-color);padding-right:2.375rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 1.53125rem center;background-size:1.8125rem 1.8125rem}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,select.tomselected.is-invalid+div.form-control.ts-wrapper:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:2.375rem;background-position:top 1.53125rem right 1.53125rem}.was-validated .form-select:invalid,.form-select.is-invalid,select.tomselected.is-invalid+div.form-select.ts-wrapper{border-color:var(--tblr-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),select.tomselected.is-invalid+div.form-select.ts-wrapper:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],select.tomselected.is-invalid+div.form-select.ts-wrapper:not([multiple])[size="1"]{--tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");padding-right:5.5rem;background-position:right 1rem center,center right 3rem;background-size:16px 12px,1.8125rem 1.8125rem}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus,select.tomselected.is-invalid+div.form-select.ts-wrapper:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid,select.tomselected.is-invalid+div.form-control-color.ts-wrapper{width:5.375rem}.was-validated .form-check-input:invalid,.form-check-input.is-invalid,select.tomselected.is-invalid+div.form-check-input.ts-wrapper{border-color:var(--tblr-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked,select.tomselected.is-invalid+div.form-check-input.ts-wrapper:checked{background-color:var(--tblr-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus,select.tomselected.is-invalid+div.form-check-input.ts-wrapper:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label,select.tomselected.is-invalid+div.form-check-input.ts-wrapper~.form-check-label{color:var(--tblr-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.input-group>select.tomselected.is-invalid+div.form-control.ts-wrapper:not(:focus),.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.input-group>select.tomselected.is-invalid+div.form-select.ts-wrapper:not(:focus),.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>select.tomselected.is-invalid+div.form-floating.ts-wrapper:not(:focus-within){z-index:4}.btn{--tblr-btn-padding-x: .5rem;--tblr-btn-padding-y: .25rem;--tblr-btn-font-family: var(--tblr-body-font-family);--tblr-btn-font-size: .875rem;--tblr-btn-font-weight: var(--tblr-font-weight-medium);--tblr-btn-line-height: 1.25rem;--tblr-btn-color: var(--tblr-body-color);--tblr-btn-bg: transparent;--tblr-btn-border-width: var(--tblr-border-width);--tblr-btn-border-color: transparent;--tblr-btn-border-radius: var(--tblr-border-radius);--tblr-btn-hover-border-color: transparent;--tblr-btn-box-shadow: var(--tblr-shadow-input);--tblr-btn-disabled-opacity: .4;--tblr-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--tblr-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--tblr-btn-padding-y) var(--tblr-btn-padding-x);font-family:var(--tblr-btn-font-family);font-size:var(--tblr-btn-font-size);font-weight:var(--tblr-btn-font-weight);line-height:var(--tblr-btn-line-height);color:var(--tblr-btn-color);text-align:center;vertical-align:middle;cursor:pointer;user-select:none;border:var(--tblr-btn-border-width) solid var(--tblr-btn-border-color);border-radius:var(--tblr-btn-border-radius);background-color:var(--tblr-btn-bg);box-shadow:var(--tblr-btn-box-shadow);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--tblr-btn-hover-color);text-decoration:none;background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--tblr-btn-color);background-color:var(--tblr-btn-bg);border-color:var(--tblr-btn-border-color)}.btn:focus-visible{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--tblr-btn-active-color);background-color:var(--tblr-btn-active-bg);border-color:var(--tblr-btn-active-border-color);box-shadow:var(--tblr-btn-active-shadow)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--tblr-btn-active-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--tblr-btn-active-shadow),var(--tblr-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--tblr-btn-disabled-color);pointer-events:none;background-color:var(--tblr-btn-disabled-bg);border-color:var(--tblr-btn-disabled-border-color);opacity:var(--tblr-btn-disabled-opacity);box-shadow:none}.btn-link{--tblr-btn-font-weight: 400;--tblr-btn-color: var(--tblr-link-color);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-link-hover-color);--tblr-btn-hover-border-color: transparent;--tblr-btn-active-color: var(--tblr-link-hover-color);--tblr-btn-active-border-color: transparent;--tblr-btn-disabled-color: #4b5563;--tblr-btn-disabled-border-color: transparent;--tblr-btn-box-shadow: 0 0 0 #000;--tblr-btn-focus-shadow-rgb: 37, 151, 144;text-decoration:none}.btn-link:hover,.btn-link:focus-visible{text-decoration:underline}.btn-link:focus-visible{color:var(--tblr-btn-color)}.btn-link:hover{color:var(--tblr-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--tblr-btn-padding-y: .6875rem;--tblr-btn-padding-x: 1.5rem;--tblr-btn-font-size: 1rem;--tblr-btn-border-radius: var(--tblr-border-radius-lg)}.btn-sm,.btn-group-sm>.btn{--tblr-btn-padding-y: .3125rem;--tblr-btn-padding-x: .5rem;--tblr-btn-font-size: .75rem;--tblr-btn-border-radius: var(--tblr-border-radius-sm)}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-45deg)}.dropdown-menu{--tblr-dropdown-zindex: 1000;--tblr-dropdown-min-width: 11rem;--tblr-dropdown-padding-x: 0;--tblr-dropdown-padding-y: .25rem;--tblr-dropdown-spacer: 1px;--tblr-dropdown-font-size: .875rem;--tblr-dropdown-color: var(--tblr-body-color);--tblr-dropdown-bg: var(--tblr-bg-surface);--tblr-dropdown-border-color: var(--tblr-border-color-translucent);--tblr-dropdown-border-radius: var(--tblr-border-radius);--tblr-dropdown-border-width: var(--tblr-border-width);--tblr-dropdown-inner-border-radius: calc(var(--tblr-border-radius) - var(--tblr-border-width));--tblr-dropdown-divider-bg: var(--tblr-border-color-translucent);--tblr-dropdown-divider-margin-y: var(--tblr-spacer-2);--tblr-dropdown-box-shadow: var(--tblr-shadow-dropdown);--tblr-dropdown-link-color: inherit;--tblr-dropdown-link-hover-color: inherit;--tblr-dropdown-link-hover-bg: rgba(var(--tblr-secondary-rgb), .08);--tblr-dropdown-link-active-color: var(--tblr-primary);--tblr-dropdown-link-active-bg: var(--tblr-active-bg);--tblr-dropdown-link-disabled-color: var(--tblr-tertiary-color);--tblr-dropdown-item-padding-x: .75rem;--tblr-dropdown-item-padding-y: .5rem;--tblr-dropdown-header-color: #4b5563;--tblr-dropdown-header-padding-x: .75rem;--tblr-dropdown-header-padding-y: .25rem;position:absolute;z-index:var(--tblr-dropdown-zindex);display:none;min-width:var(--tblr-dropdown-min-width);padding:var(--tblr-dropdown-padding-y) var(--tblr-dropdown-padding-x);margin:0;font-size:var(--tblr-dropdown-font-size);color:var(--tblr-dropdown-color);text-align:left;list-style:none;background-color:var(--tblr-dropdown-bg);background-clip:padding-box;border:var(--tblr-dropdown-border-width) solid var(--tblr-dropdown-border-color);border-radius:var(--tblr-dropdown-border-radius);box-shadow:var(--tblr-dropdown-box-shadow)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--tblr-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width:576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width:768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width:992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width:1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width:1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--tblr-dropdown-spacer)}.dropup .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(135deg)}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--tblr-dropdown-spacer)}.dropend .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-135deg)}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--tblr-dropdown-spacer)}.dropstart .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(45deg)}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--tblr-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--tblr-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--tblr-dropdown-link-color);text-align:inherit;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--tblr-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--tblr-dropdown-link-hover-color);text-decoration:none;background-color:var(--tblr-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--tblr-dropdown-link-active-color);text-decoration:none;background-color:var(--tblr-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--tblr-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--tblr-dropdown-header-padding-y) var(--tblr-dropdown-header-padding-x);margin-bottom:0;font-size:.765625rem;color:var(--tblr-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);color:var(--tblr-dropdown-link-color)}.dropdown-menu-dark{--tblr-dropdown-color: #d1d5db;--tblr-dropdown-bg: #1f2937;--tblr-dropdown-border-color: var(--tblr-border-color-translucent);--tblr-dropdown-box-shadow: ;--tblr-dropdown-link-color: #d1d5db;--tblr-dropdown-link-hover-color: #ffffff;--tblr-dropdown-divider-bg: var(--tblr-border-color-translucent);--tblr-dropdown-link-hover-bg: rgba(255, 255, 255, .15);--tblr-dropdown-link-active-color: var(--tblr-primary);--tblr-dropdown-link-active-bg: var(--tblr-active-bg);--tblr-dropdown-link-disabled-color: #6b7280;--tblr-dropdown-header-color: #6b7280}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--tblr-border-radius)}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(-1 * var(--tblr-border-width))}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn-group.show .dropdown-toggle{box-shadow:inset 0 3px 5px #00000020}.btn-group.show .dropdown-toggle.btn-link{box-shadow:none}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(-1 * var(--tblr-border-width))}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:nth-child(n+3),.btn-group-vertical>:not(.btn-check)+.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--tblr-nav-link-padding-x: .75rem;--tblr-nav-link-padding-y: .5rem;--tblr-nav-link-font-weight: ;--tblr-nav-link-color: var(--tblr-gray-500);--tblr-nav-link-hover-color: var(--tblr-link-hover-color);--tblr-nav-link-disabled-color: var(--tblr-disabled-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--tblr-nav-link-padding-y) var(--tblr-nav-link-padding-x);font-size:var(--tblr-nav-link-font-size);font-weight:var(--tblr-nav-link-font-weight);color:var(--tblr-nav-link-color);background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}.nav-link:hover,.nav-link:focus{color:var(--tblr-nav-link-hover-color);text-decoration:none}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.nav-link.disabled,.nav-link:disabled{color:var(--tblr-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--tblr-nav-tabs-border-width: var(--tblr-border-width);--tblr-nav-tabs-border-color: var(--tblr-border-color);--tblr-nav-tabs-border-radius: var(--tblr-border-radius);--tblr-nav-tabs-link-hover-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);--tblr-nav-tabs-link-active-color: var(--tblr-body-color);--tblr-nav-tabs-link-active-bg: var(--tblr-body-bg);--tblr-nav-tabs-link-active-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);border-bottom:var(--tblr-nav-tabs-border-width) solid var(--tblr-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--tblr-nav-tabs-border-width));border:var(--tblr-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--tblr-nav-tabs-border-radius);border-top-right-radius:var(--tblr-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--tblr-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--tblr-nav-tabs-link-active-color);background-color:var(--tblr-nav-tabs-link-active-bg);border-color:var(--tblr-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--tblr-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--tblr-nav-pills-border-radius: var(--tblr-border-radius);--tblr-nav-pills-link-active-color: var(--tblr-primary);--tblr-nav-pills-link-active-bg: rgba(var(--tblr-secondary-rgb), .15)}.nav-pills .nav-link{border-radius:var(--tblr-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--tblr-nav-pills-link-active-color);background-color:var(--tblr-nav-pills-link-active-bg)}.nav-underline{--tblr-nav-underline-gap: 1rem;--tblr-nav-underline-border-width: .125rem;--tblr-nav-underline-link-active-color: var(--tblr-emphasis-color);gap:var(--tblr-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--tblr-nav-underline-border-width) solid transparent}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:600;color:var(--tblr-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-grow:1;flex-basis:0;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--tblr-navbar-padding-x: 0;--tblr-navbar-padding-y: .25rem;--tblr-navbar-color: var(--tblr-secondary);--tblr-navbar-hover-color: var(--tblr-body-color);--tblr-navbar-disabled-color: var(--tblr-disabled-color);--tblr-navbar-active-color: var(--tblr-body-color);--tblr-navbar-brand-padding-y: .5rem;--tblr-navbar-brand-margin-end: 1rem;--tblr-navbar-brand-font-size: 1.25rem;--tblr-navbar-brand-color: var(--tblr-body-color);--tblr-navbar-brand-hover-color: var(--tblr-body-color);--tblr-navbar-nav-link-padding-x: .75rem;--tblr-navbar-toggler-padding-y: 0;--tblr-navbar-toggler-padding-x: 0;--tblr-navbar-toggler-font-size: 1rem;--tblr-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2831, 41, 55, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--tblr-navbar-toggler-border-color: rgba(var(--tblr-emphasis-color-rgb), .15);--tblr-navbar-toggler-border-radius: var(--tblr-border-radius);--tblr-navbar-toggler-focus-width: 0;--tblr-navbar-toggler-transition: box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--tblr-navbar-padding-y) var(--tblr-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--tblr-navbar-brand-padding-y);padding-bottom:var(--tblr-navbar-brand-padding-y);margin-right:var(--tblr-navbar-brand-margin-end);font-size:var(--tblr-navbar-brand-font-size);color:var(--tblr-navbar-brand-color);white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--tblr-navbar-brand-hover-color);text-decoration:none}.navbar-nav{--tblr-nav-link-padding-x: 0;--tblr-nav-link-padding-y: .5rem;--tblr-nav-link-font-weight: ;--tblr-nav-link-color: var(--tblr-navbar-color);--tblr-nav-link-hover-color: var(--tblr-navbar-hover-color);--tblr-nav-link-disabled-color: var(--tblr-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--tblr-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--tblr-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--tblr-navbar-active-color)}.navbar-collapse{flex-grow:1;flex-basis:100%;align-items:center}.navbar-toggler{padding:var(--tblr-navbar-toggler-padding-y) var(--tblr-navbar-toggler-padding-x);font-size:var(--tblr-navbar-toggler-font-size);line-height:1;color:var(--tblr-navbar-color);background-color:transparent;border:var(--tblr-border-width) solid var(--tblr-navbar-toggler-border-color);border-radius:var(--tblr-navbar-toggler-border-radius);transition:var(--tblr-navbar-toggler-transition)}@media(prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--tblr-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--tblr-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--tblr-scroll-height, 75vh);overflow-y:auto}@media(min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark],body[data-bs-theme=dark] .navbar[data-bs-theme=light]{--tblr-navbar-color: rgba(255, 255, 255, .7);--tblr-navbar-hover-color: rgba(255, 255, 255, .75);--tblr-navbar-disabled-color: var(--tblr-disabled-color);--tblr-navbar-active-color: #ffffff;--tblr-navbar-brand-color: #ffffff;--tblr-navbar-brand-hover-color: #ffffff;--tblr-navbar-toggler-border-color: rgba(255, 255, 255, .1);--tblr-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon,body[data-bs-theme=dark] [data-bs-theme=light] .navbar-toggler-icon{--tblr-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--tblr-card-spacer-y: 1rem;--tblr-card-spacer-x: 1.25rem;--tblr-card-title-spacer-y: 1.25rem;--tblr-card-title-color: ;--tblr-card-subtitle-color: ;--tblr-card-border-width: var(--tblr-border-width);--tblr-card-border-color: var(--tblr-border-color-translucent);--tblr-card-border-radius: var(--tblr-border-radius-lg);--tblr-card-box-shadow: var(--tblr-shadow-card);--tblr-card-inner-border-radius: calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)));--tblr-card-cap-padding-y: 1rem;--tblr-card-cap-padding-x: 1.25rem;--tblr-card-cap-bg: var(--tblr-bg-surface-tertiary);--tblr-card-cap-color: inherit;--tblr-card-height: ;--tblr-card-color: inherit;--tblr-card-bg: var(--tblr-bg-surface);--tblr-card-img-overlay-padding: 1rem;--tblr-card-group-margin: 1.5rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--tblr-card-height);color:var(--tblr-body-color);word-wrap:break-word;background-color:var(--tblr-card-bg);background-clip:border-box;border:var(--tblr-card-border-width) solid var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius);box-shadow:var(--tblr-card-box-shadow)}.card>hr,.card>.hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--tblr-card-inner-border-radius);border-top-right-radius:var(--tblr-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--tblr-card-inner-border-radius);border-bottom-left-radius:var(--tblr-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--tblr-card-spacer-y) var(--tblr-card-spacer-x);color:var(--tblr-card-color)}.card-title{margin-bottom:var(--tblr-card-title-spacer-y);color:var(--tblr-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--tblr-card-title-spacer-y));margin-bottom:0;color:var(--tblr-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:var(--tblr-card-spacer-x)}.card-header{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);margin-bottom:0;color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-bottom:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-header:first-child{border-radius:var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius) 0 0}.card-footer{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-top:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--tblr-card-cap-padding-x));margin-bottom:calc(-1 * var(--tblr-card-cap-padding-y));margin-left:calc(-.5 * var(--tblr-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--tblr-card-bg);border-bottom-color:var(--tblr-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--tblr-card-cap-padding-x));margin-left:calc(-.5 * var(--tblr-card-cap-padding-x))}.card-img-overlay{position:absolute;inset:0;padding:var(--tblr-card-img-overlay-padding);border-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--tblr-card-inner-border-radius);border-top-right-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--tblr-card-inner-border-radius);border-bottom-left-radius:var(--tblr-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--tblr-card-group-margin)}@media(min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child)>.card-img-top,.card-group>.card:not(:last-child)>.card-header{border-top-right-radius:0}.card-group>.card:not(:last-child)>.card-img-bottom,.card-group>.card:not(:last-child)>.card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child)>.card-img-top,.card-group>.card:not(:first-child)>.card-header{border-top-left-radius:0}.card-group>.card:not(:first-child)>.card-img-bottom,.card-group>.card:not(:first-child)>.card-footer{border-bottom-left-radius:0}}.pagination{--tblr-pagination-padding-x: .25rem;--tblr-pagination-padding-y: calc(.25rem + 1px) ;--tblr-pagination-font-size: .875rem;--tblr-pagination-color: var(--tblr-body-color);--tblr-pagination-bg: transparent;--tblr-pagination-border-width: 1px;--tblr-pagination-border-color: transparent;--tblr-pagination-border-radius: var(--tblr-border-radius);--tblr-pagination-hover-color: var(--tblr-link-hover-color);--tblr-pagination-hover-bg: var(--tblr-active-bg);--tblr-pagination-hover-border-color: var(--tblr-pagination-border-color);--tblr-pagination-focus-color: var(--tblr-link-hover-color);--tblr-pagination-focus-bg: var(--tblr-secondary-bg);--tblr-pagination-focus-box-shadow: 0 0 0 .25rem rgba(var(--tblr-primary-rgb), .25);--tblr-pagination-active-color: #ffffff;--tblr-pagination-active-bg: var(--tblr-primary);--tblr-pagination-active-border-color: var(--tblr-primary);--tblr-pagination-disabled-color: var(--tblr-disabled-color);--tblr-pagination-disabled-bg: transparent;--tblr-pagination-disabled-border-color: var(--tblr-pagination-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--tblr-pagination-padding-y) var(--tblr-pagination-padding-x);font-size:var(--tblr-pagination-font-size);color:var(--tblr-pagination-color);background-color:var(--tblr-pagination-bg);border:var(--tblr-pagination-border-width) solid var(--tblr-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--tblr-pagination-hover-color);text-decoration:none;background-color:var(--tblr-pagination-hover-bg);border-color:var(--tblr-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--tblr-pagination-focus-color);background-color:var(--tblr-pagination-focus-bg);outline:0;box-shadow:var(--tblr-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--tblr-pagination-active-color);background-color:var(--tblr-pagination-active-bg);border-color:var(--tblr-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--tblr-pagination-disabled-color);pointer-events:none;background-color:var(--tblr-pagination-disabled-bg);border-color:var(--tblr-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item:first-child .page-link{border-top-left-radius:var(--tblr-pagination-border-radius);border-bottom-left-radius:var(--tblr-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--tblr-pagination-border-radius);border-bottom-right-radius:var(--tblr-pagination-border-radius)}.pagination-lg{--tblr-pagination-padding-x: 1.5rem;--tblr-pagination-padding-y: .75rem;--tblr-pagination-font-size: 1.09375rem;--tblr-pagination-border-radius: var(--tblr-border-radius-lg)}.pagination-sm{--tblr-pagination-padding-x: .5rem;--tblr-pagination-padding-y: .25rem;--tblr-pagination-font-size: .765625rem;--tblr-pagination-border-radius: var(--tblr-border-radius-sm)}@keyframes progress-bar-stripes{0%{background-position-x:var(--tblr-progress-height)}}.progress,.progress-stacked{--tblr-progress-height: .5rem;--tblr-progress-font-size: .65625rem;--tblr-progress-bg: var(--tblr-border-color);--tblr-progress-border-radius: var(--tblr-border-radius);--tblr-progress-box-shadow: var(--tblr-box-shadow-inset);--tblr-progress-bar-color: #ffffff;--tblr-progress-bar-bg: var(--tblr-primary);--tblr-progress-bar-transition: width .6s ease;display:flex;height:var(--tblr-progress-height);overflow:hidden;font-size:var(--tblr-progress-font-size);background-color:var(--tblr-progress-bg);border-radius:var(--tblr-progress-border-radius);box-shadow:var(--tblr-progress-box-shadow)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--tblr-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--tblr-progress-bar-bg);transition:var(--tblr-progress-bar-transition)}@media(prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--tblr-progress-height) var(--tblr-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--tblr-list-group-color: var(--tblr-body-color);--tblr-list-group-bg: inherit;--tblr-list-group-border-color: var(--tblr-border-color);--tblr-list-group-border-width: var(--tblr-border-width);--tblr-list-group-border-radius: var(--tblr-border-radius);--tblr-list-group-item-padding-x: 1.25rem;--tblr-list-group-item-padding-y: 1rem;--tblr-list-group-action-color: inherit;--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: rgba(var(--tblr-secondary-rgb), .08);--tblr-list-group-action-active-color: var(--tblr-body-color);--tblr-list-group-action-active-bg: var(--tblr-secondary-bg);--tblr-list-group-disabled-color: var(--tblr-secondary-color);--tblr-list-group-disabled-bg: inherit;--tblr-list-group-active-color: inherit;--tblr-list-group-active-bg: var(--tblr-active-bg);--tblr-list-group-active-border-color: var(--tblr-border-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--tblr-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item{position:relative;display:block;padding:var(--tblr-list-group-item-padding-y) var(--tblr-list-group-item-padding-x);color:var(--tblr-list-group-color);background-color:var(--tblr-list-group-bg);border:var(--tblr-list-group-border-width) solid var(--tblr-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--tblr-list-group-disabled-color);pointer-events:none;background-color:var(--tblr-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--tblr-list-group-active-color);background-color:var(--tblr-list-group-active-bg);border-color:var(--tblr-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--tblr-list-group-border-width));border-top-width:var(--tblr-list-group-border-width)}.list-group-item-action{width:100%;color:var(--tblr-list-group-action-color);text-align:inherit}.list-group-item-action:not(.active):hover,.list-group-item-action:not(.active):focus{z-index:1;color:var(--tblr-list-group-action-hover-color);text-decoration:none;background-color:var(--tblr-list-group-action-hover-bg)}.list-group-item-action:not(.active):active{color:var(--tblr-list-group-action-active-color);background-color:var(--tblr-list-group-action-active-bg)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}@media(min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media(min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media(min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media(min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media(min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--tblr-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--tblr-list-group-color: var(--tblr-primary-text-emphasis);--tblr-list-group-bg: var(--tblr-primary-bg-subtle);--tblr-list-group-border-color: var(--tblr-primary-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-primary-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-primary-border-subtle);--tblr-list-group-active-color: var(--tblr-primary-bg-subtle);--tblr-list-group-active-bg: var(--tblr-primary-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-primary-text-emphasis)}.list-group-item-secondary{--tblr-list-group-color: var(--tblr-secondary-text-emphasis);--tblr-list-group-bg: var(--tblr-secondary-bg-subtle);--tblr-list-group-border-color: var(--tblr-secondary-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-secondary-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-secondary-border-subtle);--tblr-list-group-active-color: var(--tblr-secondary-bg-subtle);--tblr-list-group-active-bg: var(--tblr-secondary-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-secondary-text-emphasis)}.list-group-item-success{--tblr-list-group-color: var(--tblr-success-text-emphasis);--tblr-list-group-bg: var(--tblr-success-bg-subtle);--tblr-list-group-border-color: var(--tblr-success-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-success-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-success-border-subtle);--tblr-list-group-active-color: var(--tblr-success-bg-subtle);--tblr-list-group-active-bg: var(--tblr-success-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-success-text-emphasis)}.list-group-item-info{--tblr-list-group-color: var(--tblr-info-text-emphasis);--tblr-list-group-bg: var(--tblr-info-bg-subtle);--tblr-list-group-border-color: var(--tblr-info-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-info-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-info-border-subtle);--tblr-list-group-active-color: var(--tblr-info-bg-subtle);--tblr-list-group-active-bg: var(--tblr-info-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-info-text-emphasis)}.list-group-item-warning{--tblr-list-group-color: var(--tblr-warning-text-emphasis);--tblr-list-group-bg: var(--tblr-warning-bg-subtle);--tblr-list-group-border-color: var(--tblr-warning-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-warning-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-warning-border-subtle);--tblr-list-group-active-color: var(--tblr-warning-bg-subtle);--tblr-list-group-active-bg: var(--tblr-warning-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-warning-text-emphasis)}.list-group-item-danger{--tblr-list-group-color: var(--tblr-danger-text-emphasis);--tblr-list-group-bg: var(--tblr-danger-bg-subtle);--tblr-list-group-border-color: var(--tblr-danger-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-danger-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-danger-border-subtle);--tblr-list-group-active-color: var(--tblr-danger-bg-subtle);--tblr-list-group-active-bg: var(--tblr-danger-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-danger-text-emphasis)}.list-group-item-light{--tblr-list-group-color: var(--tblr-light-text-emphasis);--tblr-list-group-bg: var(--tblr-light-bg-subtle);--tblr-list-group-border-color: var(--tblr-light-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-light-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-light-border-subtle);--tblr-list-group-active-color: var(--tblr-light-bg-subtle);--tblr-list-group-active-bg: var(--tblr-light-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-light-text-emphasis)}.list-group-item-dark{--tblr-list-group-color: var(--tblr-dark-text-emphasis);--tblr-list-group-bg: var(--tblr-dark-bg-subtle);--tblr-list-group-border-color: var(--tblr-dark-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-dark-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-dark-border-subtle);--tblr-list-group-active-color: var(--tblr-dark-bg-subtle);--tblr-list-group-active-bg: var(--tblr-dark-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-dark-text-emphasis)}.list-group-item-muted{--tblr-list-group-color: var(--tblr-muted-text-emphasis);--tblr-list-group-bg: var(--tblr-muted-bg-subtle);--tblr-list-group-border-color: var(--tblr-muted-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-muted-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-muted-border-subtle);--tblr-list-group-active-color: var(--tblr-muted-bg-subtle);--tblr-list-group-active-bg: var(--tblr-muted-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-muted-text-emphasis)}.list-group-item-blue{--tblr-list-group-color: var(--tblr-blue-text-emphasis);--tblr-list-group-bg: var(--tblr-blue-bg-subtle);--tblr-list-group-border-color: var(--tblr-blue-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-blue-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-blue-border-subtle);--tblr-list-group-active-color: var(--tblr-blue-bg-subtle);--tblr-list-group-active-bg: var(--tblr-blue-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-blue-text-emphasis)}.list-group-item-azure{--tblr-list-group-color: var(--tblr-azure-text-emphasis);--tblr-list-group-bg: var(--tblr-azure-bg-subtle);--tblr-list-group-border-color: var(--tblr-azure-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-azure-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-azure-border-subtle);--tblr-list-group-active-color: var(--tblr-azure-bg-subtle);--tblr-list-group-active-bg: var(--tblr-azure-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-azure-text-emphasis)}.list-group-item-indigo{--tblr-list-group-color: var(--tblr-indigo-text-emphasis);--tblr-list-group-bg: var(--tblr-indigo-bg-subtle);--tblr-list-group-border-color: var(--tblr-indigo-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-indigo-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-indigo-border-subtle);--tblr-list-group-active-color: var(--tblr-indigo-bg-subtle);--tblr-list-group-active-bg: var(--tblr-indigo-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-indigo-text-emphasis)}.list-group-item-purple{--tblr-list-group-color: var(--tblr-purple-text-emphasis);--tblr-list-group-bg: var(--tblr-purple-bg-subtle);--tblr-list-group-border-color: var(--tblr-purple-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-purple-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-purple-border-subtle);--tblr-list-group-active-color: var(--tblr-purple-bg-subtle);--tblr-list-group-active-bg: var(--tblr-purple-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-purple-text-emphasis)}.list-group-item-pink{--tblr-list-group-color: var(--tblr-pink-text-emphasis);--tblr-list-group-bg: var(--tblr-pink-bg-subtle);--tblr-list-group-border-color: var(--tblr-pink-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-pink-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-pink-border-subtle);--tblr-list-group-active-color: var(--tblr-pink-bg-subtle);--tblr-list-group-active-bg: var(--tblr-pink-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-pink-text-emphasis)}.list-group-item-red{--tblr-list-group-color: var(--tblr-red-text-emphasis);--tblr-list-group-bg: var(--tblr-red-bg-subtle);--tblr-list-group-border-color: var(--tblr-red-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-red-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-red-border-subtle);--tblr-list-group-active-color: var(--tblr-red-bg-subtle);--tblr-list-group-active-bg: var(--tblr-red-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-red-text-emphasis)}.list-group-item-orange{--tblr-list-group-color: var(--tblr-orange-text-emphasis);--tblr-list-group-bg: var(--tblr-orange-bg-subtle);--tblr-list-group-border-color: var(--tblr-orange-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-orange-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-orange-border-subtle);--tblr-list-group-active-color: var(--tblr-orange-bg-subtle);--tblr-list-group-active-bg: var(--tblr-orange-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-orange-text-emphasis)}.list-group-item-yellow{--tblr-list-group-color: var(--tblr-yellow-text-emphasis);--tblr-list-group-bg: var(--tblr-yellow-bg-subtle);--tblr-list-group-border-color: var(--tblr-yellow-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-yellow-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-yellow-border-subtle);--tblr-list-group-active-color: var(--tblr-yellow-bg-subtle);--tblr-list-group-active-bg: var(--tblr-yellow-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-yellow-text-emphasis)}.list-group-item-lime{--tblr-list-group-color: var(--tblr-lime-text-emphasis);--tblr-list-group-bg: var(--tblr-lime-bg-subtle);--tblr-list-group-border-color: var(--tblr-lime-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-lime-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-lime-border-subtle);--tblr-list-group-active-color: var(--tblr-lime-bg-subtle);--tblr-list-group-active-bg: var(--tblr-lime-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-lime-text-emphasis)}.list-group-item-green{--tblr-list-group-color: var(--tblr-green-text-emphasis);--tblr-list-group-bg: var(--tblr-green-bg-subtle);--tblr-list-group-border-color: var(--tblr-green-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-green-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-green-border-subtle);--tblr-list-group-active-color: var(--tblr-green-bg-subtle);--tblr-list-group-active-bg: var(--tblr-green-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-green-text-emphasis)}.list-group-item-teal{--tblr-list-group-color: var(--tblr-teal-text-emphasis);--tblr-list-group-bg: var(--tblr-teal-bg-subtle);--tblr-list-group-border-color: var(--tblr-teal-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-teal-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-teal-border-subtle);--tblr-list-group-active-color: var(--tblr-teal-bg-subtle);--tblr-list-group-active-bg: var(--tblr-teal-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-teal-text-emphasis)}.list-group-item-cyan{--tblr-list-group-color: var(--tblr-cyan-text-emphasis);--tblr-list-group-bg: var(--tblr-cyan-bg-subtle);--tblr-list-group-border-color: var(--tblr-cyan-border-subtle);--tblr-list-group-action-hover-color: var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg: var(--tblr-cyan-border-subtle);--tblr-list-group-action-active-color: var(--tblr-emphasis-color);--tblr-list-group-action-active-bg: var(--tblr-cyan-border-subtle);--tblr-list-group-active-color: var(--tblr-cyan-bg-subtle);--tblr-list-group-active-bg: var(--tblr-cyan-text-emphasis);--tblr-list-group-active-border-color: var(--tblr-cyan-text-emphasis)}.toast{--tblr-toast-zindex: 1090;--tblr-toast-padding-x: .75rem;--tblr-toast-padding-y: .5rem;--tblr-toast-spacing: calc(var(--tblr-page-padding) * 2);--tblr-toast-max-width: 350px;--tblr-toast-font-size: .875rem;--tblr-toast-color: ;--tblr-toast-bg: var(--tblr-bg-surface);--tblr-toast-border-width: var(--tblr-border-width);--tblr-toast-border-color: var(--tblr-border-color);--tblr-toast-border-radius: var(--tblr-border-radius);--tblr-toast-box-shadow: var(--tblr-box-shadow);--tblr-toast-header-color: var(--tblr-gray-500);--tblr-toast-header-bg: rgba(var(--tblr-body-bg-rgb), .85);--tblr-toast-header-border-color: var(--tblr-border-color);width:var(--tblr-toast-max-width);max-width:100%;font-size:var(--tblr-toast-font-size);color:var(--tblr-toast-color);pointer-events:auto;background-color:var(--tblr-toast-bg);background-clip:padding-box;border:var(--tblr-toast-border-width) solid var(--tblr-toast-border-color);box-shadow:var(--tblr-toast-box-shadow);border-radius:var(--tblr-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--tblr-toast-zindex: 1090;position:absolute;z-index:var(--tblr-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--tblr-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--tblr-toast-padding-y) var(--tblr-toast-padding-x);color:var(--tblr-toast-header-color);background-color:var(--tblr-toast-header-bg);background-clip:padding-box;border-bottom:var(--tblr-toast-border-width) solid var(--tblr-toast-header-border-color);border-top-left-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width));border-top-right-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--tblr-toast-padding-x));margin-left:var(--tblr-toast-padding-x)}.toast-body{padding:var(--tblr-toast-padding-x);word-wrap:break-word}.modal{--tblr-modal-zindex: 1055;--tblr-modal-width: 540px;--tblr-modal-padding: 1.5rem;--tblr-modal-margin: .5rem;--tblr-modal-color: var(--tblr-body-color);--tblr-modal-bg: var(--tblr-bg-surface);--tblr-modal-border-color: transparent;--tblr-modal-border-width: var(--tblr-border-width);--tblr-modal-border-radius: var(--tblr-border-radius-lg);--tblr-modal-box-shadow: var(--tblr-box-shadow-sm);--tblr-modal-inner-border-radius: calc(var(--tblr-modal-border-radius) - 1px);--tblr-modal-header-padding-x: 1.5rem;--tblr-modal-header-padding-y: 1.5rem;--tblr-modal-header-padding: 1.5rem;--tblr-modal-header-border-color: var(--tblr-border-color);--tblr-modal-header-border-width: var(--tblr-border-width);--tblr-modal-title-line-height: 1.4285714286;--tblr-modal-footer-gap: .75rem;--tblr-modal-footer-bg: var(--tblr-bg-surface-tertiary);--tblr-modal-footer-border-color: var(--tblr-border-color);--tblr-modal-footer-border-width: var(--tblr-border-width);position:fixed;top:0;left:0;z-index:var(--tblr-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--tblr-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transform:translateY(-1rem);transition:transform .3s ease-out}@media(prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--tblr-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--tblr-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--tblr-modal-color);pointer-events:auto;background-color:var(--tblr-modal-bg);background-clip:padding-box;border:var(--tblr-modal-border-width) solid var(--tblr-modal-border-color);border-radius:var(--tblr-modal-border-radius);box-shadow:var(--tblr-modal-box-shadow);outline:0}.modal-backdrop{--tblr-backdrop-zindex: 1050;--tblr-backdrop-bg: var(--tblr-gray-800);--tblr-backdrop-opacity: .24;position:fixed;top:0;left:0;z-index:var(--tblr-backdrop-zindex);width:100vw;height:100vh;background-color:var(--tblr-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--tblr-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--tblr-modal-header-padding);border-bottom:var(--tblr-modal-header-border-width) solid var(--tblr-modal-header-border-color);border-top-left-radius:var(--tblr-modal-inner-border-radius);border-top-right-radius:var(--tblr-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--tblr-modal-header-padding-y) * .5) calc(var(--tblr-modal-header-padding-x) * .5);margin-top:calc(-.5 * var(--tblr-modal-header-padding-y));margin-right:calc(-.5 * var(--tblr-modal-header-padding-x));margin-bottom:calc(-.5 * var(--tblr-modal-header-padding-y));margin-left:auto}.modal-title{margin-bottom:0;line-height:var(--tblr-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--tblr-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--tblr-modal-padding) - var(--tblr-modal-footer-gap) * .5);background-color:var(--tblr-modal-footer-bg);border-top:var(--tblr-modal-footer-border-width) solid var(--tblr-modal-footer-border-color);border-bottom-right-radius:var(--tblr-modal-inner-border-radius);border-bottom-left-radius:var(--tblr-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--tblr-modal-footer-gap) * .5)}@media(min-width:576px){.modal{--tblr-modal-margin: 1.75rem;--tblr-modal-box-shadow: var(--tblr-box-shadow)}.modal-dialog{max-width:var(--tblr-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--tblr-modal-width: 380px}}@media(min-width:992px){.modal-lg,.modal-xl{--tblr-modal-width: 720px}}@media(min-width:1200px){.modal-xl{--tblr-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--tblr-tooltip-zindex: 1080;--tblr-tooltip-max-width: 200px;--tblr-tooltip-padding-x: var(--tblr-spacer-3);--tblr-tooltip-padding-y: var(--tblr-spacer-1);--tblr-tooltip-margin: ;--tblr-tooltip-font-size: .765625rem;--tblr-tooltip-color: var(--tblr-text-inverted);--tblr-tooltip-bg: var(--tblr-bg-surface-inverted);--tblr-tooltip-border-radius: var(--tblr-border-radius);--tblr-tooltip-opacity: .9;--tblr-tooltip-arrow-width: .8rem;--tblr-tooltip-arrow-height: .4rem;z-index:var(--tblr-tooltip-zindex);display:block;margin:var(--tblr-tooltip-margin);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--tblr-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--tblr-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--tblr-tooltip-arrow-width);height:var(--tblr-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1 * var(--tblr-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-top-color:var(--tblr-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-right-color:var(--tblr-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1 * var(--tblr-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-bottom-color:var(--tblr-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:calc(var(--tblr-tooltip-arrow-width) * .5) 0 calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-left-color:var(--tblr-tooltip-bg)}.tooltip-inner{max-width:var(--tblr-tooltip-max-width);padding:var(--tblr-tooltip-padding-y) var(--tblr-tooltip-padding-x);color:var(--tblr-tooltip-color);text-align:center;background-color:var(--tblr-tooltip-bg);border-radius:var(--tblr-tooltip-border-radius)}.popover{--tblr-popover-zindex: 1070;--tblr-popover-max-width: 276px;--tblr-popover-font-size: .765625rem;--tblr-popover-bg: var(--tblr-bg-surface);--tblr-popover-border-width: var(--tblr-border-width);--tblr-popover-border-color: var(--tblr-border-color);--tblr-popover-border-radius: var(--tblr-border-radius-lg);--tblr-popover-inner-border-radius: calc(var(--tblr-border-radius-lg) - var(--tblr-border-width));--tblr-popover-box-shadow: var(--tblr-shadow-lg);--tblr-popover-header-padding-x: 1rem;--tblr-popover-header-padding-y: .5rem;--tblr-popover-header-font-size: .875rem;--tblr-popover-header-color: inherit;--tblr-popover-header-bg: transparent;--tblr-popover-body-padding-x: .5rem;--tblr-popover-body-padding-y: .5rem;--tblr-popover-body-color: inherit;--tblr-popover-arrow-width: 1rem;--tblr-popover-arrow-height: .5rem;--tblr-popover-arrow-border: var(--tblr-popover-border-color);z-index:var(--tblr-popover-zindex);display:block;max-width:var(--tblr-popover-max-width);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--tblr-popover-font-size);word-wrap:break-word;background-color:var(--tblr-popover-bg);background-clip:padding-box;border:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-radius:var(--tblr-popover-border-radius);box-shadow:var(--tblr-popover-box-shadow)}.popover .popover-arrow{display:block;width:var(--tblr-popover-arrow-width);height:var(--tblr-popover-arrow-height)}.popover .popover-arrow:before,.popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width))}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{border-width:var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-top-color:var(--tblr-popover-arrow-border)}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:var(--tblr-popover-border-width);border-top-color:var(--tblr-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-popover-arrow-width)}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{border-width:calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-right-color:var(--tblr-popover-arrow-border)}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:var(--tblr-popover-border-width);border-right-color:var(--tblr-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width))}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{border-width:0 calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-bottom-color:var(--tblr-popover-arrow-border)}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:var(--tblr-popover-border-width);border-bottom-color:var(--tblr-popover-bg)}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--tblr-popover-arrow-width);margin-left:calc(-.5 * var(--tblr-popover-arrow-width));content:"";border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-popover-arrow-width)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{border-width:calc(var(--tblr-popover-arrow-width) * .5) 0 calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-left-color:var(--tblr-popover-arrow-border)}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:var(--tblr-popover-border-width);border-left-color:var(--tblr-popover-bg)}.popover-header{padding:var(--tblr-popover-header-padding-y) var(--tblr-popover-header-padding-x);margin-bottom:0;font-size:var(--tblr-popover-header-font-size);color:var(--tblr-popover-header-color);background-color:var(--tblr-popover-header-bg);border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-top-left-radius:var(--tblr-popover-inner-border-radius);border-top-right-radius:var(--tblr-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--tblr-popover-body-padding-y) var(--tblr-popover-body-padding-x);color:var(--tblr-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;filter:var(--tblr-carousel-control-icon-filter);border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion:reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:1.5rem;height:1.5rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='15 18 9 12 15 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='9 18 15 12 9 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:var(--tblr-carousel-indicator-active-bg);background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:var(--tblr-carousel-caption-color);text-align:center}.carousel-dark{--tblr-carousel-indicator-active-bg: #000000;--tblr-carousel-caption-color: #000000;--tblr-carousel-control-icon-filter: invert(1) grayscale(100)}:root,[data-bs-theme=light]{--tblr-carousel-indicator-active-bg: #ffffff;--tblr-carousel-caption-color: #ffffff;--tblr-carousel-control-icon-filter: }[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{--tblr-carousel-indicator-active-bg: #000000;--tblr-carousel-caption-color: #000000;--tblr-carousel-control-icon-filter: invert(1) grayscale(100)}.spinner-grow,.spinner-border{display:inline-block;flex-shrink:0;width:var(--tblr-spinner-width);height:var(--tblr-spinner-height);vertical-align:var(--tblr-spinner-vertical-align);border-radius:50%;animation:var(--tblr-spinner-animation-speed) linear infinite var(--tblr-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--tblr-spinner-width: 1.5rem;--tblr-spinner-height: 1.5rem;--tblr-spinner-vertical-align: -.125em;--tblr-spinner-border-width: 2px;--tblr-spinner-animation-speed: .75s;--tblr-spinner-animation-name: spinner-border;border:var(--tblr-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--tblr-spinner-width: 1rem;--tblr-spinner-height: 1rem;--tblr-spinner-border-width: 1px}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--tblr-spinner-width: 1.5rem;--tblr-spinner-height: 1.5rem;--tblr-spinner-vertical-align: -.125em;--tblr-spinner-animation-speed: .75s;--tblr-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--tblr-spinner-width: 1rem;--tblr-spinner-height: 1rem}@media(prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--tblr-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--tblr-offcanvas-zindex: 1045;--tblr-offcanvas-width: 400px;--tblr-offcanvas-height: 30vh;--tblr-offcanvas-padding-x: 1.5rem;--tblr-offcanvas-padding-y: 1.5rem;--tblr-offcanvas-color: var(--tblr-body-color);--tblr-offcanvas-bg: var(--tblr-bg-surface);--tblr-offcanvas-border-width: var(--tblr-border-width);--tblr-offcanvas-border-color: var(--tblr-border-color);--tblr-offcanvas-box-shadow: var(--tblr-box-shadow-sm);--tblr-offcanvas-transition: transform .3s ease-in-out;--tblr-offcanvas-title-line-height: 1.4285714286}@media(max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media(max-width:575.98px)and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media(max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width:576px){.offcanvas-sm{--tblr-offcanvas-height: auto;--tblr-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media(max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media(max-width:767.98px)and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media(max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width:768px){.offcanvas-md{--tblr-offcanvas-height: auto;--tblr-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media(max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media(max-width:991.98px)and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media(max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width:992px){.offcanvas-lg{--tblr-offcanvas-height: auto;--tblr-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media(max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media(max-width:1199.98px)and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media(max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width:1200px){.offcanvas-xl{--tblr-offcanvas-height: auto;--tblr-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media(max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media(max-width:1399.98px)and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media(max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width:1400px){.offcanvas-xxl{--tblr-offcanvas-height: auto;--tblr-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}@media(prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translate(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:var(--tblr-gray-800)}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.24}.offcanvas-header{display:flex;align-items:center;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--tblr-offcanvas-padding-y) * .5) calc(var(--tblr-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--tblr-offcanvas-padding-y));margin-right:calc(-.5 * var(--tblr-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--tblr-offcanvas-padding-y));margin-left:auto}.offcanvas-title{margin-bottom:0;line-height:var(--tblr-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.2}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.1}}.placeholder-wave{mask-image:linear-gradient(130deg,#000 55%,#000000e6,#000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{mask-position:-200% 0%}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{object-fit:contain!important}.object-fit-cover{object-fit:cover!important}.object-fit-fill{object-fit:fill!important}.object-fit-scale{object-fit:scale-down!important}.object-fit-none{object-fit:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--tblr-box-shadow)!important}.shadow-sm{box-shadow:var(--tblr-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--tblr-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--tblr-focus-ring-color: rgba(var(--tblr-primary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-secondary{--tblr-focus-ring-color: rgba(var(--tblr-secondary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-success{--tblr-focus-ring-color: rgba(var(--tblr-success-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-info{--tblr-focus-ring-color: rgba(var(--tblr-info-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-warning{--tblr-focus-ring-color: rgba(var(--tblr-warning-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-danger{--tblr-focus-ring-color: rgba(var(--tblr-danger-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-light{--tblr-focus-ring-color: rgba(var(--tblr-light-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-dark{--tblr-focus-ring-color: rgba(var(--tblr-dark-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-muted{--tblr-focus-ring-color: rgba(var(--tblr-muted-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-blue{--tblr-focus-ring-color: rgba(var(--tblr-blue-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-azure{--tblr-focus-ring-color: rgba(var(--tblr-azure-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-indigo{--tblr-focus-ring-color: rgba(var(--tblr-indigo-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-purple{--tblr-focus-ring-color: rgba(var(--tblr-purple-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-pink{--tblr-focus-ring-color: rgba(var(--tblr-pink-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-red{--tblr-focus-ring-color: rgba(var(--tblr-red-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-orange{--tblr-focus-ring-color: rgba(var(--tblr-orange-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-yellow{--tblr-focus-ring-color: rgba(var(--tblr-yellow-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-lime{--tblr-focus-ring-color: rgba(var(--tblr-lime-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-green{--tblr-focus-ring-color: rgba(var(--tblr-green-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-teal{--tblr-focus-ring-color: rgba(var(--tblr-teal-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-cyan{--tblr-focus-ring-color: rgba(var(--tblr-cyan-rgb), var(--tblr-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-wide{border:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-0{border:0!important}.border-top{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-top-wide{border-top:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-end-wide{border-right:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-bottom-wide{border-bottom:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-start-wide{border-left:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-start-0{border-left:0!important}.border-red{--tblr-border-opacity: 1;border-color:rgba(var(--tblr-red-rgb),var(--tblr-border-opacity))!important}.border-green{--tblr-border-opacity: 1;border-color:rgba(var(--tblr-green-rgb),var(--tblr-border-opacity))!important}.border-primary-subtle{border-color:var(--tblr-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--tblr-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--tblr-success-border-subtle)!important}.border-info-subtle{border-color:var(--tblr-info-border-subtle)!important}.border-warning-subtle{border-color:var(--tblr-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--tblr-danger-border-subtle)!important}.border-light-subtle{border-color:var(--tblr-light-border-subtle)!important}.border-dark-subtle{border-color:var(--tblr-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--tblr-border-opacity: .1}.border-opacity-25{--tblr-border-opacity: .25}.border-opacity-50{--tblr-border-opacity: .5}.border-opacity-75{--tblr-border-opacity: .75}.border-opacity-100{--tblr-border-opacity: 1}.w-25{width:25%!important}.w-33{width:33.33333%!important}.w-50{width:50%!important}.w-66{width:66.66666%!important}.w-75{width:75%!important}.w-100{width:100%!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-33{height:33.33333%!important}.h-50{height:50%!important}.h-66{height:66.66666%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:2rem!important}.m-6{margin:2.5rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:2rem!important;margin-left:2rem!important}.mx-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:2rem!important}.mt-6{margin-top:2.5rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:2rem!important}.me-6{margin-right:2.5rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:2rem!important}.mb-6{margin-bottom:2.5rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:2rem!important}.ms-6{margin-left:2.5rem!important}.ms-auto{margin-left:auto!important}.m-n1{margin:-.25rem!important}.m-n2{margin:-.5rem!important}.m-n3{margin:-1rem!important}.m-n4{margin:-1.5rem!important}.m-n5{margin:-2rem!important}.m-n6{margin:-2.5rem!important}.mx-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-n1{margin-top:-.25rem!important}.mt-n2{margin-top:-.5rem!important}.mt-n3{margin-top:-1rem!important}.mt-n4{margin-top:-1.5rem!important}.mt-n5{margin-top:-2rem!important}.mt-n6{margin-top:-2.5rem!important}.me-n1{margin-right:-.25rem!important}.me-n2{margin-right:-.5rem!important}.me-n3{margin-right:-1rem!important}.me-n4{margin-right:-1.5rem!important}.me-n5{margin-right:-2rem!important}.me-n6{margin-right:-2.5rem!important}.mb-n1{margin-bottom:-.25rem!important}.mb-n2{margin-bottom:-.5rem!important}.mb-n3{margin-bottom:-1rem!important}.mb-n4{margin-bottom:-1.5rem!important}.mb-n5{margin-bottom:-2rem!important}.mb-n6{margin-bottom:-2.5rem!important}.ms-n1{margin-left:-.25rem!important}.ms-n2{margin-left:-.5rem!important}.ms-n3{margin-left:-1rem!important}.ms-n4{margin-left:-1.5rem!important}.ms-n5{margin-left:-2rem!important}.ms-n6{margin-left:-2.5rem!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:2rem!important}.p-6{padding:2.5rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:2rem!important;padding-left:2rem!important}.px-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:2rem!important}.pt-6{padding-top:2.5rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:2rem!important}.pe-6{padding-right:2.5rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:2rem!important}.pb-6{padding-bottom:2.5rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:2rem!important}.ps-6{padding-left:2.5rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:2rem!important}.gap-6{gap:2.5rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:2rem!important}.row-gap-6{row-gap:2.5rem!important}.column-gap-0{column-gap:0!important}.column-gap-1{column-gap:.25rem!important}.column-gap-2{column-gap:.5rem!important}.column-gap-3{column-gap:1rem!important}.column-gap-4{column-gap:1.5rem!important}.column-gap-5{column-gap:2rem!important}.column-gap-6{column-gap:2.5rem!important}.font-monospace{font-family:var(--tblr-font-monospace)!important}.fs-1{font-size:1.5rem!important}.fs-2{font-size:1.25rem!important}.fs-3{font-size:1rem!important}.fs-4{font-size:.875rem!important}.fs-5{font-size:.75rem!important}.fs-6{font-size:.625rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold,.fw-bold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.1428571429!important}.lh-base{line-height:1.4285714286!important}.lh-lg{line-height:1.7142857143!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--tblr-text-opacity: 1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important}.text-secondary{--tblr-text-opacity: 1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important}.text-success{--tblr-text-opacity: 1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important}.text-info{--tblr-text-opacity: 1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important}.text-warning{--tblr-text-opacity: 1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important}.text-danger{--tblr-text-opacity: 1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important}.text-light{--tblr-text-opacity: 1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important}.text-dark{--tblr-text-opacity: 1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important}.text-muted{--tblr-text-opacity: 1;color:var(--tblr-secondary-color)!important}.text-blue{--tblr-text-opacity: 1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important}.text-azure{--tblr-text-opacity: 1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important}.text-indigo{--tblr-text-opacity: 1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important}.text-purple{--tblr-text-opacity: 1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important}.text-pink{--tblr-text-opacity: 1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important}.text-red{--tblr-text-opacity: 1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important}.text-orange{--tblr-text-opacity: 1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important}.text-yellow{--tblr-text-opacity: 1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important}.text-lime{--tblr-text-opacity: 1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important}.text-green{--tblr-text-opacity: 1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important}.text-teal{--tblr-text-opacity: 1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important}.text-cyan{--tblr-text-opacity: 1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important}.text-black{--tblr-text-opacity: 1;color:rgba(var(--tblr-black-rgb),var(--tblr-text-opacity))!important}.text-white{--tblr-text-opacity: 1;color:rgba(var(--tblr-white-rgb),var(--tblr-text-opacity))!important}.text-body{--tblr-text-opacity: 1;color:rgba(var(--tblr-body-color-rgb),var(--tblr-text-opacity))!important}.text-black-50{--tblr-text-opacity: 1;color:#00000080!important}.text-white-50{--tblr-text-opacity: 1;color:#ffffff80!important}.text-body-secondary{--tblr-text-opacity: 1;color:var(--tblr-secondary-color)!important}.text-body-tertiary{--tblr-text-opacity: 1;color:var(--tblr-tertiary-color)!important}.text-body-emphasis{--tblr-text-opacity: 1;color:var(--tblr-emphasis-color)!important}.text-reset{--tblr-text-opacity: 1;color:inherit!important}.text-opacity-25{--tblr-text-opacity: .25}.text-opacity-50{--tblr-text-opacity: .5}.text-opacity-75{--tblr-text-opacity: .75}.text-opacity-100{--tblr-text-opacity: 1}.text-primary-emphasis{color:var(--tblr-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--tblr-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--tblr-success-text-emphasis)!important}.text-info-emphasis{color:var(--tblr-info-text-emphasis)!important}.text-warning-emphasis{color:var(--tblr-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--tblr-danger-text-emphasis)!important}.text-light-emphasis{color:var(--tblr-light-text-emphasis)!important}.text-dark-emphasis{color:var(--tblr-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--tblr-link-opacity: .1}.link-opacity-25,.link-opacity-25-hover:hover{--tblr-link-opacity: .25}.link-opacity-50,.link-opacity-50-hover:hover{--tblr-link-opacity: .5}.link-opacity-75,.link-opacity-75-hover:hover{--tblr-link-opacity: .75}.link-opacity-100,.link-opacity-100-hover:hover{--tblr-link-opacity: 1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-secondary{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-success{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-success-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-info{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-info-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-warning{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-danger{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-light{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-light-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-dark{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-muted{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-blue{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-azure{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-indigo{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-purple{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-pink{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-red{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-red-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-orange{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-yellow{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-lime{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-green{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-green-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-teal{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-cyan{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity))!important}.link-underline{--tblr-link-underline-opacity: 1;text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-underline-opacity, 1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--tblr-link-underline-opacity: 0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--tblr-link-underline-opacity: .1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--tblr-link-underline-opacity: .25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--tblr-link-underline-opacity: .5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--tblr-link-underline-opacity: .75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--tblr-link-underline-opacity: 1}.bg-primary{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-primary-rgb),var(--tblr-bg-opacity))!important}.bg-secondary{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-secondary-rgb),var(--tblr-bg-opacity))!important}.bg-success{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-success-rgb),var(--tblr-bg-opacity))!important}.bg-info{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-info-rgb),var(--tblr-bg-opacity))!important}.bg-warning{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-warning-rgb),var(--tblr-bg-opacity))!important}.bg-danger{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-danger-rgb),var(--tblr-bg-opacity))!important}.bg-light{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-light-rgb),var(--tblr-bg-opacity))!important}.bg-dark{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-dark-rgb),var(--tblr-bg-opacity))!important}.bg-muted{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-muted-rgb),var(--tblr-bg-opacity))!important}.bg-blue{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-blue-rgb),var(--tblr-bg-opacity))!important}.bg-azure{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-azure-rgb),var(--tblr-bg-opacity))!important}.bg-indigo{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-indigo-rgb),var(--tblr-bg-opacity))!important}.bg-purple{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-purple-rgb),var(--tblr-bg-opacity))!important}.bg-pink{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-pink-rgb),var(--tblr-bg-opacity))!important}.bg-red{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-red-rgb),var(--tblr-bg-opacity))!important}.bg-orange{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-orange-rgb),var(--tblr-bg-opacity))!important}.bg-yellow{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-yellow-rgb),var(--tblr-bg-opacity))!important}.bg-lime{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-lime-rgb),var(--tblr-bg-opacity))!important}.bg-green{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-green-rgb),var(--tblr-bg-opacity))!important}.bg-teal{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-teal-rgb),var(--tblr-bg-opacity))!important}.bg-cyan{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-cyan-rgb),var(--tblr-bg-opacity))!important}.bg-black{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-black-rgb),var(--tblr-bg-opacity))!important}.bg-white{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-white-rgb),var(--tblr-bg-opacity))!important}.bg-body{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-body-bg-rgb),var(--tblr-bg-opacity))!important}.bg-transparent{--tblr-bg-opacity: 1;background-color:transparent!important}.bg-body-secondary{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-secondary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-body-tertiary{--tblr-bg-opacity: 1;background-color:rgba(var(--tblr-tertiary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-opacity-10{--tblr-bg-opacity: .1}.bg-opacity-25{--tblr-bg-opacity: .25}.bg-opacity-50{--tblr-bg-opacity: .5}.bg-opacity-75{--tblr-bg-opacity: .75}.bg-opacity-100{--tblr-bg-opacity: 1}.bg-primary-subtle{background-color:var(--tblr-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--tblr-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--tblr-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--tblr-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--tblr-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--tblr-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--tblr-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--tblr-dark-bg-subtle)!important}.bg-gradient{background-image:var(--tblr-gradient)!important}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--tblr-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--tblr-border-radius-sm)!important}.rounded-2{border-radius:var(--tblr-border-radius)!important}.rounded-3{border-radius:var(--tblr-border-radius-lg)!important}.rounded-4{border-radius:var(--tblr-border-radius-xl)!important}.rounded-5{border-radius:var(--tblr-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--tblr-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--tblr-border-radius-sm)!important;border-top-right-radius:var(--tblr-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--tblr-border-radius-lg)!important;border-top-right-radius:var(--tblr-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--tblr-border-radius-xl)!important;border-top-right-radius:var(--tblr-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--tblr-border-radius-xxl)!important;border-top-right-radius:var(--tblr-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--tblr-border-radius-pill)!important;border-top-right-radius:var(--tblr-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--tblr-border-radius-sm)!important;border-bottom-right-radius:var(--tblr-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--tblr-border-radius-lg)!important;border-bottom-right-radius:var(--tblr-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--tblr-border-radius-xl)!important;border-bottom-right-radius:var(--tblr-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--tblr-border-radius-xxl)!important;border-bottom-right-radius:var(--tblr-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--tblr-border-radius-pill)!important;border-bottom-right-radius:var(--tblr-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--tblr-border-radius-sm)!important;border-bottom-left-radius:var(--tblr-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--tblr-border-radius-lg)!important;border-bottom-left-radius:var(--tblr-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--tblr-border-radius-xl)!important;border-bottom-left-radius:var(--tblr-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--tblr-border-radius-xxl)!important;border-bottom-left-radius:var(--tblr-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--tblr-border-radius-pill)!important;border-bottom-left-radius:var(--tblr-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--tblr-border-radius-sm)!important;border-top-left-radius:var(--tblr-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--tblr-border-radius-lg)!important;border-top-left-radius:var(--tblr-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--tblr-border-radius-xl)!important;border-top-left-radius:var(--tblr-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--tblr-border-radius-xxl)!important;border-top-left-radius:var(--tblr-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--tblr-border-radius-pill)!important;border-top-left-radius:var(--tblr-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}.object-contain{object-fit:contain!important}.object-cover{object-fit:cover!important}.object-fill{object-fit:fill!important}.object-scale-down{object-fit:scale-down!important}.object-none{object-fit:none!important}.cursor-auto{cursor:auto!important}.cursor-pointer{cursor:pointer!important}.cursor-move{cursor:move!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-zoom-in{cursor:zoom-in!important}.cursor-zoom-out{cursor:zoom-out!important}.cursor-default{cursor:default!important}.cursor-none{cursor:none!important}.cursor-help{cursor:help!important}.cursor-progress{cursor:progress!important}.cursor-wait{cursor:wait!important}.cursor-text{cursor:text!important}.cursor-v-text{cursor:vertical-text!important}.cursor-grab{cursor:grab!important}.cursor-grabbing{cursor:grabbing!important}.cursor-crosshair{cursor:crosshair!important}.border-x{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important;border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-x-wide{border-left:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important;border-right:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-x-0{border-left:0!important;border-right:0!important}.border-y{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important;border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-y-wide{border-top:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important;border-bottom:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-y-0{border-top:0!important;border-bottom:0!important}.columns-2{columns:2!important}.columns-3{columns:3!important}.columns-4{columns:4!important}.bg-pattern-transparent{background:url('data:image/svg+xml;charset=UTF-8,') repeat center/16px 16px!important}.bg-gradient{background:linear-gradient(var(--tblr-gradient-direction, to right),var(--tblr-gradient-stops, var(--tblr-gradient-from, transparent), var(--tblr-gradient-to, transparent))) no-repeat!important}.bg-gradient-to-t{--tblr-gradient-direction: to top !important}.bg-gradient-to-te{--tblr-gradient-direction: to top right !important}.bg-gradient-to-e{--tblr-gradient-direction: to right !important}.bg-gradient-to-be{--tblr-gradient-direction: to bottom right !important}.bg-gradient-to-b{--tblr-gradient-direction: to bottom !important}.bg-gradient-to-bs{--tblr-gradient-direction: to bottom left !important}.bg-gradient-to-s{--tblr-gradient-direction: to left !important}.bg-gradient-to-ts{--tblr-gradient-direction: to top left !important}.table-auto{table-layout:auto!important}.table-fixed{table-layout:fixed!important}@media(min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{object-fit:contain!important}.object-fit-sm-cover{object-fit:cover!important}.object-fit-sm-fill{object-fit:fill!important}.object-fit-sm-scale{object-fit:scale-down!important}.object-fit-sm-none{object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:2rem!important}.m-sm-6{margin:2.5rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:2rem!important;margin-left:2rem!important}.mx-sm-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-sm-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:2rem!important}.mt-sm-6{margin-top:2.5rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:2rem!important}.me-sm-6{margin-right:2.5rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:2rem!important}.mb-sm-6{margin-bottom:2.5rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:2rem!important}.ms-sm-6{margin-left:2.5rem!important}.ms-sm-auto{margin-left:auto!important}.m-sm-n1{margin:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.m-sm-n3{margin:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.m-sm-n5{margin:-2rem!important}.m-sm-n6{margin:-2.5rem!important}.mx-sm-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-sm-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-sm-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-sm-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-sm-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-sm-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-sm-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-sm-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-sm-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-sm-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-sm-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-sm-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-sm-n1{margin-top:-.25rem!important}.mt-sm-n2{margin-top:-.5rem!important}.mt-sm-n3{margin-top:-1rem!important}.mt-sm-n4{margin-top:-1.5rem!important}.mt-sm-n5{margin-top:-2rem!important}.mt-sm-n6{margin-top:-2.5rem!important}.me-sm-n1{margin-right:-.25rem!important}.me-sm-n2{margin-right:-.5rem!important}.me-sm-n3{margin-right:-1rem!important}.me-sm-n4{margin-right:-1.5rem!important}.me-sm-n5{margin-right:-2rem!important}.me-sm-n6{margin-right:-2.5rem!important}.mb-sm-n1{margin-bottom:-.25rem!important}.mb-sm-n2{margin-bottom:-.5rem!important}.mb-sm-n3{margin-bottom:-1rem!important}.mb-sm-n4{margin-bottom:-1.5rem!important}.mb-sm-n5{margin-bottom:-2rem!important}.mb-sm-n6{margin-bottom:-2.5rem!important}.ms-sm-n1{margin-left:-.25rem!important}.ms-sm-n2{margin-left:-.5rem!important}.ms-sm-n3{margin-left:-1rem!important}.ms-sm-n4{margin-left:-1.5rem!important}.ms-sm-n5{margin-left:-2rem!important}.ms-sm-n6{margin-left:-2.5rem!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:2rem!important}.p-sm-6{padding:2.5rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:2rem!important;padding-left:2rem!important}.px-sm-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-sm-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:2rem!important}.pt-sm-6{padding-top:2.5rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:2rem!important}.pe-sm-6{padding-right:2.5rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:2rem!important}.pb-sm-6{padding-bottom:2.5rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:2rem!important}.ps-sm-6{padding-left:2.5rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:2rem!important}.gap-sm-6{gap:2.5rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:2rem!important}.row-gap-sm-6{row-gap:2.5rem!important}.column-gap-sm-0{column-gap:0!important}.column-gap-sm-1{column-gap:.25rem!important}.column-gap-sm-2{column-gap:.5rem!important}.column-gap-sm-3{column-gap:1rem!important}.column-gap-sm-4{column-gap:1.5rem!important}.column-gap-sm-5{column-gap:2rem!important}.column-gap-sm-6{column-gap:2.5rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}.columns-sm-2{columns:2!important}.columns-sm-3{columns:3!important}.columns-sm-4{columns:4!important}}@media(min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{object-fit:contain!important}.object-fit-md-cover{object-fit:cover!important}.object-fit-md-fill{object-fit:fill!important}.object-fit-md-scale{object-fit:scale-down!important}.object-fit-md-none{object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:2rem!important}.m-md-6{margin:2.5rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:2rem!important;margin-left:2rem!important}.mx-md-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-md-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:2rem!important}.mt-md-6{margin-top:2.5rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:2rem!important}.me-md-6{margin-right:2.5rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:2rem!important}.mb-md-6{margin-bottom:2.5rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:2rem!important}.ms-md-6{margin-left:2.5rem!important}.ms-md-auto{margin-left:auto!important}.m-md-n1{margin:-.25rem!important}.m-md-n2{margin:-.5rem!important}.m-md-n3{margin:-1rem!important}.m-md-n4{margin:-1.5rem!important}.m-md-n5{margin:-2rem!important}.m-md-n6{margin:-2.5rem!important}.mx-md-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-md-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-md-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-md-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-md-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-md-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-md-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-md-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-md-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-md-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-md-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-md-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-md-n1{margin-top:-.25rem!important}.mt-md-n2{margin-top:-.5rem!important}.mt-md-n3{margin-top:-1rem!important}.mt-md-n4{margin-top:-1.5rem!important}.mt-md-n5{margin-top:-2rem!important}.mt-md-n6{margin-top:-2.5rem!important}.me-md-n1{margin-right:-.25rem!important}.me-md-n2{margin-right:-.5rem!important}.me-md-n3{margin-right:-1rem!important}.me-md-n4{margin-right:-1.5rem!important}.me-md-n5{margin-right:-2rem!important}.me-md-n6{margin-right:-2.5rem!important}.mb-md-n1{margin-bottom:-.25rem!important}.mb-md-n2{margin-bottom:-.5rem!important}.mb-md-n3{margin-bottom:-1rem!important}.mb-md-n4{margin-bottom:-1.5rem!important}.mb-md-n5{margin-bottom:-2rem!important}.mb-md-n6{margin-bottom:-2.5rem!important}.ms-md-n1{margin-left:-.25rem!important}.ms-md-n2{margin-left:-.5rem!important}.ms-md-n3{margin-left:-1rem!important}.ms-md-n4{margin-left:-1.5rem!important}.ms-md-n5{margin-left:-2rem!important}.ms-md-n6{margin-left:-2.5rem!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:2rem!important}.p-md-6{padding:2.5rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:2rem!important;padding-left:2rem!important}.px-md-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-md-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:2rem!important}.pt-md-6{padding-top:2.5rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:2rem!important}.pe-md-6{padding-right:2.5rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:2rem!important}.pb-md-6{padding-bottom:2.5rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:2rem!important}.ps-md-6{padding-left:2.5rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:2rem!important}.gap-md-6{gap:2.5rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:2rem!important}.row-gap-md-6{row-gap:2.5rem!important}.column-gap-md-0{column-gap:0!important}.column-gap-md-1{column-gap:.25rem!important}.column-gap-md-2{column-gap:.5rem!important}.column-gap-md-3{column-gap:1rem!important}.column-gap-md-4{column-gap:1.5rem!important}.column-gap-md-5{column-gap:2rem!important}.column-gap-md-6{column-gap:2.5rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}.columns-md-2{columns:2!important}.columns-md-3{columns:3!important}.columns-md-4{columns:4!important}}@media(min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{object-fit:contain!important}.object-fit-lg-cover{object-fit:cover!important}.object-fit-lg-fill{object-fit:fill!important}.object-fit-lg-scale{object-fit:scale-down!important}.object-fit-lg-none{object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:2rem!important}.m-lg-6{margin:2.5rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:2rem!important;margin-left:2rem!important}.mx-lg-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-lg-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:2rem!important}.mt-lg-6{margin-top:2.5rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:2rem!important}.me-lg-6{margin-right:2.5rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:2rem!important}.mb-lg-6{margin-bottom:2.5rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:2rem!important}.ms-lg-6{margin-left:2.5rem!important}.ms-lg-auto{margin-left:auto!important}.m-lg-n1{margin:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.m-lg-n3{margin:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.m-lg-n5{margin:-2rem!important}.m-lg-n6{margin:-2.5rem!important}.mx-lg-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-lg-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-lg-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-lg-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-lg-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-lg-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-lg-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-lg-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-lg-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-lg-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-lg-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-lg-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-lg-n1{margin-top:-.25rem!important}.mt-lg-n2{margin-top:-.5rem!important}.mt-lg-n3{margin-top:-1rem!important}.mt-lg-n4{margin-top:-1.5rem!important}.mt-lg-n5{margin-top:-2rem!important}.mt-lg-n6{margin-top:-2.5rem!important}.me-lg-n1{margin-right:-.25rem!important}.me-lg-n2{margin-right:-.5rem!important}.me-lg-n3{margin-right:-1rem!important}.me-lg-n4{margin-right:-1.5rem!important}.me-lg-n5{margin-right:-2rem!important}.me-lg-n6{margin-right:-2.5rem!important}.mb-lg-n1{margin-bottom:-.25rem!important}.mb-lg-n2{margin-bottom:-.5rem!important}.mb-lg-n3{margin-bottom:-1rem!important}.mb-lg-n4{margin-bottom:-1.5rem!important}.mb-lg-n5{margin-bottom:-2rem!important}.mb-lg-n6{margin-bottom:-2.5rem!important}.ms-lg-n1{margin-left:-.25rem!important}.ms-lg-n2{margin-left:-.5rem!important}.ms-lg-n3{margin-left:-1rem!important}.ms-lg-n4{margin-left:-1.5rem!important}.ms-lg-n5{margin-left:-2rem!important}.ms-lg-n6{margin-left:-2.5rem!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:2rem!important}.p-lg-6{padding:2.5rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:2rem!important;padding-left:2rem!important}.px-lg-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-lg-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:2rem!important}.pt-lg-6{padding-top:2.5rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:2rem!important}.pe-lg-6{padding-right:2.5rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:2rem!important}.pb-lg-6{padding-bottom:2.5rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:2rem!important}.ps-lg-6{padding-left:2.5rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:2rem!important}.gap-lg-6{gap:2.5rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:2rem!important}.row-gap-lg-6{row-gap:2.5rem!important}.column-gap-lg-0{column-gap:0!important}.column-gap-lg-1{column-gap:.25rem!important}.column-gap-lg-2{column-gap:.5rem!important}.column-gap-lg-3{column-gap:1rem!important}.column-gap-lg-4{column-gap:1.5rem!important}.column-gap-lg-5{column-gap:2rem!important}.column-gap-lg-6{column-gap:2.5rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}.columns-lg-2{columns:2!important}.columns-lg-3{columns:3!important}.columns-lg-4{columns:4!important}}@media(min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{object-fit:contain!important}.object-fit-xl-cover{object-fit:cover!important}.object-fit-xl-fill{object-fit:fill!important}.object-fit-xl-scale{object-fit:scale-down!important}.object-fit-xl-none{object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:2rem!important}.m-xl-6{margin:2.5rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:2rem!important;margin-left:2rem!important}.mx-xl-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xl-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:2rem!important}.mt-xl-6{margin-top:2.5rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:2rem!important}.me-xl-6{margin-right:2.5rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:2rem!important}.mb-xl-6{margin-bottom:2.5rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:2rem!important}.ms-xl-6{margin-left:2.5rem!important}.ms-xl-auto{margin-left:auto!important}.m-xl-n1{margin:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.m-xl-n3{margin:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.m-xl-n5{margin:-2rem!important}.m-xl-n6{margin:-2.5rem!important}.mx-xl-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-xl-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-xl-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-xl-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-xl-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-xl-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-xl-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-xl-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-xl-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-xl-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-xl-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-xl-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-xl-n1{margin-top:-.25rem!important}.mt-xl-n2{margin-top:-.5rem!important}.mt-xl-n3{margin-top:-1rem!important}.mt-xl-n4{margin-top:-1.5rem!important}.mt-xl-n5{margin-top:-2rem!important}.mt-xl-n6{margin-top:-2.5rem!important}.me-xl-n1{margin-right:-.25rem!important}.me-xl-n2{margin-right:-.5rem!important}.me-xl-n3{margin-right:-1rem!important}.me-xl-n4{margin-right:-1.5rem!important}.me-xl-n5{margin-right:-2rem!important}.me-xl-n6{margin-right:-2.5rem!important}.mb-xl-n1{margin-bottom:-.25rem!important}.mb-xl-n2{margin-bottom:-.5rem!important}.mb-xl-n3{margin-bottom:-1rem!important}.mb-xl-n4{margin-bottom:-1.5rem!important}.mb-xl-n5{margin-bottom:-2rem!important}.mb-xl-n6{margin-bottom:-2.5rem!important}.ms-xl-n1{margin-left:-.25rem!important}.ms-xl-n2{margin-left:-.5rem!important}.ms-xl-n3{margin-left:-1rem!important}.ms-xl-n4{margin-left:-1.5rem!important}.ms-xl-n5{margin-left:-2rem!important}.ms-xl-n6{margin-left:-2.5rem!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:2rem!important}.p-xl-6{padding:2.5rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:2rem!important;padding-left:2rem!important}.px-xl-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xl-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:2rem!important}.pt-xl-6{padding-top:2.5rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:2rem!important}.pe-xl-6{padding-right:2.5rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:2rem!important}.pb-xl-6{padding-bottom:2.5rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:2rem!important}.ps-xl-6{padding-left:2.5rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:2rem!important}.gap-xl-6{gap:2.5rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:2rem!important}.row-gap-xl-6{row-gap:2.5rem!important}.column-gap-xl-0{column-gap:0!important}.column-gap-xl-1{column-gap:.25rem!important}.column-gap-xl-2{column-gap:.5rem!important}.column-gap-xl-3{column-gap:1rem!important}.column-gap-xl-4{column-gap:1.5rem!important}.column-gap-xl-5{column-gap:2rem!important}.column-gap-xl-6{column-gap:2.5rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}.columns-xl-2{columns:2!important}.columns-xl-3{columns:3!important}.columns-xl-4{columns:4!important}}@media(min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{object-fit:contain!important}.object-fit-xxl-cover{object-fit:cover!important}.object-fit-xxl-fill{object-fit:fill!important}.object-fit-xxl-scale{object-fit:scale-down!important}.object-fit-xxl-none{object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:2rem!important}.m-xxl-6{margin:2.5rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:2rem!important;margin-left:2rem!important}.mx-xxl-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xxl-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:2rem!important}.mt-xxl-6{margin-top:2.5rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:2rem!important}.me-xxl-6{margin-right:2.5rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:2rem!important}.mb-xxl-6{margin-bottom:2.5rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:2rem!important}.ms-xxl-6{margin-left:2.5rem!important}.ms-xxl-auto{margin-left:auto!important}.m-xxl-n1{margin:-.25rem!important}.m-xxl-n2{margin:-.5rem!important}.m-xxl-n3{margin:-1rem!important}.m-xxl-n4{margin:-1.5rem!important}.m-xxl-n5{margin:-2rem!important}.m-xxl-n6{margin:-2.5rem!important}.mx-xxl-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-xxl-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-xxl-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-xxl-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-xxl-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-xxl-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-xxl-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-xxl-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-xxl-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-xxl-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-xxl-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-xxl-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-xxl-n1{margin-top:-.25rem!important}.mt-xxl-n2{margin-top:-.5rem!important}.mt-xxl-n3{margin-top:-1rem!important}.mt-xxl-n4{margin-top:-1.5rem!important}.mt-xxl-n5{margin-top:-2rem!important}.mt-xxl-n6{margin-top:-2.5rem!important}.me-xxl-n1{margin-right:-.25rem!important}.me-xxl-n2{margin-right:-.5rem!important}.me-xxl-n3{margin-right:-1rem!important}.me-xxl-n4{margin-right:-1.5rem!important}.me-xxl-n5{margin-right:-2rem!important}.me-xxl-n6{margin-right:-2.5rem!important}.mb-xxl-n1{margin-bottom:-.25rem!important}.mb-xxl-n2{margin-bottom:-.5rem!important}.mb-xxl-n3{margin-bottom:-1rem!important}.mb-xxl-n4{margin-bottom:-1.5rem!important}.mb-xxl-n5{margin-bottom:-2rem!important}.mb-xxl-n6{margin-bottom:-2.5rem!important}.ms-xxl-n1{margin-left:-.25rem!important}.ms-xxl-n2{margin-left:-.5rem!important}.ms-xxl-n3{margin-left:-1rem!important}.ms-xxl-n4{margin-left:-1.5rem!important}.ms-xxl-n5{margin-left:-2rem!important}.ms-xxl-n6{margin-left:-2.5rem!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:2rem!important}.p-xxl-6{padding:2.5rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:2rem!important;padding-left:2rem!important}.px-xxl-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xxl-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:2rem!important}.pt-xxl-6{padding-top:2.5rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:2rem!important}.pe-xxl-6{padding-right:2.5rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:2rem!important}.pb-xxl-6{padding-bottom:2.5rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:2rem!important}.ps-xxl-6{padding-left:2.5rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:2rem!important}.gap-xxl-6{gap:2.5rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:2rem!important}.row-gap-xxl-6{row-gap:2.5rem!important}.column-gap-xxl-0{column-gap:0!important}.column-gap-xxl-1{column-gap:.25rem!important}.column-gap-xxl-2{column-gap:.5rem!important}.column-gap-xxl-3{column-gap:1rem!important}.column-gap-xxl-4{column-gap:1.5rem!important}.column-gap-xxl-5{column-gap:2rem!important}.column-gap-xxl-6{column-gap:2.5rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}.columns-xxl-2{columns:2!important}.columns-xxl-3{columns:3!important}.columns-xxl-4{columns:4!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}:root,:host{--tblr-font-monospace: Roboto Mono;--tblr-font-sans-serif: Inter, system-ui, sans-serif;--tblr-font-serif: Georgia, Times New Roman, times, serif;--tblr-font-comic: Comic Sans MS, Comic Sans, Chalkboard SE, Comic Neue, sans-serif, cursive;--tblr-gray-50: #f9fafb;--tblr-gray-100: #f3f4f6;--tblr-gray-200: #e5e7eb;--tblr-gray-300: #d1d5db;--tblr-gray-400: #9ca3af;--tblr-gray-500: #6b7280;--tblr-gray-600: #4b5563;--tblr-gray-700: #374151;--tblr-gray-800: #1f2937;--tblr-gray-900: #111827;--tblr-gray-950: #030712;--tblr-white: #ffffff;--tblr-black: #000000;--tblr-brand: #00857D;--tblr-primary: #00857D;--tblr-primary-rgb: 0, 133, 125;--tblr-primary-fg: var(--tblr-light);--tblr-primary-darken: rgb(0, 119.7, 112.5);--tblr-primary-darken: color-mix(in oklab, var(--tblr-primary), transparent 20%);--tblr-primary-lt: rgb(229.5, 242.8, 242);--tblr-primary-lt: color-mix(in oklab, var(--tblr-primary) 10%, transparent);--tblr-primary-200: color-mix(in oklab, var(--tblr-primary) 20%, transparent);--tblr-primary-lt-rgb: 230, 243, 242;--tblr-secondary: #6b7280;--tblr-secondary-rgb: 107, 114, 128;--tblr-secondary-fg: var(--tblr-light);--tblr-secondary-darken: rgb(96.3, 102.6, 115.2);--tblr-secondary-darken: color-mix(in oklab, var(--tblr-secondary), transparent 20%);--tblr-secondary-lt: rgb(240.2, 240.9, 242.3);--tblr-secondary-lt: color-mix(in oklab, var(--tblr-secondary) 10%, transparent);--tblr-secondary-200: color-mix(in oklab, var(--tblr-secondary) 20%, transparent);--tblr-secondary-lt-rgb: 240, 241, 242;--tblr-success: #2fb344;--tblr-success-rgb: 47, 179, 68;--tblr-success-fg: var(--tblr-light);--tblr-success-darken: rgb(42.3, 161.1, 61.2);--tblr-success-darken: color-mix(in oklab, var(--tblr-success), transparent 20%);--tblr-success-lt: rgb(234.2, 247.4, 236.3);--tblr-success-lt: color-mix(in oklab, var(--tblr-success) 10%, transparent);--tblr-success-200: color-mix(in oklab, var(--tblr-success) 20%, transparent);--tblr-success-lt-rgb: 234, 247, 236;--tblr-info: #4299e1;--tblr-info-rgb: 66, 153, 225;--tblr-info-fg: var(--tblr-light);--tblr-info-darken: rgb(59.4, 137.7, 202.5);--tblr-info-darken: color-mix(in oklab, var(--tblr-info), transparent 20%);--tblr-info-lt: rgb(236.1, 244.8, 252);--tblr-info-lt: color-mix(in oklab, var(--tblr-info) 10%, transparent);--tblr-info-200: color-mix(in oklab, var(--tblr-info) 20%, transparent);--tblr-info-lt-rgb: 236, 245, 252;--tblr-warning: #f59f00;--tblr-warning-rgb: 245, 159, 0;--tblr-warning-fg: var(--tblr-light);--tblr-warning-darken: rgb(220.5, 143.1, 0);--tblr-warning-darken: color-mix(in oklab, var(--tblr-warning), transparent 20%);--tblr-warning-lt: rgb(254, 245.4, 229.5);--tblr-warning-lt: color-mix(in oklab, var(--tblr-warning) 10%, transparent);--tblr-warning-200: color-mix(in oklab, var(--tblr-warning) 20%, transparent);--tblr-warning-lt-rgb: 254, 245, 230;--tblr-danger: #d63939;--tblr-danger-rgb: 214, 57, 57;--tblr-danger-fg: var(--tblr-light);--tblr-danger-darken: rgb(192.6, 51.3, 51.3);--tblr-danger-darken: color-mix(in oklab, var(--tblr-danger), transparent 20%);--tblr-danger-lt: rgb(250.9, 235.2, 235.2);--tblr-danger-lt: color-mix(in oklab, var(--tblr-danger) 10%, transparent);--tblr-danger-200: color-mix(in oklab, var(--tblr-danger) 20%, transparent);--tblr-danger-lt-rgb: 251, 235, 235;--tblr-light: #f9fafb;--tblr-light-rgb: 249, 250, 251;--tblr-light-fg: var(--tblr-dark);--tblr-light-darken: rgb(224.1, 225, 225.9);--tblr-light-darken: color-mix(in oklab, var(--tblr-light), transparent 20%);--tblr-light-lt: rgb(254.4, 254.5, 254.6);--tblr-light-lt: color-mix(in oklab, var(--tblr-light) 10%, transparent);--tblr-light-200: color-mix(in oklab, var(--tblr-light) 20%, transparent);--tblr-light-lt-rgb: 254, 255, 255;--tblr-dark: #1f2937;--tblr-dark-rgb: 31, 41, 55;--tblr-dark-fg: var(--tblr-light);--tblr-dark-darken: rgb(27.9, 36.9, 49.5);--tblr-dark-darken: color-mix(in oklab, var(--tblr-dark), transparent 20%);--tblr-dark-lt: rgb(232.6, 233.6, 235);--tblr-dark-lt: color-mix(in oklab, var(--tblr-dark) 10%, transparent);--tblr-dark-200: color-mix(in oklab, var(--tblr-dark) 20%, transparent);--tblr-dark-lt-rgb: 233, 234, 235;--tblr-muted: #6b7280;--tblr-muted-rgb: 107, 114, 128;--tblr-muted-fg: var(--tblr-light);--tblr-muted-darken: rgb(96.3, 102.6, 115.2);--tblr-muted-darken: color-mix(in oklab, var(--tblr-muted), transparent 20%);--tblr-muted-lt: rgb(240.2, 240.9, 242.3);--tblr-muted-lt: color-mix(in oklab, var(--tblr-muted) 10%, transparent);--tblr-muted-200: color-mix(in oklab, var(--tblr-muted) 20%, transparent);--tblr-muted-lt-rgb: 240, 241, 242;--tblr-blue: #066fd1;--tblr-blue-rgb: 6, 111, 209;--tblr-blue-fg: var(--tblr-light);--tblr-blue-darken: rgb(5.4, 99.9, 188.1);--tblr-blue-darken: color-mix(in oklab, var(--tblr-blue), transparent 20%);--tblr-blue-lt: rgb(230.1, 240.6, 250.4);--tblr-blue-lt: color-mix(in oklab, var(--tblr-blue) 10%, transparent);--tblr-blue-200: color-mix(in oklab, var(--tblr-blue) 20%, transparent);--tblr-blue-lt-rgb: 230, 241, 250;--tblr-azure: #4299e1;--tblr-azure-rgb: 66, 153, 225;--tblr-azure-fg: var(--tblr-light);--tblr-azure-darken: rgb(59.4, 137.7, 202.5);--tblr-azure-darken: color-mix(in oklab, var(--tblr-azure), transparent 20%);--tblr-azure-lt: rgb(236.1, 244.8, 252);--tblr-azure-lt: color-mix(in oklab, var(--tblr-azure) 10%, transparent);--tblr-azure-200: color-mix(in oklab, var(--tblr-azure) 20%, transparent);--tblr-azure-lt-rgb: 236, 245, 252;--tblr-indigo: #4263eb;--tblr-indigo-rgb: 66, 99, 235;--tblr-indigo-fg: var(--tblr-light);--tblr-indigo-darken: rgb(59.4, 89.1, 211.5);--tblr-indigo-darken: color-mix(in oklab, var(--tblr-indigo), transparent 20%);--tblr-indigo-lt: rgb(236.1, 239.4, 253);--tblr-indigo-lt: color-mix(in oklab, var(--tblr-indigo) 10%, transparent);--tblr-indigo-200: color-mix(in oklab, var(--tblr-indigo) 20%, transparent);--tblr-indigo-lt-rgb: 236, 239, 253;--tblr-purple: #ae3ec9;--tblr-purple-rgb: 174, 62, 201;--tblr-purple-fg: var(--tblr-light);--tblr-purple-darken: rgb(156.6, 55.8, 180.9);--tblr-purple-darken: color-mix(in oklab, var(--tblr-purple), transparent 20%);--tblr-purple-lt: rgb(246.9, 235.7, 249.6);--tblr-purple-lt: color-mix(in oklab, var(--tblr-purple) 10%, transparent);--tblr-purple-200: color-mix(in oklab, var(--tblr-purple) 20%, transparent);--tblr-purple-lt-rgb: 247, 236, 250;--tblr-pink: #d6336c;--tblr-pink-rgb: 214, 51, 108;--tblr-pink-fg: var(--tblr-light);--tblr-pink-darken: rgb(192.6, 45.9, 97.2);--tblr-pink-darken: color-mix(in oklab, var(--tblr-pink), transparent 20%);--tblr-pink-lt: rgb(250.9, 234.6, 240.3);--tblr-pink-lt: color-mix(in oklab, var(--tblr-pink) 10%, transparent);--tblr-pink-200: color-mix(in oklab, var(--tblr-pink) 20%, transparent);--tblr-pink-lt-rgb: 251, 235, 240;--tblr-red: #d63939;--tblr-red-rgb: 214, 57, 57;--tblr-red-fg: var(--tblr-light);--tblr-red-darken: rgb(192.6, 51.3, 51.3);--tblr-red-darken: color-mix(in oklab, var(--tblr-red), transparent 20%);--tblr-red-lt: rgb(250.9, 235.2, 235.2);--tblr-red-lt: color-mix(in oklab, var(--tblr-red) 10%, transparent);--tblr-red-200: color-mix(in oklab, var(--tblr-red) 20%, transparent);--tblr-red-lt-rgb: 251, 235, 235;--tblr-orange: #f76707;--tblr-orange-rgb: 247, 103, 7;--tblr-orange-fg: var(--tblr-light);--tblr-orange-darken: rgb(222.3, 92.7, 6.3);--tblr-orange-darken: color-mix(in oklab, var(--tblr-orange), transparent 20%);--tblr-orange-lt: rgb(254.2, 239.8, 230.2);--tblr-orange-lt: color-mix(in oklab, var(--tblr-orange) 10%, transparent);--tblr-orange-200: color-mix(in oklab, var(--tblr-orange) 20%, transparent);--tblr-orange-lt-rgb: 254, 240, 230;--tblr-yellow: #f59f00;--tblr-yellow-rgb: 245, 159, 0;--tblr-yellow-fg: var(--tblr-light);--tblr-yellow-darken: rgb(220.5, 143.1, 0);--tblr-yellow-darken: color-mix(in oklab, var(--tblr-yellow), transparent 20%);--tblr-yellow-lt: rgb(254, 245.4, 229.5);--tblr-yellow-lt: color-mix(in oklab, var(--tblr-yellow) 10%, transparent);--tblr-yellow-200: color-mix(in oklab, var(--tblr-yellow) 20%, transparent);--tblr-yellow-lt-rgb: 254, 245, 230;--tblr-lime: #74b816;--tblr-lime-rgb: 116, 184, 22;--tblr-lime-fg: var(--tblr-light);--tblr-lime-darken: rgb(104.4, 165.6, 19.8);--tblr-lime-darken: color-mix(in oklab, var(--tblr-lime), transparent 20%);--tblr-lime-lt: rgb(241.1, 247.9, 231.7);--tblr-lime-lt: color-mix(in oklab, var(--tblr-lime) 10%, transparent);--tblr-lime-200: color-mix(in oklab, var(--tblr-lime) 20%, transparent);--tblr-lime-lt-rgb: 241, 248, 232;--tblr-green: #2fb344;--tblr-green-rgb: 47, 179, 68;--tblr-green-fg: var(--tblr-light);--tblr-green-darken: rgb(42.3, 161.1, 61.2);--tblr-green-darken: color-mix(in oklab, var(--tblr-green), transparent 20%);--tblr-green-lt: rgb(234.2, 247.4, 236.3);--tblr-green-lt: color-mix(in oklab, var(--tblr-green) 10%, transparent);--tblr-green-200: color-mix(in oklab, var(--tblr-green) 20%, transparent);--tblr-green-lt-rgb: 234, 247, 236;--tblr-teal: #0ca678;--tblr-teal-rgb: 12, 166, 120;--tblr-teal-fg: var(--tblr-light);--tblr-teal-darken: rgb(10.8, 149.4, 108);--tblr-teal-darken: color-mix(in oklab, var(--tblr-teal), transparent 20%);--tblr-teal-lt: rgb(230.7, 246.1, 241.5);--tblr-teal-lt: color-mix(in oklab, var(--tblr-teal) 10%, transparent);--tblr-teal-200: color-mix(in oklab, var(--tblr-teal) 20%, transparent);--tblr-teal-lt-rgb: 231, 246, 242;--tblr-cyan: #17a2b8;--tblr-cyan-rgb: 23, 162, 184;--tblr-cyan-fg: var(--tblr-light);--tblr-cyan-darken: rgb(20.7, 145.8, 165.6);--tblr-cyan-darken: color-mix(in oklab, var(--tblr-cyan), transparent 20%);--tblr-cyan-lt: rgb(231.8, 245.7, 247.9);--tblr-cyan-lt: color-mix(in oklab, var(--tblr-cyan) 10%, transparent);--tblr-cyan-200: color-mix(in oklab, var(--tblr-cyan) 20%, transparent);--tblr-cyan-lt-rgb: 232, 246, 248;--tblr-x: #000000;--tblr-x-rgb: 0, 0, 0;--tblr-x-fg: var(--tblr-light);--tblr-x-darken: black;--tblr-x-darken: color-mix(in oklab, var(--tblr-x), transparent 20%);--tblr-x-lt: rgb(229.5, 229.5, 229.5);--tblr-x-lt: color-mix(in oklab, var(--tblr-x) 10%, transparent);--tblr-x-200: color-mix(in oklab, var(--tblr-x) 20%, transparent);--tblr-x-lt-rgb: 230, 230, 230;--tblr-facebook: #1877f2;--tblr-facebook-rgb: 24, 119, 242;--tblr-facebook-fg: var(--tblr-light);--tblr-facebook-darken: rgb(21.6, 107.1, 217.8);--tblr-facebook-darken: color-mix(in oklab, var(--tblr-facebook), transparent 20%);--tblr-facebook-lt: rgb(231.9, 241.4, 253.7);--tblr-facebook-lt: color-mix(in oklab, var(--tblr-facebook) 10%, transparent);--tblr-facebook-200: color-mix(in oklab, var(--tblr-facebook) 20%, transparent);--tblr-facebook-lt-rgb: 232, 241, 254;--tblr-twitter: #1da1f2;--tblr-twitter-rgb: 29, 161, 242;--tblr-twitter-fg: var(--tblr-light);--tblr-twitter-darken: rgb(26.1, 144.9, 217.8);--tblr-twitter-darken: color-mix(in oklab, var(--tblr-twitter), transparent 20%);--tblr-twitter-lt: rgb(232.4, 245.6, 253.7);--tblr-twitter-lt: color-mix(in oklab, var(--tblr-twitter) 10%, transparent);--tblr-twitter-200: color-mix(in oklab, var(--tblr-twitter) 20%, transparent);--tblr-twitter-lt-rgb: 232, 246, 254;--tblr-linkedin: #0a66c2;--tblr-linkedin-rgb: 10, 102, 194;--tblr-linkedin-fg: var(--tblr-light);--tblr-linkedin-darken: rgb(9, 91.8, 174.6);--tblr-linkedin-darken: color-mix(in oklab, var(--tblr-linkedin), transparent 20%);--tblr-linkedin-lt: rgb(230.5, 239.7, 248.9);--tblr-linkedin-lt: color-mix(in oklab, var(--tblr-linkedin) 10%, transparent);--tblr-linkedin-200: color-mix(in oklab, var(--tblr-linkedin) 20%, transparent);--tblr-linkedin-lt-rgb: 231, 240, 249;--tblr-google: #dc4e41;--tblr-google-rgb: 220, 78, 65;--tblr-google-fg: var(--tblr-light);--tblr-google-darken: rgb(198, 70.2, 58.5);--tblr-google-darken: color-mix(in oklab, var(--tblr-google), transparent 20%);--tblr-google-lt: rgb(251.5, 237.3, 236);--tblr-google-lt: color-mix(in oklab, var(--tblr-google) 10%, transparent);--tblr-google-200: color-mix(in oklab, var(--tblr-google) 20%, transparent);--tblr-google-lt-rgb: 252, 237, 236;--tblr-youtube: #ff0000;--tblr-youtube-rgb: 255, 0, 0;--tblr-youtube-fg: var(--tblr-light);--tblr-youtube-darken: rgb(229.5, 0, 0);--tblr-youtube-darken: color-mix(in oklab, var(--tblr-youtube), transparent 20%);--tblr-youtube-lt: rgb(255, 229.5, 229.5);--tblr-youtube-lt: color-mix(in oklab, var(--tblr-youtube) 10%, transparent);--tblr-youtube-200: color-mix(in oklab, var(--tblr-youtube) 20%, transparent);--tblr-youtube-lt-rgb: 255, 230, 230;--tblr-vimeo: #1ab7ea;--tblr-vimeo-rgb: 26, 183, 234;--tblr-vimeo-fg: var(--tblr-light);--tblr-vimeo-darken: rgb(23.4, 164.7, 210.6);--tblr-vimeo-darken: color-mix(in oklab, var(--tblr-vimeo), transparent 20%);--tblr-vimeo-lt: rgb(232.1, 247.8, 252.9);--tblr-vimeo-lt: color-mix(in oklab, var(--tblr-vimeo) 10%, transparent);--tblr-vimeo-200: color-mix(in oklab, var(--tblr-vimeo) 20%, transparent);--tblr-vimeo-lt-rgb: 232, 248, 253;--tblr-dribbble: #ea4c89;--tblr-dribbble-rgb: 234, 76, 137;--tblr-dribbble-fg: var(--tblr-light);--tblr-dribbble-darken: rgb(210.6, 68.4, 123.3);--tblr-dribbble-darken: color-mix(in oklab, var(--tblr-dribbble), transparent 20%);--tblr-dribbble-lt: rgb(252.9, 237.1, 243.2);--tblr-dribbble-lt: color-mix(in oklab, var(--tblr-dribbble) 10%, transparent);--tblr-dribbble-200: color-mix(in oklab, var(--tblr-dribbble) 20%, transparent);--tblr-dribbble-lt-rgb: 253, 237, 243;--tblr-github: #181717;--tblr-github-rgb: 24, 23, 23;--tblr-github-fg: var(--tblr-light);--tblr-github-darken: rgb(21.6, 20.7, 20.7);--tblr-github-darken: color-mix(in oklab, var(--tblr-github), transparent 20%);--tblr-github-lt: rgb(231.9, 231.8, 231.8);--tblr-github-lt: color-mix(in oklab, var(--tblr-github) 10%, transparent);--tblr-github-200: color-mix(in oklab, var(--tblr-github) 20%, transparent);--tblr-github-lt-rgb: 232, 232, 232;--tblr-instagram: #e4405f;--tblr-instagram-rgb: 228, 64, 95;--tblr-instagram-fg: var(--tblr-light);--tblr-instagram-darken: rgb(205.2, 57.6, 85.5);--tblr-instagram-darken: color-mix(in oklab, var(--tblr-instagram), transparent 20%);--tblr-instagram-lt: rgb(252.3, 235.9, 239);--tblr-instagram-lt: color-mix(in oklab, var(--tblr-instagram) 10%, transparent);--tblr-instagram-200: color-mix(in oklab, var(--tblr-instagram) 20%, transparent);--tblr-instagram-lt-rgb: 252, 236, 239;--tblr-pinterest: #bd081c;--tblr-pinterest-rgb: 189, 8, 28;--tblr-pinterest-fg: var(--tblr-light);--tblr-pinterest-darken: rgb(170.1, 7.2, 25.2);--tblr-pinterest-darken: color-mix(in oklab, var(--tblr-pinterest), transparent 20%);--tblr-pinterest-lt: rgb(248.4, 230.3, 232.3);--tblr-pinterest-lt: color-mix(in oklab, var(--tblr-pinterest) 10%, transparent);--tblr-pinterest-200: color-mix(in oklab, var(--tblr-pinterest) 20%, transparent);--tblr-pinterest-lt-rgb: 248, 230, 232;--tblr-vk: #6383a8;--tblr-vk-rgb: 99, 131, 168;--tblr-vk-fg: var(--tblr-light);--tblr-vk-darken: rgb(89.1, 117.9, 151.2);--tblr-vk-darken: color-mix(in oklab, var(--tblr-vk), transparent 20%);--tblr-vk-lt: rgb(239.4, 242.6, 246.3);--tblr-vk-lt: color-mix(in oklab, var(--tblr-vk) 10%, transparent);--tblr-vk-200: color-mix(in oklab, var(--tblr-vk) 20%, transparent);--tblr-vk-lt-rgb: 239, 243, 246;--tblr-rss: #ffa500;--tblr-rss-rgb: 255, 165, 0;--tblr-rss-fg: var(--tblr-light);--tblr-rss-darken: rgb(229.5, 148.5, 0);--tblr-rss-darken: color-mix(in oklab, var(--tblr-rss), transparent 20%);--tblr-rss-lt: rgb(255, 246, 229.5);--tblr-rss-lt: color-mix(in oklab, var(--tblr-rss) 10%, transparent);--tblr-rss-200: color-mix(in oklab, var(--tblr-rss) 20%, transparent);--tblr-rss-lt-rgb: 255, 246, 230;--tblr-flickr: #0063dc;--tblr-flickr-rgb: 0, 99, 220;--tblr-flickr-fg: var(--tblr-light);--tblr-flickr-darken: rgb(0, 89.1, 198);--tblr-flickr-darken: color-mix(in oklab, var(--tblr-flickr), transparent 20%);--tblr-flickr-lt: rgb(229.5, 239.4, 251.5);--tblr-flickr-lt: color-mix(in oklab, var(--tblr-flickr) 10%, transparent);--tblr-flickr-200: color-mix(in oklab, var(--tblr-flickr) 20%, transparent);--tblr-flickr-lt-rgb: 230, 239, 252;--tblr-bitbucket: #0052cc;--tblr-bitbucket-rgb: 0, 82, 204;--tblr-bitbucket-fg: var(--tblr-light);--tblr-bitbucket-darken: rgb(0, 73.8, 183.6);--tblr-bitbucket-darken: color-mix(in oklab, var(--tblr-bitbucket), transparent 20%);--tblr-bitbucket-lt: rgb(229.5, 237.7, 249.9);--tblr-bitbucket-lt: color-mix(in oklab, var(--tblr-bitbucket) 10%, transparent);--tblr-bitbucket-200: color-mix(in oklab, var(--tblr-bitbucket) 20%, transparent);--tblr-bitbucket-lt-rgb: 230, 238, 250;--tblr-tabler: #066fd1;--tblr-tabler-rgb: 6, 111, 209;--tblr-tabler-fg: var(--tblr-light);--tblr-tabler-darken: rgb(5.4, 99.9, 188.1);--tblr-tabler-darken: color-mix(in oklab, var(--tblr-tabler), transparent 20%);--tblr-tabler-lt: rgb(230.1, 240.6, 250.4);--tblr-tabler-lt: color-mix(in oklab, var(--tblr-tabler) 10%, transparent);--tblr-tabler-200: color-mix(in oklab, var(--tblr-tabler) 20%, transparent);--tblr-tabler-lt-rgb: 230, 241, 250;--tblr-gray-50-fg: var(--tblr-body-color);--tblr-gray-100-fg: var(--tblr-body-color);--tblr-gray-200-fg: var(--tblr-body-color);--tblr-gray-300-fg: var(--tblr-body-color);--tblr-gray-400-fg: var(--tblr-white);--tblr-gray-500-fg: var(--tblr-white);--tblr-gray-600-fg: var(--tblr-white);--tblr-gray-700-fg: var(--tblr-white);--tblr-gray-800-fg: var(--tblr-white);--tblr-gray-900-fg: var(--tblr-white);--tblr-gray-950-fg: var(--tblr-white);--tblr-spacer-0: 0;--tblr-spacer-1: .25rem;--tblr-spacer-2: .5rem;--tblr-spacer-3: 1rem;--tblr-spacer-4: 1.5rem;--tblr-spacer-5: 2rem;--tblr-spacer-6: 2.5rem;--tblr-font-weight-light: 300;--tblr-font-weight-normal: 400;--tblr-font-weight-medium: 500;--tblr-font-weight-bold: 600;--tblr-font-weight-black: 700;--tblr-font-weight-headings: var(--tblr-font-weight-bold);--tblr-font-size-h1: 1.5rem;--tblr-font-size-h2: 1.25rem;--tblr-font-size-h3: 1rem;--tblr-font-size-h4: .875rem;--tblr-font-size-h5: .75rem;--tblr-font-size-h6: .625rem;--tblr-line-height-h1: 2rem;--tblr-line-height-h2: 1.75rem;--tblr-line-height-h3: 1.5rem;--tblr-line-height-h4: 1.25rem;--tblr-line-height-h5: 1rem;--tblr-line-height-h6: 1rem;--tblr-shadow: rgba(var(--tblr-body-color-rgb), .04) 0 2px 4px 0;--tblr-shadow-border: inset 0 0 0 1px var(--tblr-border-color-translucent);--tblr-shadow-transparent: 0 0 0 0 transparent;--tblr-shadow-input: 0 1px 1px rgba(var(--tblr-body-color-rgb), .06);--tblr-shadow-card: 0 0 4px rgba(var(--tblr-body-color-rgb), .04);--tblr-shadow-card-hover: rgba(var(--tblr-body-color-rgb), .16) 0 2px 16px 0;--tblr-shadow-dropdown: 0 16px 24px 2px rgba(0, 0, 0, .07), 0 6px 30px 5px rgba(0, 0, 0, .06), 0 8px 10px -5px rgba(0, 0, 0, .1);--tblr-border-radius-scale: 1;--tblr-border-radius-0: calc(0 * var(--tblr-border-radius-scale, 1));--tblr-border-radius-sm: calc(4px * var(--tblr-border-radius-scale, 1));--tblr-border-radius-md: calc(6px * var(--tblr-border-radius-scale, 1));--tblr-border-radius-lg: calc(8px * var(--tblr-border-radius-scale, 1));--tblr-border-radius-pill: calc(100rem * var(--tblr-border-radius-scale, 1));--tblr-border-radius: var(--tblr-border-radius-md);--tblr-backdrop-opacity: 24%;--tblr-backdrop-bg: var(--tblr-bg-surface-dark);--tblr-backdrop-bg-dark: color-mix(in srgb, var(--tblr-color-dark), transparent var(--tblr-backdrop-opacity));--tblr-backdrop-bg-light: color-mix(in srgb, var(--tblr-color-light), transparent var(--tblr-backdrop-opacity));--tblr-backdrop-blur: 4px;--tblr-backdrop-filter: blur(var(--tblr-backdrop-blur))}:root,:host{font-size:16px;height:100%}@media(min-width:992px){:root,:host{margin-left:calc(100vw - 100%);margin-right:0}}:root,:host,[data-bs-theme=light]{color-scheme:light;--tblr-spacer: var(--tblr-spacer-2);--tblr-bg-surface: var(--tblr-bg-surface-primary);--tblr-bg-surface-primary: var(--tblr-white);--tblr-bg-surface-secondary: var(--tblr-gray-50);--tblr-bg-surface-tertiary: var(--tblr-gray-50);--tblr-bg-surface-dark: var(--tblr-gray-900);--tblr-bg-surface-inverted: var(--tblr-gray-900);--tblr-bg-forms: var(--tblr-bg-surface);--tblr-text-inverted: var(--tblr-gray-100);--tblr-body-color: var(--tblr-gray-700);--tblr-body-bg: var(--tblr-bg-surface-secondary);--tblr-link-color: var(--tblr-primary);--tblr-link-hover-color: color-mix(in srgb, var(--tblr-primary), #000 20%);--tblr-secondary: var(--tblr-gray-500);--tblr-tertiary: var(--tblr-gray-400);--tblr-border-color: #e5e7eb;--tblr-border-color-translucent: rgba(4, 32, 69, .1);--tblr-border-dark-color: #9ca3af;--tblr-border-dark-color-translucent: rgba(4, 32, 69, .27);--tblr-border-active-color: rgb(169.16, 173.22, 181.34);--tblr-icon-color: var(--tblr-gray-400);--tblr-active-bg: rgba(var(--tblr-primary-rgb), .04);--tblr-disabled-bg: var(--tblr-bg-surface-secondary);--tblr-disabled-color: color-mix(in srgb, var(--tblr-body-color) 40%, transparent);--tblr-code-color: light-dark(var(--tblr-gray-600), var(--tblr-gray-400));--tblr-code-bg: light-dark(var(--tblr-gray-100), var(--tblr-gray-900));--tblr-dark-mode-border-color: rgb(45.7069767442, 60.4511627907, 81.0930232558);--tblr-dark-mode-border-color-translucent: rgba(72, 110, 149, .14);--tblr-dark-mode-border-active-color: rgb(53.0604651163, 70.176744186, 94.1395348837);--tblr-dark-mode-border-dark-color: rgb(38.3534883721, 50.7255813953, 68.0465116279);--tblr-page-padding: var(--tblr-spacer-3);--tblr-page-padding-y: var(--tblr-spacer-4)}@media(max-width:991.98px){:root,:host,[data-bs-theme=light]{--tblr-page-padding: var(--tblr-spacer-2)}}@keyframes pulse{0%{transform:scale(1)}14%{transform:scale(1.25)}28%{transform:scale(1)}42%{transform:scale(1.25)}70%{transform:scale(1)}}@keyframes tada{0%{transform:scaleZ(1)}10%,5%{transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-5deg)}15%,25%,35%,45%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,5deg)}20%,30%,40%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-5deg)}50%{transform:scaleZ(1)}}@keyframes rotate-360{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes blink{0%{opacity:0}50%{opacity:1}to{opacity:0}}@keyframes shake{0%{transform:scaleX(1)}20%{transform:scale3d(.9,.9,.9) rotate(-5deg)}50%,70%,90%{transform:scale3d(1.25,1.25,1.25) rotate(5deg)}60%,80%{transform:scale3d(1.25,1.25,1.25) rotate(-5deg)}to{transform:scaleX(1)}}body{letter-spacing:0;touch-action:manipulation;text-rendering:optimizeLegibility;font-feature-settings:"liga" 0,"cv03","cv04","cv11";position:relative;min-height:100%;height:100%;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media print{body{background:transparent}}*{scrollbar-color:color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 20%,transparent) transparent}*::-webkit-scrollbar{width:1rem;height:1rem;transition:background .3s}@media(prefers-reduced-motion:reduce){*::-webkit-scrollbar{transition:none}}*::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 20%,transparent)}*::-webkit-scrollbar-track{background:transparent}*:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 40%,transparent)}*::-webkit-scrollbar-corner{background:transparent}.layout-fluid .container,.layout-fluid [class^=container-],.layout-fluid [class*=" container-"]{max-width:100%}.layout-boxed{--tblr-theme-boxed-border-radius: 0;--tblr-theme-boxed-width: 1320px}@media(min-width:768px){.layout-boxed{background:#1f2937 linear-gradient(to right,rgba(255,255,255,.1),transparent) fixed;padding:1rem;--tblr-theme-boxed-border-radius: 6px}}.layout-boxed .page{margin:0 auto;max-width:var(--tblr-theme-boxed-width);border-radius:var(--tblr-theme-boxed-border-radius);color:var(--tblr-body-color)}@media(min-width:768px){.layout-boxed .page{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background:var(--tblr-body-bg)}}.layout-boxed .page>.navbar:first-child{border-top-left-radius:var(--tblr-theme-boxed-border-radius);border-top-right-radius:var(--tblr-theme-boxed-border-radius)}.navbar{--tblr-navbar-bg: var(--tblr-bg-surface);--tblr-navbar-border-width: var(--tblr-border-width);--tblr-navbar-active-border-color: #00857D;--tblr-navbar-active-bg: rgba(0, 0, 0, .2);--tblr-navbar-border-color: var(--tblr-border-color);--tblr-navbar-hover-color: var(--tblr-body-color);align-items:stretch;min-height:3.5rem;box-shadow:inset 0 calc(-1 * var(--tblr-navbar-border-width)) 0 0 var(--tblr-navbar-border-color);background:var(--tblr-navbar-bg);color:var(--tblr-navbar-color)}.navbar-collapse .navbar{flex-grow:1}.navbar.collapsing{min-height:0}.navbar .dropdown-menu{position:absolute;z-index:1030}.navbar .navbar-nav{min-height:3rem}.navbar .navbar-nav .nav-link{position:relative;min-width:2.5rem;min-height:2.5rem;justify-content:center;border-radius:var(--tblr-border-radius)}.navbar .navbar-nav .nav-link .badge{position:absolute;top:.375rem;right:.375rem;transform:translate(50%,-50%)}@media(max-width:575.98px){.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-sm .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:576px){.navbar-expand-sm .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-sm .nav-item.active{position:relative}.navbar-expand-sm .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-sm .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-sm.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical.navbar-right,.navbar-expand-sm.navbar-vertical.navbar-end{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical~.navbar,.navbar-expand-sm.navbar-vertical~.page-wrapper{margin-left:18rem}.navbar-expand-sm.navbar-vertical.navbar-right~.navbar,.navbar-expand-sm.navbar-vertical.navbar-right~.page-wrapper,.navbar-expand-sm.navbar-vertical.navbar-end~.navbar,.navbar-expand-sm.navbar-vertical.navbar-end~.page-wrapper{margin-left:0;margin-right:18rem}}@media(max-width:767.98px){.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-md .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:768px){.navbar-expand-md .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-md .nav-item.active{position:relative}.navbar-expand-md .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-md .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-md.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical.navbar-right,.navbar-expand-md.navbar-vertical.navbar-end{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical~.navbar,.navbar-expand-md.navbar-vertical~.page-wrapper{margin-left:18rem}.navbar-expand-md.navbar-vertical.navbar-right~.navbar,.navbar-expand-md.navbar-vertical.navbar-right~.page-wrapper,.navbar-expand-md.navbar-vertical.navbar-end~.navbar,.navbar-expand-md.navbar-vertical.navbar-end~.page-wrapper{margin-left:0;margin-right:18rem}}@media(max-width:991.98px){.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-lg .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:992px){.navbar-expand-lg .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-lg .nav-item.active{position:relative}.navbar-expand-lg .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-lg .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-lg.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical.navbar-right,.navbar-expand-lg.navbar-vertical.navbar-end{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical~.navbar,.navbar-expand-lg.navbar-vertical~.page-wrapper{margin-left:18rem}.navbar-expand-lg.navbar-vertical.navbar-right~.navbar,.navbar-expand-lg.navbar-vertical.navbar-right~.page-wrapper,.navbar-expand-lg.navbar-vertical.navbar-end~.navbar,.navbar-expand-lg.navbar-vertical.navbar-end~.page-wrapper{margin-left:0;margin-right:18rem}}@media(max-width:1199.98px){.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:1200px){.navbar-expand-xl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xl .nav-item.active{position:relative}.navbar-expand-xl .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-xl .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xl.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical.navbar-right,.navbar-expand-xl.navbar-vertical.navbar-end{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical~.navbar,.navbar-expand-xl.navbar-vertical~.page-wrapper{margin-left:18rem}.navbar-expand-xl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xl.navbar-vertical.navbar-right~.page-wrapper,.navbar-expand-xl.navbar-vertical.navbar-end~.navbar,.navbar-expand-xl.navbar-vertical.navbar-end~.page-wrapper{margin-left:0;margin-right:18rem}}@media(max-width:1399.98px){.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:1400px){.navbar-expand-xxl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xxl .nav-item.active{position:relative}.navbar-expand-xxl .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-xxl .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xxl.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical.navbar-right,.navbar-expand-xxl.navbar-vertical.navbar-end{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical~.navbar,.navbar-expand-xxl.navbar-vertical~.page-wrapper{margin-left:18rem}.navbar-expand-xxl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xxl.navbar-vertical.navbar-right~.page-wrapper,.navbar-expand-xxl.navbar-vertical.navbar-end~.navbar,.navbar-expand-xxl.navbar-vertical.navbar-end~.page-wrapper{margin-left:0;margin-right:18rem}}.navbar-expand .navbar-collapse{flex-direction:column}.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}.navbar-expand .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand .nav-item.active{position:relative}.navbar-expand .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical.navbar-right,.navbar-expand.navbar-vertical.navbar-end{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical~.navbar,.navbar-expand.navbar-vertical~.page-wrapper{margin-left:18rem}.navbar-expand.navbar-vertical.navbar-right~.navbar,.navbar-expand.navbar-vertical.navbar-right~.page-wrapper,.navbar-expand.navbar-vertical.navbar-end~.navbar,.navbar-expand.navbar-vertical.navbar-end~.page-wrapper{margin-left:0;margin-right:18rem}.navbar-brand{display:inline-flex;align-items:center;font-weight:var(--tblr-font-weight-bold);margin:0;line-height:1;gap:.5rem}.navbar-brand-image{height:2rem;width:auto}.navbar-toggler{border:0;width:2rem;height:2rem;position:relative;display:flex;align-items:center;justify-content:center}.navbar-toggler-icon{height:2px;width:1.25em;background:currentColor;border-radius:10px;transition:top .2s .2s,bottom .2s .2s,transform .2s,opacity 0s .2s}@media(prefers-reduced-motion:reduce){.navbar-toggler-icon{transition:none}}.navbar-toggler-icon{position:relative}.navbar-toggler-icon:before,.navbar-toggler-icon:after{content:"";display:block;height:inherit;width:inherit;border-radius:inherit;background:inherit;position:absolute;left:0;transition:inherit}@media(prefers-reduced-motion:reduce){.navbar-toggler-icon:before,.navbar-toggler-icon:after{transition:none}}.navbar-toggler-icon:before{top:-.45em}.navbar-toggler-icon:after{bottom:-.45em}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transform:rotate(45deg);transition:top .3s,bottom .3s,transform .3s .3s,opacity 0s .3s}@media(prefers-reduced-motion:reduce){.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transition:none}}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:before{top:0;transform:rotate(-90deg)}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:after{bottom:0;opacity:0}.navbar-transparent{--tblr-navbar-border-color: transparent !important;background:transparent!important}.navbar-nav{--tblr-nav-link-hover-bg: color-mix(in srgb, var(--tblr-nav-link-color) 4%, transparent);margin:0;padding:0;align-items:stretch}.navbar-nav .nav-item{display:flex;flex-direction:column;justify-content:center}.navbar-side{margin:0;display:flex;flex-direction:row;align-items:center;justify-content:space-around}@media(min-width:576px){.navbar-vertical.navbar-expand-sm{width:18rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media(min-width:576px)and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-sm{transition:none}}@media(min-width:576px){.navbar-vertical.navbar-expand-sm.navbar-right,.navbar-vertical.navbar-expand-sm.navbar-end{left:auto;right:0}.navbar-vertical.navbar-expand-sm .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-sm .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-sm .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-sm .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-sm>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-sm~.page{padding-left:18rem}.navbar-vertical.navbar-expand-sm~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-sm.navbar-right~.page,.navbar-vertical.navbar-expand-sm.navbar-end~.page{padding-left:0;padding-right:18rem}.navbar-vertical.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:768px){.navbar-vertical.navbar-expand-md{width:18rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media(min-width:768px)and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-md{transition:none}}@media(min-width:768px){.navbar-vertical.navbar-expand-md.navbar-right,.navbar-vertical.navbar-expand-md.navbar-end{left:auto;right:0}.navbar-vertical.navbar-expand-md .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-md .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-md .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-md .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-md>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-md~.page{padding-left:18rem}.navbar-vertical.navbar-expand-md~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-md.navbar-right~.page,.navbar-vertical.navbar-expand-md.navbar-end~.page{padding-left:0;padding-right:18rem}.navbar-vertical.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:992px){.navbar-vertical.navbar-expand-lg{width:18rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media(min-width:992px)and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-lg{transition:none}}@media(min-width:992px){.navbar-vertical.navbar-expand-lg.navbar-right,.navbar-vertical.navbar-expand-lg.navbar-end{left:auto;right:0}.navbar-vertical.navbar-expand-lg .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-lg .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-lg .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-lg>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-lg~.page{padding-left:18rem}.navbar-vertical.navbar-expand-lg~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-lg.navbar-right~.page,.navbar-vertical.navbar-expand-lg.navbar-end~.page{padding-left:0;padding-right:18rem}.navbar-vertical.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:1200px){.navbar-vertical.navbar-expand-xl{width:18rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media(min-width:1200px)and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xl{transition:none}}@media(min-width:1200px){.navbar-vertical.navbar-expand-xl.navbar-right,.navbar-vertical.navbar-expand-xl.navbar-end{left:auto;right:0}.navbar-vertical.navbar-expand-xl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xl~.page{padding-left:18rem}.navbar-vertical.navbar-expand-xl~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-xl.navbar-right~.page,.navbar-vertical.navbar-expand-xl.navbar-end~.page{padding-left:0;padding-right:18rem}.navbar-vertical.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media(min-width:1400px){.navbar-vertical.navbar-expand-xxl{width:18rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media(min-width:1400px)and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xxl{transition:none}}@media(min-width:1400px){.navbar-vertical.navbar-expand-xxl.navbar-right,.navbar-vertical.navbar-expand-xxl.navbar-end{left:auto;right:0}.navbar-vertical.navbar-expand-xxl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xxl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xxl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xxl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xxl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xxl~.page{padding-left:18rem}.navbar-vertical.navbar-expand-xxl~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-xxl.navbar-right~.page,.navbar-vertical.navbar-expand-xxl.navbar-end~.page{padding-left:0;padding-right:18rem}.navbar-vertical.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}.navbar-vertical.navbar-expand{width:18rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s}@media(prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand{transition:none}}.navbar-vertical.navbar-expand{overflow-y:scroll;padding:0}.navbar-vertical.navbar-expand.navbar-right,.navbar-vertical.navbar-expand.navbar-end{left:auto;right:0}.navbar-vertical.navbar-expand .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand~.page{padding-left:18rem}.navbar-vertical.navbar-expand~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand.navbar-right~.page,.navbar-vertical.navbar-expand.navbar-end~.page{padding-left:0;padding-right:18rem}.navbar-vertical.navbar-expand .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2) / 2);justify-content:flex-start}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:transparent;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}.navbar-overlap:after{content:"";height:9rem;position:absolute;top:100%;left:0;right:0;background:inherit;z-index:-1;box-shadow:inherit}.page{display:flex;flex-direction:column;position:relative;min-height:100%}.page-center{justify-content:center}.page-wrapper{flex:1;display:flex;flex-direction:column}@media print{.page-wrapper{margin:0!important}}.page-wrapper-full .page-body:first-child{margin:0;border-top:0}.page-body{margin-top:var(--tblr-page-padding-y);margin-bottom:var(--tblr-page-padding-y);display:flex;flex-direction:column;flex:1}.page-body-card{background:var(--tblr-bg-surface);border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);padding:var(--tblr-page-padding) 0;margin-bottom:0;flex:1}.page-body~.page-body-card{margin-top:0}.page-cover{background:no-repeat center/cover;min-height:9rem}@media(min-width:768px){.page-cover{min-height:12rem}}@media(min-width:992px){.page-cover{min-height:15rem}}.page-cover-overlay{position:relative}.page-cover-overlay:after{content:"";position:absolute;inset:0;background-image:linear-gradient(180deg,#0000,#0009)}.page-header{display:flex;flex-wrap:wrap;min-height:2.25rem;flex-direction:column;justify-content:center;max-width:100%}.page-wrapper .page-header{margin:var(--tblr-page-padding-y) 0 0}.page-header-border{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding:var(--tblr-page-padding-y) 0;margin:0!important;background-color:var(--tblr-bg-surface)}.page-pretitle{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.page-title{margin:0;font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h2);font-weight:var(--tblr-font-weight-headings);color:inherit;display:flex;align-items:center}.page-title svg{width:1.5rem;height:1.5rem;margin-right:.25rem}.page-title-lg{font-size:1.5rem;line-height:2rem}.page-subtitle{margin-top:.25rem;color:var(--tblr-secondary)}.page-cover{--tblr-page-cover-blur: 20px;--tblr-page-cover-padding: 1rem;min-height:6rem;padding:var(--tblr-page-cover-padding) 0;position:relative;overflow:hidden}.page-cover-img{position:absolute;top:calc(-2 * var(--tblr-page-cover-blur, 0));left:calc(-2 * var(--tblr-page-cover-blur, 0));right:calc(-2 * var(--tblr-page-cover-blur, 0));bottom:calc(-2 * var(--tblr-page-cover-blur, 0));pointer-events:none;filter:blur(var(--tblr-page-cover-blur));object-fit:cover;background-size:cover;background-position:center;z-index:-1}.page-tabs{margin-top:.5rem;position:relative}.page-header-tabs .nav-bordered{border:0}.page-header-tabs+.page-body-card{margin-top:0}.footer{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background-color:var(--tblr-bg-surface);padding:2rem 0;color:var(--tblr-gray-500);margin-top:auto}.footer-transparent{background-color:transparent;border-top:0}:root:not(.theme-dark):not([data-bs-theme=dark]) .hide-theme-light{display:none!important}:root:not(.theme-dark):not([data-bs-theme=dark]) .img-dark{display:none!important}:root.theme-dark .hide-theme-dark,:root[data-bs-theme=dark] .hide-theme-dark,body[data-bs-theme=dark] [data-bs-theme=light]:root .hide-theme-dark{display:none!important}:root.theme-dark .img-light,:root[data-bs-theme=dark] .img-light,body[data-bs-theme=dark] [data-bs-theme=light]:root .img-light{display:none!important}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{color-scheme:dark;--tblr-body-color: var(--tblr-gray-200);--tblr-secondary: var(--tblr-gray-400);--tblr-body-bg: var(--tblr-gray-900);--tblr-emphasis-color: #ffffff;--tblr-emphasis-color-rgb: 255, 255, 255;--tblr-bg-forms: var(--tblr-gray-900);--tblr-bg-surface: var(--tblr-gray-800);--tblr-bg-surface-inverted: var(--tblr-gray-100);--tblr-bg-surface-secondary: var(--tblr-gray-900);--tblr-bg-surface-tertiary: var(--tblr-gray-800);--tblr-text-inverted: var(--tblr-gray-800);--tblr-link-color: var(--tblr-primary);--tblr-link-hover-color: color-mix(in srgb, var(--tblr-primary), black 20%);--tblr-active-bg: rgb(34.676744186, 45.8627906977, 61.523255814);--tblr-disabled-color: color-mix(in srgb, var(--tblr-body-color) 40%, transparent);--tblr-border-color: var(--tblr-gray-700);--tblr-border-color-translucent: var( --tblr-dark-mode-border-color-translucent );--tblr-border-dark-color: var(--tblr-dark-mode-border-dark-color);--tblr-border-active-color: var( --tblr-dark-mode-border-active-color );--tblr-btn-color: rgb(27.323255814, 36.1372093023, 48.476744186)}[data-bs-theme=dark] .navbar-brand-autodark .navbar-brand-image{filter:brightness(0) invert(1)}.accordion{--tblr-accordion-color: var(--tblr-body-color);--tblr-accordion-border-color: var(--tblr-border-color);--tblr-accordion-border-radius: var(--tblr-border-radius);--tblr-accordion-inner-border-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width)));--tblr-accordion-padding-x: 1.25rem;--tblr-accordion-gap: 0;--tblr-accordion-active-color: inherit;--tblr-accordion-btn-color: var(--tblr-accordion-color);--tblr-accordion-btn-bg: transparent;--tblr-accordion-btn-toggle-width: 1.25rem;--tblr-accordion-btn-padding-x: var(--tblr-accordion-padding-x);--tblr-accordion-btn-padding-y: 1rem;--tblr-accordion-btn-font-weight: var(--tblr-font-weight-medium);--tblr-accordion-body-padding-x: var(--tblr-accordion-padding-x);--tblr-accordion-body-padding-y: 1rem;display:flex;flex-direction:column;gap:var(--tblr-accordion-gap)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--tblr-accordion-btn-padding-y) var(--tblr-accordion-padding-x);color:inherit;text-align:inherit;background-color:transparent;border:0;font-size:inherit;font-weight:var(--tblr-accordion-btn-font-weight);gap:.75rem}.accordion-button:not(.collapsed){border-bottom-color:transparent;box-shadow:none;color:var(--tblr-accordion-active-color)}.accordion-header{margin:0;position:relative;display:flex;gap:1rem;align-items:center;width:100%;color:var(--tblr-accordion-btn-color);text-align:left;background-color:transparent;border:0;overflow-anchor:none;transition:transform .3s}.accordion-header:hover{z-index:2}.accordion-header:focus{z-index:3;outline:0;box-shadow:var(--tblr-accordion-btn-focus-box-shadow)}.accordion-header:focus:not(:focus-visible){outline:none;box-shadow:none}.accordion-button-icon{color:var(--tblr-secondary)}.accordion-button-toggle{display:flex;line-height:1;transition:.3s transform;margin-left:auto;margin-right:0;color:var(--tblr-secondary);width:var(--tblr-accordion-btn-toggle-width);height:var(--tblr-accordion-btn-toggle-width)}.accordion-button:not(.collapsed) .accordion-button-toggle{transform:rotate(-180deg);color:var(--tblr-accordion-active-color)}.accordion-button-toggle path{transition:.3s opacity}.accordion-button:not(.collapsed) .accordion-button-toggle-plus path:first-child{opacity:0}.accordion-item{color:var(--tblr-accordion-color);border:var(--tblr-border-width) solid var(--tblr-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--tblr-accordion-border-radius);border-top-right-radius:var(--tblr-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header{border-top-left-radius:var(--tblr-accordion-inner-border-radius);border-top-right-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--tblr-accordion-border-radius);border-bottom-left-radius:var(--tblr-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header.collapsed{border-bottom-right-radius:var(--tblr-accordion-inner-border-radius);border-bottom-left-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--tblr-accordion-border-radius);border-bottom-left-radius:var(--tblr-accordion-border-radius)}.accordion-body{color:var(--tblr-secondary);padding:0 var(--tblr-accordion-body-padding-x) var(--tblr-accordion-body-padding-y)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-collapse,.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}.accordion-tabs{--tblr-accordion-gap: .75rem}.accordion-tabs>.accordion-item{border:var(--tblr-border-width) solid var(--tblr-accordion-border-color);border-radius:var(--tblr-accordion-border-radius)}.accordion-inverted .accordion-button-toggle{order:-1;margin-left:0}.alert{--tblr-alert-color: var(--tblr-body-color);--tblr-alert-bg: color-mix(in srgb, var(--tblr-alert-color) 10%, transparent);--tblr-alert-padding-x: 1rem;--tblr-alert-padding-y: .75rem;--tblr-alert-margin-bottom: 1rem;--tblr-alert-border-color: color-mix(in srgb, var(--tblr-alert-color) 20%, transparent);--tblr-alert-border: var(--tblr-border-width) solid var(--tblr-alert-border-color);--tblr-alert-border-radius: var(--tblr-border-radius);--tblr-alert-link-color: inherit;--tblr-alert-heading-font-weight: var(--tblr-font-weight-medium);position:relative;padding:var(--tblr-alert-padding-y) var(--tblr-alert-padding-x);margin-bottom:var(--tblr-alert-margin-bottom);background-color:color-mix(in srgb,var(--tblr-alert-bg),var(--tblr-bg-surface));border-radius:var(--tblr-alert-border-radius);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-alert-border-color);display:flex;flex-direction:row;gap:1rem}.alert-heading{color:inherit;margin-bottom:.25rem;font-weight:var(--tblr-alert-heading-font-weight)}.alert-description{color:var(--tblr-secondary)}.alert-icon{color:var(--tblr-alert-color);width:1.25rem!important;height:1.25rem!important}.alert-action{color:var(--tblr-alert-color);text-decoration:underline}.alert-action:hover{text-decoration:none}.alert-list{margin:0}.alert-link{font-weight:var(--tblr-font-weight-bold);color:var(--tblr-alert-link-color)}.alert-link,.alert-link:hover{color:var(--tblr-alert-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:calc(var(--tblr-alert-padding-x) / 2 - 1px);right:calc(var(--tblr-alert-padding-y) / 2 - 1px);z-index:1;padding:calc(var(--tblr-alert-padding-y) * 1.25) var(--tblr-alert-padding-x)}.alert-important{border-color:var(--tblr-alert-color);background-color:var(--tblr-alert-color);color:var(--tblr-white)}.alert-important .alert-description,.alert-important .alert-icon{color:inherit}.alert-minor{background:transparent;border-color:var(--tblr-border-color)}.alert-primary{--tblr-alert-color: var(--tblr-primary)}.alert-secondary{--tblr-alert-color: var(--tblr-secondary)}.alert-success{--tblr-alert-color: var(--tblr-success)}.alert-info{--tblr-alert-color: var(--tblr-info)}.alert-warning{--tblr-alert-color: var(--tblr-warning)}.alert-danger{--tblr-alert-color: var(--tblr-danger)}.alert-light{--tblr-alert-color: var(--tblr-light)}.alert-dark{--tblr-alert-color: var(--tblr-dark)}.alert-muted{--tblr-alert-color: var(--tblr-muted)}.alert-blue{--tblr-alert-color: var(--tblr-blue)}.alert-azure{--tblr-alert-color: var(--tblr-azure)}.alert-indigo{--tblr-alert-color: var(--tblr-indigo)}.alert-purple{--tblr-alert-color: var(--tblr-purple)}.alert-pink{--tblr-alert-color: var(--tblr-pink)}.alert-red{--tblr-alert-color: var(--tblr-red)}.alert-orange{--tblr-alert-color: var(--tblr-orange)}.alert-yellow{--tblr-alert-color: var(--tblr-yellow)}.alert-lime{--tblr-alert-color: var(--tblr-lime)}.alert-green{--tblr-alert-color: var(--tblr-green)}.alert-teal{--tblr-alert-color: var(--tblr-teal)}.alert-cyan{--tblr-alert-color: var(--tblr-cyan)}.avatar{--tblr-avatar-size: var(--tblr-avatar-list-size, 2.5rem);--tblr-avatar-status-size: .75rem;--tblr-avatar-bg: var(--tblr-bg-surface-secondary);--tblr-avatar-box-shadow-color: var(--tblr-border-color-translucent);--tblr-avatar-box-shadow: inset 0 0 0 1px var(--tblr-avatar-box-shadow-color);--tblr-avatar-font-size: 1rem;--tblr-avatar-icon-size: 1.5rem;--tblr-avatar-brand-size: 1.25rem;position:relative;width:var(--tblr-avatar-size);height:var(--tblr-avatar-size);font-size:var(--tblr-avatar-font-size);font-weight:var(--tblr-font-weight-medium);line-height:1;display:inline-flex;align-items:center;justify-content:center;color:var(--tblr-secondary);text-align:center;text-transform:uppercase;vertical-align:bottom;user-select:none;background:var(--tblr-avatar-bg) no-repeat center/cover;border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-avatar-box-shadow);transition:color .3s,background-color .3s,box-shadow .3s}.avatar .icon{width:var(--tblr-avatar-icon-size);height:var(--tblr-avatar-icon-size)}.avatar .badge{position:absolute;right:0;bottom:0;border-radius:100rem;box-shadow:0 0 0 calc(var(--tblr-avatar-status-size) / 4) var(--tblr-bg-surface)}a.avatar{cursor:pointer}a.avatar:hover{color:var(--tblr-primary);--tblr-avatar-box-shadow-color: var(--tblr-primary)}.avatar-rounded{border-radius:100rem}.avatar-xxs{--tblr-avatar-size: 1rem;--tblr-avatar-status-size: .25rem;--tblr-avatar-font-size: .5rem;--tblr-avatar-icon-size: .5rem;--tblr-avatar-brand-size: .5rem}.avatar-xxs .badge:empty{width:.25rem;height:.25rem}.avatar-xs{--tblr-avatar-size: 1.25rem;--tblr-avatar-status-size: .375rem;--tblr-avatar-font-size: .625rem;--tblr-avatar-icon-size: .75rem;--tblr-avatar-brand-size: .75rem}.avatar-xs .badge:empty{width:.375rem;height:.375rem}.avatar-sm{--tblr-avatar-size: 2rem;--tblr-avatar-status-size: .5rem;--tblr-avatar-font-size: .75rem;--tblr-avatar-icon-size: 1.5rem;--tblr-avatar-brand-size: 1rem}.avatar-sm .badge:empty{width:.5rem;height:.5rem}.avatar-md{--tblr-avatar-size: 2.5rem;--tblr-avatar-status-size: .75rem;--tblr-avatar-font-size: .875rem;--tblr-avatar-icon-size: 1.5rem;--tblr-avatar-brand-size: 1.25rem}.avatar-md .badge:empty{width:.75rem;height:.75rem}.avatar-lg{--tblr-avatar-size: 3rem;--tblr-avatar-status-size: .75rem;--tblr-avatar-font-size: 1.25rem;--tblr-avatar-icon-size: 2rem;--tblr-avatar-brand-size: 1.25rem}.avatar-lg .badge:empty{width:.75rem;height:.75rem}.avatar-xl{--tblr-avatar-size: 5rem;--tblr-avatar-status-size: 1rem;--tblr-avatar-font-size: 2rem;--tblr-avatar-icon-size: 3rem;--tblr-avatar-brand-size: 1.25rem}.avatar-xl .badge:empty{width:1rem;height:1rem}.avatar-2xl{--tblr-avatar-size: 7rem;--tblr-avatar-status-size: 1rem;--tblr-avatar-font-size: 3rem;--tblr-avatar-icon-size: 5rem;--tblr-avatar-brand-size: 2rem}.avatar-2xl .badge:empty{width:1rem;height:1rem}.avatar-list{--tblr-avatar-list-size: 2.5rem;--tblr-list-gap: .5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.avatar-list a.avatar:hover{z-index:1}.avatar-list-stacked{display:block;--tblr-list-gap: 0}.avatar-list-stacked .avatar{margin-right:calc(-.5 * var(--tblr-avatar-size))!important;box-shadow:var(--tblr-avatar-box-shadow),0 0 0 2px var(--tblr-card-bg, var(--tblr-bg-surface))}.avatar-list-xxs{--tblr-avatar-list-size: 1rem}.avatar-list-xs{--tblr-avatar-list-size: 1.25rem}.avatar-list-sm{--tblr-avatar-list-size: 2rem}.avatar-list-md{--tblr-avatar-list-size: 2.5rem}.avatar-list-lg{--tblr-avatar-list-size: 3rem}.avatar-list-xl{--tblr-avatar-list-size: 5rem}.avatar-list-2xl{--tblr-avatar-list-size: 7rem}.avatar-upload{border:var(--tblr-border-width) dashed var(--tblr-border-color);background:var(--tblr-bg-forms);box-shadow:none;flex-direction:column;transition:color .3s,background-color .3s}@media(prefers-reduced-motion:reduce){.avatar-upload{transition:none}}.avatar-upload svg{width:1.5rem;height:1.5rem;stroke-width:1}.avatar-upload:hover{border-color:var(--tblr-primary);color:var(--tblr-primary);text-decoration:none}.avatar-upload-text{font-size:.625rem;line-height:1;margin-top:.25rem}.avatar-cover{margin-top:calc(-.5 * var(--tblr-avatar-size));box-shadow:0 0 0 .25rem var(--tblr-card-bg, var(--tblr-body-bg))}.avatar-brand{width:var(--tblr-avatar-brand-size);height:var(--tblr-avatar-brand-size);position:absolute;right:-2px;bottom:-2px;z-index:1000;background:var(--tblr-bg-surface);border-radius:var(--tblr-border-radius);border:1px solid var(--tblr-border-color)}.badge{--tblr-badge-padding-x: .5em;--tblr-badge-padding-y: .25em;--tblr-badge-font-size: .85714285em;--tblr-badge-font-weight: var(--tblr-font-weight-medium);--tblr-badge-color: var(--tblr-secondary);--tblr-badge-border-radius: var(--tblr-border-radius);--tblr-badge-icon-size: 1em;--tblr-badge-line-height: 1;display:inline-flex;padding:var(--tblr-badge-padding-y) var(--tblr-badge-padding-x);font-weight:var(--tblr-badge-font-weight);font-size:var(--tblr-badge-font-size);color:var(--tblr-badge-color);text-align:center;white-space:nowrap;justify-content:center;align-items:center;gap:.25rem;background:var(--tblr-bg-surface-secondary);overflow:hidden;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) transparent;border-radius:var(--tblr-badge-border-radius);min-width:calc(1em + var(--tblr-badge-padding-y) * 2 + 2px);letter-spacing:.04em;vertical-align:bottom;line-height:var(--tblr-badge-line-height)}a.badge{background:var(--tblr-bg-surface-secondary)}.badge .icon{width:1em;height:1em;font-size:var(--tblr-badge-icon-size);stroke-width:2}.badge:empty,.badge-dot{display:inline-block;width:10px;height:10px;min-width:0;min-height:auto;padding:0;border-radius:100rem;vertical-align:baseline}.badge-outline{background-color:transparent;border:var(--tblr-border-width) var(--tblr-border-style) currentColor}.badge-pill{border-radius:100rem}.badges-list{--tblr-list-gap: .5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.badge-notification{position:absolute!important;top:0!important;right:0!important;transform:translate(50%,-50%);z-index:1}.badge-blink{animation:blink 2s infinite}.badge-sm{--tblr-badge-font-size: .71428571em;--tblr-badge-icon-size: 1em;--tblr-badge-padding-y: 2px;--tblr-badge-padding-x: .25rem}.badge-lg{--tblr-badge-font-size: 1em;--tblr-badge-icon-size: 1em;--tblr-badge-padding-y: .25rem;--tblr-badge-padding-x: .5rem}.badge-icononly{--tblr-badge-padding-x: 0}.breadcrumb{--tblr-breadcrumb-padding-x: 0;--tblr-breadcrumb-padding-y: 0;--tblr-breadcrumb-margin-bottom: 1rem;--tblr-breadcrumb-font-size: ;--tblr-breadcrumb-bg: ;--tblr-breadcrumb-border-radius: ;--tblr-breadcrumb-divider-color: var(--tblr-gray-500);--tblr-breadcrumb-item-padding-x: .5rem;--tblr-breadcrumb-item-active-color: inherit;--tblr-breadcrumb-item-active-font-weight: var(--tblr-font-weight-bold);--tblr-breadcrumb-item-disabled-color: var(--tblr-disabled-color);--tblr-breadcrumb-link-color: var(--tblr-link-color);display:flex;flex-wrap:wrap;font-size:var(--tblr-breadcrumb-font-size);list-style:none;background-color:var(--tblr-breadcrumb-bg);border-radius:var(--tblr-breadcrumb-border-radius);padding:0;margin:0;background:transparent}.breadcrumb a{color:var(--tblr-breadcrumb-link-color)}.breadcrumb a:hover{text-decoration:underline}.breadcrumb-muted{--tblr-breadcrumb-link-color: var(--tblr-secondary)}.breadcrumb-item.active{color:var(--tblr-breadcrumb-item-active-color);font-weight:var(--tblr-breadcrumb-item-active-font-weight)}.breadcrumb-item.active a{color:inherit;pointer-events:none}.breadcrumb-item.disabled{color:var(--tblr-breadcrumb-item-disabled-color)}.breadcrumb-item.disabled:before{color:inherit}.breadcrumb-item.disabled a{color:inherit;pointer-events:none}.breadcrumb-item+.breadcrumb-item{padding-left:var(--tblr-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--tblr-breadcrumb-item-padding-x);color:var(--tblr-breadcrumb-divider-color);content:var(--tblr-breadcrumb-divider, "/")}.breadcrumb-dots{--tblr-breadcrumb-divider: "\b7"}.breadcrumb-arrows{--tblr-breadcrumb-divider: "\203a"}.breadcrumb-bullets{--tblr-breadcrumb-divider: "\2022"}.btn{--tblr-btn-icon-size: 1.25rem;--tblr-btn-icon-color: inherit;--tblr-btn-bg: var(--tblr-bg-surface);--tblr-btn-color: var(--tblr-body-color);--tblr-btn-border-color: var(--tblr-border-color);--tblr-btn-hover-bg: var(--tblr-btn-bg);--tblr-btn-hover-border-color: var(--tblr-border-active-color);--tblr-btn-active-color: var(--tblr-primary);--tblr-btn-active-bg: rgba(var(--tblr-primary-rgb), .04);--tblr-btn-active-border-color: var(--tblr-primary);display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;box-shadow:var(--tblr-btn-box-shadow);position:relative;min-width:calc(var(--tblr-btn-line-height) * 1 + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2);min-height:calc(var(--tblr-btn-line-height) * 1 + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2)}.btn .icon{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);min-width:var(--tblr-btn-icon-size);font-size:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x) / 2) 0 calc(var(--tblr-btn-padding-x) / -4);vertical-align:bottom;color:var(--tblr-btn-icon-color)}.btn .avatar{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x) / 2) 0 calc(var(--tblr-btn-padding-x) / -4)}.btn .icon-right,.btn .icon-end{margin:0 calc(var(--tblr-btn-padding-x) / -4) 0 calc(var(--tblr-btn-padding-x) / 2)}.btn .badge{top:auto}.btn-check+.btn:hover{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-link{color:#009f95;background-color:transparent;border-color:transparent;box-shadow:none}.btn-link .icon{color:inherit}.btn-link:hover{color:#006a64;border-color:transparent}.btn-primary{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-primary-fg, #ffffff);--tblr-btn-bg: var(--tblr-primary);--tblr-btn-hover-color: var(--tblr-primary-fg);--tblr-btn-hover-bg: var(--tblr-primary-darken);--tblr-btn-active-color: var(--tblr-primary-fg);--tblr-btn-active-bg: var(--tblr-primary-darken);--tblr-btn-disabled-bg: var(--tblr-primary);--tblr-btn-disabled-color: var(--tblr-primary-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-primary,.btn-outline.btn-primary{--tblr-btn-color: var(--tblr-primary);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-primary);--tblr-btn-hover-color: var(--tblr-primary-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-primary);--tblr-btn-active-color: var(--tblr-primary-fg);--tblr-btn-active-bg: var(--tblr-primary);--tblr-btn-active-border-color: var(--tblr-primary);--tblr-btn-disabled-color: var(--tblr-primary);--tblr-btn-disabled-border-color: var(--tblr-primary)}.btn-ghost-primary,.btn-ghost.btn-primary{--tblr-btn-color: var(--tblr-primary);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-primary-fg);--tblr-btn-hover-bg: var(--tblr-primary);--tblr-btn-hover-border-color: var(--tblr-primary);--tblr-btn-active-color: var(--tblr-primary-fg);--tblr-btn-active-bg: var(--tblr-primary);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-primary);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-secondary,.btn-grey,.btn-gray{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-secondary-fg, #ffffff);--tblr-btn-bg: var(--tblr-secondary);--tblr-btn-hover-color: var(--tblr-secondary-fg);--tblr-btn-hover-bg: var(--tblr-secondary-darken);--tblr-btn-active-color: var(--tblr-secondary-fg);--tblr-btn-active-bg: var(--tblr-secondary-darken);--tblr-btn-disabled-bg: var(--tblr-secondary);--tblr-btn-disabled-color: var(--tblr-secondary-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-secondary,.btn-outline.btn-secondary,.btn-outline.btn-grey,.btn-outline.btn-gray{--tblr-btn-color: var(--tblr-secondary);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-secondary);--tblr-btn-hover-color: var(--tblr-secondary-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-secondary);--tblr-btn-active-color: var(--tblr-secondary-fg);--tblr-btn-active-bg: var(--tblr-secondary);--tblr-btn-active-border-color: var(--tblr-secondary);--tblr-btn-disabled-color: var(--tblr-secondary);--tblr-btn-disabled-border-color: var(--tblr-secondary)}.btn-ghost-secondary,.btn-ghost.btn-secondary,.btn-ghost.btn-grey,.btn-ghost.btn-gray{--tblr-btn-color: var(--tblr-secondary);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-secondary-fg);--tblr-btn-hover-bg: var(--tblr-secondary);--tblr-btn-hover-border-color: var(--tblr-secondary);--tblr-btn-active-color: var(--tblr-secondary-fg);--tblr-btn-active-bg: var(--tblr-secondary);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-secondary);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-success{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-success-fg, #ffffff);--tblr-btn-bg: var(--tblr-success);--tblr-btn-hover-color: var(--tblr-success-fg);--tblr-btn-hover-bg: var(--tblr-success-darken);--tblr-btn-active-color: var(--tblr-success-fg);--tblr-btn-active-bg: var(--tblr-success-darken);--tblr-btn-disabled-bg: var(--tblr-success);--tblr-btn-disabled-color: var(--tblr-success-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-success,.btn-outline.btn-success{--tblr-btn-color: var(--tblr-success);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-success);--tblr-btn-hover-color: var(--tblr-success-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-success);--tblr-btn-active-color: var(--tblr-success-fg);--tblr-btn-active-bg: var(--tblr-success);--tblr-btn-active-border-color: var(--tblr-success);--tblr-btn-disabled-color: var(--tblr-success);--tblr-btn-disabled-border-color: var(--tblr-success)}.btn-ghost-success,.btn-ghost.btn-success{--tblr-btn-color: var(--tblr-success);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-success-fg);--tblr-btn-hover-bg: var(--tblr-success);--tblr-btn-hover-border-color: var(--tblr-success);--tblr-btn-active-color: var(--tblr-success-fg);--tblr-btn-active-bg: var(--tblr-success);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-success);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-info{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-info-fg, #ffffff);--tblr-btn-bg: var(--tblr-info);--tblr-btn-hover-color: var(--tblr-info-fg);--tblr-btn-hover-bg: var(--tblr-info-darken);--tblr-btn-active-color: var(--tblr-info-fg);--tblr-btn-active-bg: var(--tblr-info-darken);--tblr-btn-disabled-bg: var(--tblr-info);--tblr-btn-disabled-color: var(--tblr-info-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-info,.btn-outline.btn-info{--tblr-btn-color: var(--tblr-info);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-info);--tblr-btn-hover-color: var(--tblr-info-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-info);--tblr-btn-active-color: var(--tblr-info-fg);--tblr-btn-active-bg: var(--tblr-info);--tblr-btn-active-border-color: var(--tblr-info);--tblr-btn-disabled-color: var(--tblr-info);--tblr-btn-disabled-border-color: var(--tblr-info)}.btn-ghost-info,.btn-ghost.btn-info{--tblr-btn-color: var(--tblr-info);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-info-fg);--tblr-btn-hover-bg: var(--tblr-info);--tblr-btn-hover-border-color: var(--tblr-info);--tblr-btn-active-color: var(--tblr-info-fg);--tblr-btn-active-bg: var(--tblr-info);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-info);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-warning{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-warning-fg, #ffffff);--tblr-btn-bg: var(--tblr-warning);--tblr-btn-hover-color: var(--tblr-warning-fg);--tblr-btn-hover-bg: var(--tblr-warning-darken);--tblr-btn-active-color: var(--tblr-warning-fg);--tblr-btn-active-bg: var(--tblr-warning-darken);--tblr-btn-disabled-bg: var(--tblr-warning);--tblr-btn-disabled-color: var(--tblr-warning-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-warning,.btn-outline.btn-warning{--tblr-btn-color: var(--tblr-warning);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-warning);--tblr-btn-hover-color: var(--tblr-warning-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-warning);--tblr-btn-active-color: var(--tblr-warning-fg);--tblr-btn-active-bg: var(--tblr-warning);--tblr-btn-active-border-color: var(--tblr-warning);--tblr-btn-disabled-color: var(--tblr-warning);--tblr-btn-disabled-border-color: var(--tblr-warning)}.btn-ghost-warning,.btn-ghost.btn-warning{--tblr-btn-color: var(--tblr-warning);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-warning-fg);--tblr-btn-hover-bg: var(--tblr-warning);--tblr-btn-hover-border-color: var(--tblr-warning);--tblr-btn-active-color: var(--tblr-warning-fg);--tblr-btn-active-bg: var(--tblr-warning);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-warning);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-danger{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-danger-fg, #ffffff);--tblr-btn-bg: var(--tblr-danger);--tblr-btn-hover-color: var(--tblr-danger-fg);--tblr-btn-hover-bg: var(--tblr-danger-darken);--tblr-btn-active-color: var(--tblr-danger-fg);--tblr-btn-active-bg: var(--tblr-danger-darken);--tblr-btn-disabled-bg: var(--tblr-danger);--tblr-btn-disabled-color: var(--tblr-danger-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-danger,.btn-outline.btn-danger{--tblr-btn-color: var(--tblr-danger);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-danger);--tblr-btn-hover-color: var(--tblr-danger-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-danger);--tblr-btn-active-color: var(--tblr-danger-fg);--tblr-btn-active-bg: var(--tblr-danger);--tblr-btn-active-border-color: var(--tblr-danger);--tblr-btn-disabled-color: var(--tblr-danger);--tblr-btn-disabled-border-color: var(--tblr-danger)}.btn-ghost-danger,.btn-ghost.btn-danger{--tblr-btn-color: var(--tblr-danger);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-danger-fg);--tblr-btn-hover-bg: var(--tblr-danger);--tblr-btn-hover-border-color: var(--tblr-danger);--tblr-btn-active-color: var(--tblr-danger-fg);--tblr-btn-active-bg: var(--tblr-danger);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-danger);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-light,.btn-white{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-light-fg, #ffffff);--tblr-btn-bg: var(--tblr-light);--tblr-btn-hover-color: var(--tblr-light-fg);--tblr-btn-hover-bg: var(--tblr-light-darken);--tblr-btn-active-color: var(--tblr-light-fg);--tblr-btn-active-bg: var(--tblr-light-darken);--tblr-btn-disabled-bg: var(--tblr-light);--tblr-btn-disabled-color: var(--tblr-light-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-light,.btn-outline.btn-light,.btn-outline.btn-white{--tblr-btn-color: var(--tblr-light);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-light);--tblr-btn-hover-color: var(--tblr-light-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-light);--tblr-btn-active-color: var(--tblr-light-fg);--tblr-btn-active-bg: var(--tblr-light);--tblr-btn-active-border-color: var(--tblr-light);--tblr-btn-disabled-color: var(--tblr-light);--tblr-btn-disabled-border-color: var(--tblr-light)}.btn-ghost-light,.btn-ghost.btn-light,.btn-ghost.btn-white{--tblr-btn-color: var(--tblr-light);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-light-fg);--tblr-btn-hover-bg: var(--tblr-light);--tblr-btn-hover-border-color: var(--tblr-light);--tblr-btn-active-color: var(--tblr-light-fg);--tblr-btn-active-bg: var(--tblr-light);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-light);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-dark,.btn-black{--tblr-btn-border-color: var(--tblr-dark-mode-border-color);--tblr-btn-hover-border-color: var(--tblr-dark-mode-border-active-color);--tblr-btn-active-border-color: var(--tblr-dark-mode-border-active-color);--tblr-btn-color: var(--tblr-dark-fg, #ffffff);--tblr-btn-bg: var(--tblr-dark);--tblr-btn-hover-color: var(--tblr-dark-fg);--tblr-btn-hover-bg: var(--tblr-dark-darken);--tblr-btn-active-color: var(--tblr-dark-fg);--tblr-btn-active-bg: var(--tblr-dark-darken);--tblr-btn-disabled-bg: var(--tblr-dark);--tblr-btn-disabled-color: var(--tblr-dark-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-dark,.btn-outline.btn-dark,.btn-outline.btn-black{--tblr-btn-color: var(--tblr-dark);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-dark);--tblr-btn-hover-color: var(--tblr-dark-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-dark);--tblr-btn-active-color: var(--tblr-dark-fg);--tblr-btn-active-bg: var(--tblr-dark);--tblr-btn-active-border-color: var(--tblr-dark);--tblr-btn-disabled-color: var(--tblr-dark);--tblr-btn-disabled-border-color: var(--tblr-dark)}.btn-ghost-dark,.btn-ghost.btn-dark,.btn-ghost.btn-black{--tblr-btn-color: var(--tblr-dark);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-dark-fg);--tblr-btn-hover-bg: var(--tblr-dark);--tblr-btn-hover-border-color: var(--tblr-dark);--tblr-btn-active-color: var(--tblr-dark-fg);--tblr-btn-active-bg: var(--tblr-dark);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-dark);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-muted{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-muted-fg, #ffffff);--tblr-btn-bg: var(--tblr-muted);--tblr-btn-hover-color: var(--tblr-muted-fg);--tblr-btn-hover-bg: var(--tblr-muted-darken);--tblr-btn-active-color: var(--tblr-muted-fg);--tblr-btn-active-bg: var(--tblr-muted-darken);--tblr-btn-disabled-bg: var(--tblr-muted);--tblr-btn-disabled-color: var(--tblr-muted-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-muted,.btn-outline.btn-muted{--tblr-btn-color: var(--tblr-muted);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-muted);--tblr-btn-hover-color: var(--tblr-muted-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-muted);--tblr-btn-active-color: var(--tblr-muted-fg);--tblr-btn-active-bg: var(--tblr-muted);--tblr-btn-active-border-color: var(--tblr-muted);--tblr-btn-disabled-color: var(--tblr-muted);--tblr-btn-disabled-border-color: var(--tblr-muted)}.btn-ghost-muted,.btn-ghost.btn-muted{--tblr-btn-color: var(--tblr-muted);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-muted-fg);--tblr-btn-hover-bg: var(--tblr-muted);--tblr-btn-hover-border-color: var(--tblr-muted);--tblr-btn-active-color: var(--tblr-muted-fg);--tblr-btn-active-bg: var(--tblr-muted);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-muted);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-blue{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-blue-fg, #ffffff);--tblr-btn-bg: var(--tblr-blue);--tblr-btn-hover-color: var(--tblr-blue-fg);--tblr-btn-hover-bg: var(--tblr-blue-darken);--tblr-btn-active-color: var(--tblr-blue-fg);--tblr-btn-active-bg: var(--tblr-blue-darken);--tblr-btn-disabled-bg: var(--tblr-blue);--tblr-btn-disabled-color: var(--tblr-blue-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-blue,.btn-outline.btn-blue{--tblr-btn-color: var(--tblr-blue);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-blue);--tblr-btn-hover-color: var(--tblr-blue-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-blue);--tblr-btn-active-color: var(--tblr-blue-fg);--tblr-btn-active-bg: var(--tblr-blue);--tblr-btn-active-border-color: var(--tblr-blue);--tblr-btn-disabled-color: var(--tblr-blue);--tblr-btn-disabled-border-color: var(--tblr-blue)}.btn-ghost-blue,.btn-ghost.btn-blue{--tblr-btn-color: var(--tblr-blue);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-blue-fg);--tblr-btn-hover-bg: var(--tblr-blue);--tblr-btn-hover-border-color: var(--tblr-blue);--tblr-btn-active-color: var(--tblr-blue-fg);--tblr-btn-active-bg: var(--tblr-blue);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-blue);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-azure{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-azure-fg, #ffffff);--tblr-btn-bg: var(--tblr-azure);--tblr-btn-hover-color: var(--tblr-azure-fg);--tblr-btn-hover-bg: var(--tblr-azure-darken);--tblr-btn-active-color: var(--tblr-azure-fg);--tblr-btn-active-bg: var(--tblr-azure-darken);--tblr-btn-disabled-bg: var(--tblr-azure);--tblr-btn-disabled-color: var(--tblr-azure-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-azure,.btn-outline.btn-azure{--tblr-btn-color: var(--tblr-azure);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-azure);--tblr-btn-hover-color: var(--tblr-azure-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-azure);--tblr-btn-active-color: var(--tblr-azure-fg);--tblr-btn-active-bg: var(--tblr-azure);--tblr-btn-active-border-color: var(--tblr-azure);--tblr-btn-disabled-color: var(--tblr-azure);--tblr-btn-disabled-border-color: var(--tblr-azure)}.btn-ghost-azure,.btn-ghost.btn-azure{--tblr-btn-color: var(--tblr-azure);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-azure-fg);--tblr-btn-hover-bg: var(--tblr-azure);--tblr-btn-hover-border-color: var(--tblr-azure);--tblr-btn-active-color: var(--tblr-azure-fg);--tblr-btn-active-bg: var(--tblr-azure);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-azure);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-indigo{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-indigo-fg, #ffffff);--tblr-btn-bg: var(--tblr-indigo);--tblr-btn-hover-color: var(--tblr-indigo-fg);--tblr-btn-hover-bg: var(--tblr-indigo-darken);--tblr-btn-active-color: var(--tblr-indigo-fg);--tblr-btn-active-bg: var(--tblr-indigo-darken);--tblr-btn-disabled-bg: var(--tblr-indigo);--tblr-btn-disabled-color: var(--tblr-indigo-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-indigo,.btn-outline.btn-indigo{--tblr-btn-color: var(--tblr-indigo);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-indigo);--tblr-btn-hover-color: var(--tblr-indigo-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-indigo);--tblr-btn-active-color: var(--tblr-indigo-fg);--tblr-btn-active-bg: var(--tblr-indigo);--tblr-btn-active-border-color: var(--tblr-indigo);--tblr-btn-disabled-color: var(--tblr-indigo);--tblr-btn-disabled-border-color: var(--tblr-indigo)}.btn-ghost-indigo,.btn-ghost.btn-indigo{--tblr-btn-color: var(--tblr-indigo);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-indigo-fg);--tblr-btn-hover-bg: var(--tblr-indigo);--tblr-btn-hover-border-color: var(--tblr-indigo);--tblr-btn-active-color: var(--tblr-indigo-fg);--tblr-btn-active-bg: var(--tblr-indigo);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-indigo);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-purple{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-purple-fg, #ffffff);--tblr-btn-bg: var(--tblr-purple);--tblr-btn-hover-color: var(--tblr-purple-fg);--tblr-btn-hover-bg: var(--tblr-purple-darken);--tblr-btn-active-color: var(--tblr-purple-fg);--tblr-btn-active-bg: var(--tblr-purple-darken);--tblr-btn-disabled-bg: var(--tblr-purple);--tblr-btn-disabled-color: var(--tblr-purple-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-purple,.btn-outline.btn-purple{--tblr-btn-color: var(--tblr-purple);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-purple);--tblr-btn-hover-color: var(--tblr-purple-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-purple);--tblr-btn-active-color: var(--tblr-purple-fg);--tblr-btn-active-bg: var(--tblr-purple);--tblr-btn-active-border-color: var(--tblr-purple);--tblr-btn-disabled-color: var(--tblr-purple);--tblr-btn-disabled-border-color: var(--tblr-purple)}.btn-ghost-purple,.btn-ghost.btn-purple{--tblr-btn-color: var(--tblr-purple);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-purple-fg);--tblr-btn-hover-bg: var(--tblr-purple);--tblr-btn-hover-border-color: var(--tblr-purple);--tblr-btn-active-color: var(--tblr-purple-fg);--tblr-btn-active-bg: var(--tblr-purple);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-purple);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-pink{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-pink-fg, #ffffff);--tblr-btn-bg: var(--tblr-pink);--tblr-btn-hover-color: var(--tblr-pink-fg);--tblr-btn-hover-bg: var(--tblr-pink-darken);--tblr-btn-active-color: var(--tblr-pink-fg);--tblr-btn-active-bg: var(--tblr-pink-darken);--tblr-btn-disabled-bg: var(--tblr-pink);--tblr-btn-disabled-color: var(--tblr-pink-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-pink,.btn-outline.btn-pink{--tblr-btn-color: var(--tblr-pink);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-pink);--tblr-btn-hover-color: var(--tblr-pink-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-pink);--tblr-btn-active-color: var(--tblr-pink-fg);--tblr-btn-active-bg: var(--tblr-pink);--tblr-btn-active-border-color: var(--tblr-pink);--tblr-btn-disabled-color: var(--tblr-pink);--tblr-btn-disabled-border-color: var(--tblr-pink)}.btn-ghost-pink,.btn-ghost.btn-pink{--tblr-btn-color: var(--tblr-pink);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-pink-fg);--tblr-btn-hover-bg: var(--tblr-pink);--tblr-btn-hover-border-color: var(--tblr-pink);--tblr-btn-active-color: var(--tblr-pink-fg);--tblr-btn-active-bg: var(--tblr-pink);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-pink);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-red{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-red-fg, #ffffff);--tblr-btn-bg: var(--tblr-red);--tblr-btn-hover-color: var(--tblr-red-fg);--tblr-btn-hover-bg: var(--tblr-red-darken);--tblr-btn-active-color: var(--tblr-red-fg);--tblr-btn-active-bg: var(--tblr-red-darken);--tblr-btn-disabled-bg: var(--tblr-red);--tblr-btn-disabled-color: var(--tblr-red-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-red,.btn-outline.btn-red{--tblr-btn-color: var(--tblr-red);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-red);--tblr-btn-hover-color: var(--tblr-red-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-red);--tblr-btn-active-color: var(--tblr-red-fg);--tblr-btn-active-bg: var(--tblr-red);--tblr-btn-active-border-color: var(--tblr-red);--tblr-btn-disabled-color: var(--tblr-red);--tblr-btn-disabled-border-color: var(--tblr-red)}.btn-ghost-red,.btn-ghost.btn-red{--tblr-btn-color: var(--tblr-red);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-red-fg);--tblr-btn-hover-bg: var(--tblr-red);--tblr-btn-hover-border-color: var(--tblr-red);--tblr-btn-active-color: var(--tblr-red-fg);--tblr-btn-active-bg: var(--tblr-red);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-red);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-orange{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-orange-fg, #ffffff);--tblr-btn-bg: var(--tblr-orange);--tblr-btn-hover-color: var(--tblr-orange-fg);--tblr-btn-hover-bg: var(--tblr-orange-darken);--tblr-btn-active-color: var(--tblr-orange-fg);--tblr-btn-active-bg: var(--tblr-orange-darken);--tblr-btn-disabled-bg: var(--tblr-orange);--tblr-btn-disabled-color: var(--tblr-orange-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-orange,.btn-outline.btn-orange{--tblr-btn-color: var(--tblr-orange);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-orange);--tblr-btn-hover-color: var(--tblr-orange-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-orange);--tblr-btn-active-color: var(--tblr-orange-fg);--tblr-btn-active-bg: var(--tblr-orange);--tblr-btn-active-border-color: var(--tblr-orange);--tblr-btn-disabled-color: var(--tblr-orange);--tblr-btn-disabled-border-color: var(--tblr-orange)}.btn-ghost-orange,.btn-ghost.btn-orange{--tblr-btn-color: var(--tblr-orange);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-orange-fg);--tblr-btn-hover-bg: var(--tblr-orange);--tblr-btn-hover-border-color: var(--tblr-orange);--tblr-btn-active-color: var(--tblr-orange-fg);--tblr-btn-active-bg: var(--tblr-orange);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-orange);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-yellow{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-yellow-fg, #ffffff);--tblr-btn-bg: var(--tblr-yellow);--tblr-btn-hover-color: var(--tblr-yellow-fg);--tblr-btn-hover-bg: var(--tblr-yellow-darken);--tblr-btn-active-color: var(--tblr-yellow-fg);--tblr-btn-active-bg: var(--tblr-yellow-darken);--tblr-btn-disabled-bg: var(--tblr-yellow);--tblr-btn-disabled-color: var(--tblr-yellow-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-yellow,.btn-outline.btn-yellow{--tblr-btn-color: var(--tblr-yellow);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-yellow);--tblr-btn-hover-color: var(--tblr-yellow-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-yellow);--tblr-btn-active-color: var(--tblr-yellow-fg);--tblr-btn-active-bg: var(--tblr-yellow);--tblr-btn-active-border-color: var(--tblr-yellow);--tblr-btn-disabled-color: var(--tblr-yellow);--tblr-btn-disabled-border-color: var(--tblr-yellow)}.btn-ghost-yellow,.btn-ghost.btn-yellow{--tblr-btn-color: var(--tblr-yellow);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-yellow-fg);--tblr-btn-hover-bg: var(--tblr-yellow);--tblr-btn-hover-border-color: var(--tblr-yellow);--tblr-btn-active-color: var(--tblr-yellow-fg);--tblr-btn-active-bg: var(--tblr-yellow);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-yellow);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-lime{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-lime-fg, #ffffff);--tblr-btn-bg: var(--tblr-lime);--tblr-btn-hover-color: var(--tblr-lime-fg);--tblr-btn-hover-bg: var(--tblr-lime-darken);--tblr-btn-active-color: var(--tblr-lime-fg);--tblr-btn-active-bg: var(--tblr-lime-darken);--tblr-btn-disabled-bg: var(--tblr-lime);--tblr-btn-disabled-color: var(--tblr-lime-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-lime,.btn-outline.btn-lime{--tblr-btn-color: var(--tblr-lime);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-lime);--tblr-btn-hover-color: var(--tblr-lime-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-lime);--tblr-btn-active-color: var(--tblr-lime-fg);--tblr-btn-active-bg: var(--tblr-lime);--tblr-btn-active-border-color: var(--tblr-lime);--tblr-btn-disabled-color: var(--tblr-lime);--tblr-btn-disabled-border-color: var(--tblr-lime)}.btn-ghost-lime,.btn-ghost.btn-lime{--tblr-btn-color: var(--tblr-lime);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-lime-fg);--tblr-btn-hover-bg: var(--tblr-lime);--tblr-btn-hover-border-color: var(--tblr-lime);--tblr-btn-active-color: var(--tblr-lime-fg);--tblr-btn-active-bg: var(--tblr-lime);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-lime);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-green{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-green-fg, #ffffff);--tblr-btn-bg: var(--tblr-green);--tblr-btn-hover-color: var(--tblr-green-fg);--tblr-btn-hover-bg: var(--tblr-green-darken);--tblr-btn-active-color: var(--tblr-green-fg);--tblr-btn-active-bg: var(--tblr-green-darken);--tblr-btn-disabled-bg: var(--tblr-green);--tblr-btn-disabled-color: var(--tblr-green-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-green,.btn-outline.btn-green{--tblr-btn-color: var(--tblr-green);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-green);--tblr-btn-hover-color: var(--tblr-green-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-green);--tblr-btn-active-color: var(--tblr-green-fg);--tblr-btn-active-bg: var(--tblr-green);--tblr-btn-active-border-color: var(--tblr-green);--tblr-btn-disabled-color: var(--tblr-green);--tblr-btn-disabled-border-color: var(--tblr-green)}.btn-ghost-green,.btn-ghost.btn-green{--tblr-btn-color: var(--tblr-green);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-green-fg);--tblr-btn-hover-bg: var(--tblr-green);--tblr-btn-hover-border-color: var(--tblr-green);--tblr-btn-active-color: var(--tblr-green-fg);--tblr-btn-active-bg: var(--tblr-green);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-green);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-teal{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-teal-fg, #ffffff);--tblr-btn-bg: var(--tblr-teal);--tblr-btn-hover-color: var(--tblr-teal-fg);--tblr-btn-hover-bg: var(--tblr-teal-darken);--tblr-btn-active-color: var(--tblr-teal-fg);--tblr-btn-active-bg: var(--tblr-teal-darken);--tblr-btn-disabled-bg: var(--tblr-teal);--tblr-btn-disabled-color: var(--tblr-teal-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-teal,.btn-outline.btn-teal{--tblr-btn-color: var(--tblr-teal);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-teal);--tblr-btn-hover-color: var(--tblr-teal-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-teal);--tblr-btn-active-color: var(--tblr-teal-fg);--tblr-btn-active-bg: var(--tblr-teal);--tblr-btn-active-border-color: var(--tblr-teal);--tblr-btn-disabled-color: var(--tblr-teal);--tblr-btn-disabled-border-color: var(--tblr-teal)}.btn-ghost-teal,.btn-ghost.btn-teal{--tblr-btn-color: var(--tblr-teal);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-teal-fg);--tblr-btn-hover-bg: var(--tblr-teal);--tblr-btn-hover-border-color: var(--tblr-teal);--tblr-btn-active-color: var(--tblr-teal-fg);--tblr-btn-active-bg: var(--tblr-teal);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-teal);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-cyan{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-cyan-fg, #ffffff);--tblr-btn-bg: var(--tblr-cyan);--tblr-btn-hover-color: var(--tblr-cyan-fg);--tblr-btn-hover-bg: var(--tblr-cyan-darken);--tblr-btn-active-color: var(--tblr-cyan-fg);--tblr-btn-active-bg: var(--tblr-cyan-darken);--tblr-btn-disabled-bg: var(--tblr-cyan);--tblr-btn-disabled-color: var(--tblr-cyan-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-cyan,.btn-outline.btn-cyan{--tblr-btn-color: var(--tblr-cyan);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-cyan);--tblr-btn-hover-color: var(--tblr-cyan-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-cyan);--tblr-btn-active-color: var(--tblr-cyan-fg);--tblr-btn-active-bg: var(--tblr-cyan);--tblr-btn-active-border-color: var(--tblr-cyan);--tblr-btn-disabled-color: var(--tblr-cyan);--tblr-btn-disabled-border-color: var(--tblr-cyan)}.btn-ghost-cyan,.btn-ghost.btn-cyan{--tblr-btn-color: var(--tblr-cyan);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-cyan-fg);--tblr-btn-hover-bg: var(--tblr-cyan);--tblr-btn-hover-border-color: var(--tblr-cyan);--tblr-btn-active-color: var(--tblr-cyan-fg);--tblr-btn-active-bg: var(--tblr-cyan);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-cyan);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-x{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-x-fg, #ffffff);--tblr-btn-bg: var(--tblr-x);--tblr-btn-hover-color: var(--tblr-x-fg);--tblr-btn-hover-bg: var(--tblr-x-darken);--tblr-btn-active-color: var(--tblr-x-fg);--tblr-btn-active-bg: var(--tblr-x-darken);--tblr-btn-disabled-bg: var(--tblr-x);--tblr-btn-disabled-color: var(--tblr-x-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-x,.btn-outline.btn-x{--tblr-btn-color: var(--tblr-x);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-x);--tblr-btn-hover-color: var(--tblr-x-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-x);--tblr-btn-active-color: var(--tblr-x-fg);--tblr-btn-active-bg: var(--tblr-x);--tblr-btn-active-border-color: var(--tblr-x);--tblr-btn-disabled-color: var(--tblr-x);--tblr-btn-disabled-border-color: var(--tblr-x)}.btn-ghost-x,.btn-ghost.btn-x{--tblr-btn-color: var(--tblr-x);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-x-fg);--tblr-btn-hover-bg: var(--tblr-x);--tblr-btn-hover-border-color: var(--tblr-x);--tblr-btn-active-color: var(--tblr-x-fg);--tblr-btn-active-bg: var(--tblr-x);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-x);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-facebook{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-facebook-fg, #ffffff);--tblr-btn-bg: var(--tblr-facebook);--tblr-btn-hover-color: var(--tblr-facebook-fg);--tblr-btn-hover-bg: var(--tblr-facebook-darken);--tblr-btn-active-color: var(--tblr-facebook-fg);--tblr-btn-active-bg: var(--tblr-facebook-darken);--tblr-btn-disabled-bg: var(--tblr-facebook);--tblr-btn-disabled-color: var(--tblr-facebook-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-facebook,.btn-outline.btn-facebook{--tblr-btn-color: var(--tblr-facebook);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-facebook);--tblr-btn-hover-color: var(--tblr-facebook-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-facebook);--tblr-btn-active-color: var(--tblr-facebook-fg);--tblr-btn-active-bg: var(--tblr-facebook);--tblr-btn-active-border-color: var(--tblr-facebook);--tblr-btn-disabled-color: var(--tblr-facebook);--tblr-btn-disabled-border-color: var(--tblr-facebook)}.btn-ghost-facebook,.btn-ghost.btn-facebook{--tblr-btn-color: var(--tblr-facebook);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-facebook-fg);--tblr-btn-hover-bg: var(--tblr-facebook);--tblr-btn-hover-border-color: var(--tblr-facebook);--tblr-btn-active-color: var(--tblr-facebook-fg);--tblr-btn-active-bg: var(--tblr-facebook);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-facebook);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-twitter{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-twitter-fg, #ffffff);--tblr-btn-bg: var(--tblr-twitter);--tblr-btn-hover-color: var(--tblr-twitter-fg);--tblr-btn-hover-bg: var(--tblr-twitter-darken);--tblr-btn-active-color: var(--tblr-twitter-fg);--tblr-btn-active-bg: var(--tblr-twitter-darken);--tblr-btn-disabled-bg: var(--tblr-twitter);--tblr-btn-disabled-color: var(--tblr-twitter-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-twitter,.btn-outline.btn-twitter{--tblr-btn-color: var(--tblr-twitter);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-twitter);--tblr-btn-hover-color: var(--tblr-twitter-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-twitter);--tblr-btn-active-color: var(--tblr-twitter-fg);--tblr-btn-active-bg: var(--tblr-twitter);--tblr-btn-active-border-color: var(--tblr-twitter);--tblr-btn-disabled-color: var(--tblr-twitter);--tblr-btn-disabled-border-color: var(--tblr-twitter)}.btn-ghost-twitter,.btn-ghost.btn-twitter{--tblr-btn-color: var(--tblr-twitter);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-twitter-fg);--tblr-btn-hover-bg: var(--tblr-twitter);--tblr-btn-hover-border-color: var(--tblr-twitter);--tblr-btn-active-color: var(--tblr-twitter-fg);--tblr-btn-active-bg: var(--tblr-twitter);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-twitter);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-linkedin{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-linkedin-fg, #ffffff);--tblr-btn-bg: var(--tblr-linkedin);--tblr-btn-hover-color: var(--tblr-linkedin-fg);--tblr-btn-hover-bg: var(--tblr-linkedin-darken);--tblr-btn-active-color: var(--tblr-linkedin-fg);--tblr-btn-active-bg: var(--tblr-linkedin-darken);--tblr-btn-disabled-bg: var(--tblr-linkedin);--tblr-btn-disabled-color: var(--tblr-linkedin-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-linkedin,.btn-outline.btn-linkedin{--tblr-btn-color: var(--tblr-linkedin);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-linkedin);--tblr-btn-hover-color: var(--tblr-linkedin-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-linkedin);--tblr-btn-active-color: var(--tblr-linkedin-fg);--tblr-btn-active-bg: var(--tblr-linkedin);--tblr-btn-active-border-color: var(--tblr-linkedin);--tblr-btn-disabled-color: var(--tblr-linkedin);--tblr-btn-disabled-border-color: var(--tblr-linkedin)}.btn-ghost-linkedin,.btn-ghost.btn-linkedin{--tblr-btn-color: var(--tblr-linkedin);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-linkedin-fg);--tblr-btn-hover-bg: var(--tblr-linkedin);--tblr-btn-hover-border-color: var(--tblr-linkedin);--tblr-btn-active-color: var(--tblr-linkedin-fg);--tblr-btn-active-bg: var(--tblr-linkedin);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-linkedin);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-google{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-google-fg, #ffffff);--tblr-btn-bg: var(--tblr-google);--tblr-btn-hover-color: var(--tblr-google-fg);--tblr-btn-hover-bg: var(--tblr-google-darken);--tblr-btn-active-color: var(--tblr-google-fg);--tblr-btn-active-bg: var(--tblr-google-darken);--tblr-btn-disabled-bg: var(--tblr-google);--tblr-btn-disabled-color: var(--tblr-google-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-google,.btn-outline.btn-google{--tblr-btn-color: var(--tblr-google);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-google);--tblr-btn-hover-color: var(--tblr-google-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-google);--tblr-btn-active-color: var(--tblr-google-fg);--tblr-btn-active-bg: var(--tblr-google);--tblr-btn-active-border-color: var(--tblr-google);--tblr-btn-disabled-color: var(--tblr-google);--tblr-btn-disabled-border-color: var(--tblr-google)}.btn-ghost-google,.btn-ghost.btn-google{--tblr-btn-color: var(--tblr-google);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-google-fg);--tblr-btn-hover-bg: var(--tblr-google);--tblr-btn-hover-border-color: var(--tblr-google);--tblr-btn-active-color: var(--tblr-google-fg);--tblr-btn-active-bg: var(--tblr-google);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-google);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-youtube{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-youtube-fg, #ffffff);--tblr-btn-bg: var(--tblr-youtube);--tblr-btn-hover-color: var(--tblr-youtube-fg);--tblr-btn-hover-bg: var(--tblr-youtube-darken);--tblr-btn-active-color: var(--tblr-youtube-fg);--tblr-btn-active-bg: var(--tblr-youtube-darken);--tblr-btn-disabled-bg: var(--tblr-youtube);--tblr-btn-disabled-color: var(--tblr-youtube-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-youtube,.btn-outline.btn-youtube{--tblr-btn-color: var(--tblr-youtube);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-youtube);--tblr-btn-hover-color: var(--tblr-youtube-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-youtube);--tblr-btn-active-color: var(--tblr-youtube-fg);--tblr-btn-active-bg: var(--tblr-youtube);--tblr-btn-active-border-color: var(--tblr-youtube);--tblr-btn-disabled-color: var(--tblr-youtube);--tblr-btn-disabled-border-color: var(--tblr-youtube)}.btn-ghost-youtube,.btn-ghost.btn-youtube{--tblr-btn-color: var(--tblr-youtube);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-youtube-fg);--tblr-btn-hover-bg: var(--tblr-youtube);--tblr-btn-hover-border-color: var(--tblr-youtube);--tblr-btn-active-color: var(--tblr-youtube-fg);--tblr-btn-active-bg: var(--tblr-youtube);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-youtube);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-vimeo{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-vimeo-fg, #ffffff);--tblr-btn-bg: var(--tblr-vimeo);--tblr-btn-hover-color: var(--tblr-vimeo-fg);--tblr-btn-hover-bg: var(--tblr-vimeo-darken);--tblr-btn-active-color: var(--tblr-vimeo-fg);--tblr-btn-active-bg: var(--tblr-vimeo-darken);--tblr-btn-disabled-bg: var(--tblr-vimeo);--tblr-btn-disabled-color: var(--tblr-vimeo-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-vimeo,.btn-outline.btn-vimeo{--tblr-btn-color: var(--tblr-vimeo);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-vimeo);--tblr-btn-hover-color: var(--tblr-vimeo-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-vimeo);--tblr-btn-active-color: var(--tblr-vimeo-fg);--tblr-btn-active-bg: var(--tblr-vimeo);--tblr-btn-active-border-color: var(--tblr-vimeo);--tblr-btn-disabled-color: var(--tblr-vimeo);--tblr-btn-disabled-border-color: var(--tblr-vimeo)}.btn-ghost-vimeo,.btn-ghost.btn-vimeo{--tblr-btn-color: var(--tblr-vimeo);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-vimeo-fg);--tblr-btn-hover-bg: var(--tblr-vimeo);--tblr-btn-hover-border-color: var(--tblr-vimeo);--tblr-btn-active-color: var(--tblr-vimeo-fg);--tblr-btn-active-bg: var(--tblr-vimeo);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-vimeo);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-dribbble{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-dribbble-fg, #ffffff);--tblr-btn-bg: var(--tblr-dribbble);--tblr-btn-hover-color: var(--tblr-dribbble-fg);--tblr-btn-hover-bg: var(--tblr-dribbble-darken);--tblr-btn-active-color: var(--tblr-dribbble-fg);--tblr-btn-active-bg: var(--tblr-dribbble-darken);--tblr-btn-disabled-bg: var(--tblr-dribbble);--tblr-btn-disabled-color: var(--tblr-dribbble-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-dribbble,.btn-outline.btn-dribbble{--tblr-btn-color: var(--tblr-dribbble);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-dribbble);--tblr-btn-hover-color: var(--tblr-dribbble-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-dribbble);--tblr-btn-active-color: var(--tblr-dribbble-fg);--tblr-btn-active-bg: var(--tblr-dribbble);--tblr-btn-active-border-color: var(--tblr-dribbble);--tblr-btn-disabled-color: var(--tblr-dribbble);--tblr-btn-disabled-border-color: var(--tblr-dribbble)}.btn-ghost-dribbble,.btn-ghost.btn-dribbble{--tblr-btn-color: var(--tblr-dribbble);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-dribbble-fg);--tblr-btn-hover-bg: var(--tblr-dribbble);--tblr-btn-hover-border-color: var(--tblr-dribbble);--tblr-btn-active-color: var(--tblr-dribbble-fg);--tblr-btn-active-bg: var(--tblr-dribbble);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-dribbble);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-github{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-github-fg, #ffffff);--tblr-btn-bg: var(--tblr-github);--tblr-btn-hover-color: var(--tblr-github-fg);--tblr-btn-hover-bg: var(--tblr-github-darken);--tblr-btn-active-color: var(--tblr-github-fg);--tblr-btn-active-bg: var(--tblr-github-darken);--tblr-btn-disabled-bg: var(--tblr-github);--tblr-btn-disabled-color: var(--tblr-github-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-github,.btn-outline.btn-github{--tblr-btn-color: var(--tblr-github);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-github);--tblr-btn-hover-color: var(--tblr-github-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-github);--tblr-btn-active-color: var(--tblr-github-fg);--tblr-btn-active-bg: var(--tblr-github);--tblr-btn-active-border-color: var(--tblr-github);--tblr-btn-disabled-color: var(--tblr-github);--tblr-btn-disabled-border-color: var(--tblr-github)}.btn-ghost-github,.btn-ghost.btn-github{--tblr-btn-color: var(--tblr-github);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-github-fg);--tblr-btn-hover-bg: var(--tblr-github);--tblr-btn-hover-border-color: var(--tblr-github);--tblr-btn-active-color: var(--tblr-github-fg);--tblr-btn-active-bg: var(--tblr-github);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-github);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-instagram{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-instagram-fg, #ffffff);--tblr-btn-bg: var(--tblr-instagram);--tblr-btn-hover-color: var(--tblr-instagram-fg);--tblr-btn-hover-bg: var(--tblr-instagram-darken);--tblr-btn-active-color: var(--tblr-instagram-fg);--tblr-btn-active-bg: var(--tblr-instagram-darken);--tblr-btn-disabled-bg: var(--tblr-instagram);--tblr-btn-disabled-color: var(--tblr-instagram-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-instagram,.btn-outline.btn-instagram{--tblr-btn-color: var(--tblr-instagram);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-instagram);--tblr-btn-hover-color: var(--tblr-instagram-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-instagram);--tblr-btn-active-color: var(--tblr-instagram-fg);--tblr-btn-active-bg: var(--tblr-instagram);--tblr-btn-active-border-color: var(--tblr-instagram);--tblr-btn-disabled-color: var(--tblr-instagram);--tblr-btn-disabled-border-color: var(--tblr-instagram)}.btn-ghost-instagram,.btn-ghost.btn-instagram{--tblr-btn-color: var(--tblr-instagram);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-instagram-fg);--tblr-btn-hover-bg: var(--tblr-instagram);--tblr-btn-hover-border-color: var(--tblr-instagram);--tblr-btn-active-color: var(--tblr-instagram-fg);--tblr-btn-active-bg: var(--tblr-instagram);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-instagram);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-pinterest{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-pinterest-fg, #ffffff);--tblr-btn-bg: var(--tblr-pinterest);--tblr-btn-hover-color: var(--tblr-pinterest-fg);--tblr-btn-hover-bg: var(--tblr-pinterest-darken);--tblr-btn-active-color: var(--tblr-pinterest-fg);--tblr-btn-active-bg: var(--tblr-pinterest-darken);--tblr-btn-disabled-bg: var(--tblr-pinterest);--tblr-btn-disabled-color: var(--tblr-pinterest-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-pinterest,.btn-outline.btn-pinterest{--tblr-btn-color: var(--tblr-pinterest);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-pinterest);--tblr-btn-hover-color: var(--tblr-pinterest-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-pinterest);--tblr-btn-active-color: var(--tblr-pinterest-fg);--tblr-btn-active-bg: var(--tblr-pinterest);--tblr-btn-active-border-color: var(--tblr-pinterest);--tblr-btn-disabled-color: var(--tblr-pinterest);--tblr-btn-disabled-border-color: var(--tblr-pinterest)}.btn-ghost-pinterest,.btn-ghost.btn-pinterest{--tblr-btn-color: var(--tblr-pinterest);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-pinterest-fg);--tblr-btn-hover-bg: var(--tblr-pinterest);--tblr-btn-hover-border-color: var(--tblr-pinterest);--tblr-btn-active-color: var(--tblr-pinterest-fg);--tblr-btn-active-bg: var(--tblr-pinterest);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-pinterest);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-vk{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-vk-fg, #ffffff);--tblr-btn-bg: var(--tblr-vk);--tblr-btn-hover-color: var(--tblr-vk-fg);--tblr-btn-hover-bg: var(--tblr-vk-darken);--tblr-btn-active-color: var(--tblr-vk-fg);--tblr-btn-active-bg: var(--tblr-vk-darken);--tblr-btn-disabled-bg: var(--tblr-vk);--tblr-btn-disabled-color: var(--tblr-vk-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-vk,.btn-outline.btn-vk{--tblr-btn-color: var(--tblr-vk);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-vk);--tblr-btn-hover-color: var(--tblr-vk-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-vk);--tblr-btn-active-color: var(--tblr-vk-fg);--tblr-btn-active-bg: var(--tblr-vk);--tblr-btn-active-border-color: var(--tblr-vk);--tblr-btn-disabled-color: var(--tblr-vk);--tblr-btn-disabled-border-color: var(--tblr-vk)}.btn-ghost-vk,.btn-ghost.btn-vk{--tblr-btn-color: var(--tblr-vk);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-vk-fg);--tblr-btn-hover-bg: var(--tblr-vk);--tblr-btn-hover-border-color: var(--tblr-vk);--tblr-btn-active-color: var(--tblr-vk-fg);--tblr-btn-active-bg: var(--tblr-vk);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-vk);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-rss{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-rss-fg, #ffffff);--tblr-btn-bg: var(--tblr-rss);--tblr-btn-hover-color: var(--tblr-rss-fg);--tblr-btn-hover-bg: var(--tblr-rss-darken);--tblr-btn-active-color: var(--tblr-rss-fg);--tblr-btn-active-bg: var(--tblr-rss-darken);--tblr-btn-disabled-bg: var(--tblr-rss);--tblr-btn-disabled-color: var(--tblr-rss-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-rss,.btn-outline.btn-rss{--tblr-btn-color: var(--tblr-rss);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-rss);--tblr-btn-hover-color: var(--tblr-rss-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-rss);--tblr-btn-active-color: var(--tblr-rss-fg);--tblr-btn-active-bg: var(--tblr-rss);--tblr-btn-active-border-color: var(--tblr-rss);--tblr-btn-disabled-color: var(--tblr-rss);--tblr-btn-disabled-border-color: var(--tblr-rss)}.btn-ghost-rss,.btn-ghost.btn-rss{--tblr-btn-color: var(--tblr-rss);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-rss-fg);--tblr-btn-hover-bg: var(--tblr-rss);--tblr-btn-hover-border-color: var(--tblr-rss);--tblr-btn-active-color: var(--tblr-rss-fg);--tblr-btn-active-bg: var(--tblr-rss);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-rss);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-flickr{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-flickr-fg, #ffffff);--tblr-btn-bg: var(--tblr-flickr);--tblr-btn-hover-color: var(--tblr-flickr-fg);--tblr-btn-hover-bg: var(--tblr-flickr-darken);--tblr-btn-active-color: var(--tblr-flickr-fg);--tblr-btn-active-bg: var(--tblr-flickr-darken);--tblr-btn-disabled-bg: var(--tblr-flickr);--tblr-btn-disabled-color: var(--tblr-flickr-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-flickr,.btn-outline.btn-flickr{--tblr-btn-color: var(--tblr-flickr);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-flickr);--tblr-btn-hover-color: var(--tblr-flickr-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-flickr);--tblr-btn-active-color: var(--tblr-flickr-fg);--tblr-btn-active-bg: var(--tblr-flickr);--tblr-btn-active-border-color: var(--tblr-flickr);--tblr-btn-disabled-color: var(--tblr-flickr);--tblr-btn-disabled-border-color: var(--tblr-flickr)}.btn-ghost-flickr,.btn-ghost.btn-flickr{--tblr-btn-color: var(--tblr-flickr);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-flickr-fg);--tblr-btn-hover-bg: var(--tblr-flickr);--tblr-btn-hover-border-color: var(--tblr-flickr);--tblr-btn-active-color: var(--tblr-flickr-fg);--tblr-btn-active-bg: var(--tblr-flickr);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-flickr);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-bitbucket{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-bitbucket-fg, #ffffff);--tblr-btn-bg: var(--tblr-bitbucket);--tblr-btn-hover-color: var(--tblr-bitbucket-fg);--tblr-btn-hover-bg: var(--tblr-bitbucket-darken);--tblr-btn-active-color: var(--tblr-bitbucket-fg);--tblr-btn-active-bg: var(--tblr-bitbucket-darken);--tblr-btn-disabled-bg: var(--tblr-bitbucket);--tblr-btn-disabled-color: var(--tblr-bitbucket-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-bitbucket,.btn-outline.btn-bitbucket{--tblr-btn-color: var(--tblr-bitbucket);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-bitbucket);--tblr-btn-hover-color: var(--tblr-bitbucket-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-bitbucket);--tblr-btn-active-color: var(--tblr-bitbucket-fg);--tblr-btn-active-bg: var(--tblr-bitbucket);--tblr-btn-active-border-color: var(--tblr-bitbucket);--tblr-btn-disabled-color: var(--tblr-bitbucket);--tblr-btn-disabled-border-color: var(--tblr-bitbucket)}.btn-ghost-bitbucket,.btn-ghost.btn-bitbucket{--tblr-btn-color: var(--tblr-bitbucket);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-bitbucket-fg);--tblr-btn-hover-bg: var(--tblr-bitbucket);--tblr-btn-hover-border-color: var(--tblr-bitbucket);--tblr-btn-active-color: var(--tblr-bitbucket-fg);--tblr-btn-active-bg: var(--tblr-bitbucket);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-bitbucket);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-tabler{--tblr-btn-border-color: transparent;--tblr-btn-hover-border-color: transparent;--tblr-btn-active-border-color: transparent;--tblr-btn-color: var(--tblr-tabler-fg, #ffffff);--tblr-btn-bg: var(--tblr-tabler);--tblr-btn-hover-color: var(--tblr-tabler-fg);--tblr-btn-hover-bg: var(--tblr-tabler-darken);--tblr-btn-active-color: var(--tblr-tabler-fg);--tblr-btn-active-bg: var(--tblr-tabler-darken);--tblr-btn-disabled-bg: var(--tblr-tabler);--tblr-btn-disabled-color: var(--tblr-tabler-fg);--tblr-btn-box-shadow: var(--tblr-shadow-input)}.btn-outline-tabler,.btn-outline.btn-tabler{--tblr-btn-color: var(--tblr-tabler);--tblr-btn-bg: transparent;--tblr-btn-border-color: var(--tblr-tabler);--tblr-btn-hover-color: var(--tblr-tabler-fg);--tblr-btn-hover-border-color: transparent;--tblr-btn-hover-bg: var(--tblr-tabler);--tblr-btn-active-color: var(--tblr-tabler-fg);--tblr-btn-active-bg: var(--tblr-tabler);--tblr-btn-active-border-color: var(--tblr-tabler);--tblr-btn-disabled-color: var(--tblr-tabler);--tblr-btn-disabled-border-color: var(--tblr-tabler)}.btn-ghost-tabler,.btn-ghost.btn-tabler{--tblr-btn-color: var(--tblr-tabler);--tblr-btn-bg: transparent;--tblr-btn-border-color: transparent;--tblr-btn-hover-color: var(--tblr-tabler-fg);--tblr-btn-hover-bg: var(--tblr-tabler);--tblr-btn-hover-border-color: var(--tblr-tabler);--tblr-btn-active-color: var(--tblr-tabler-fg);--tblr-btn-active-bg: var(--tblr-tabler);--tblr-btn-active-border-color: transparent;--tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--tblr-btn-disabled-color: var(--tblr-tabler);--tblr-btn-disabled-bg: transparent;--tblr-btn-disabled-border-color: transparent;--tblr-gradient: none;--tblr-btn-box-shadow: none}.btn-sm,.btn-group-sm>.btn{--tblr-btn-line-height: 1.3333333333;--tblr-btn-icon-size: 1rem}.btn-lg,.btn-group-lg>.btn{--tblr-btn-line-height: 1.5rem;--tblr-btn-icon-size: 1.5rem}.btn-xl,.btn-group-xl>.btn{--tblr-btn-line-height: 2;--tblr-btn-icon-size: 2rem;--tblr-btn-padding-y: .6875rem;--tblr-btn-padding-x: 2rem;--tblr-btn-font-size: 1.5rem}.btn-pill{padding-right:1.5em;padding-left:1.5em;border-radius:10rem}.btn-pill[class*=btn-icon]{padding:.375rem 15px}.btn-square{border-radius:0}.btn-icon,.btn-action{padding-left:0;padding-right:0}.btn-icon .icon,.btn-action .icon{margin:calc(-1 * var(--tblr-btn-padding-x))}.btn-list{--tblr-list-gap: .5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.btn-floating{position:fixed;z-index:1030;bottom:1rem;left:1rem;box-shadow:var(--tblr-shadow-dropdown)}.btn-loading{position:relative;color:transparent!important;text-shadow:none!important;pointer-events:none}.btn-loading>*{opacity:0}.btn-loading:after{content:"";display:inline-block;vertical-align:text-bottom;border:2px var(--tblr-border-style) currentColor;border-right-color:transparent;border-radius:100rem;color:var(--tblr-btn-color);position:absolute;width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);left:calc(50% - var(--tblr-btn-icon-size) / 2);top:calc(50% - var(--tblr-btn-icon-size) / 2);animation:spinner-border .75s linear infinite}.btn-action{--tblr-border-color: transparent;color:var(--tblr-secondary);border-radius:var(--tblr-border-radius);background:transparent;box-shadow:none}.btn-action:after{content:none}.btn-action:focus{outline:none;box-shadow:none}.btn-action:hover,.btn-action.show{color:var(--tblr-body-color);background:var(--tblr-active-bg);border-color:transparent}.btn-action.show{color:var(--tblr-primary)}.btn-actions{display:flex}.btn-animate-icon .icon{transition:transform .3s ease}.btn-animate-icon:hover .icon,.btn-animate-icon:focus-visible .icon{transform:translate(4px)}.btn-animate-icon.btn-animate-icon-rotate:hover .icon,.btn-animate-icon.btn-animate-icon-rotate:focus-visible .icon{transform:rotate(90deg)}.btn-animate-icon.btn-animate-icon-move-start:hover .icon,.btn-animate-icon.btn-animate-icon-move-start:focus-visible .icon{transform:translate(-4px)}.btn-animate-icon.btn-animate-icon-pulse:hover .icon,.btn-animate-icon.btn-animate-icon-pulse:focus-visible .icon{transform:none;animation:pulse .9s}.btn-animate-icon.btn-animate-icon-shake:hover .icon,.btn-animate-icon.btn-animate-icon-shake:focus-visible .icon{transform:none;animation:shake .9s}.btn-animate-icon.btn-animate-icon-tada:hover .icon,.btn-animate-icon.btn-animate-icon-tada:focus-visible .icon{transform:none;animation:tada .9s}.btn-group,.btn-group-vertical{box-shadow:var(--tblr-shadow-input)}.btn-group>.btn-check:checked+.btn,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:5}.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus{z-index:1}.calendar{display:block;font-size:.765625rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.calendar-nav{display:flex;align-items:center}.calendar-title{flex:1;text-align:center}.calendar-body,.calendar-header{display:flex;flex-wrap:wrap;justify-content:flex-start;padding:.5rem 0}.calendar-header{color:var(--tblr-secondary)}.calendar-date{flex:0 0 14.2857142857%;max-width:14.2857142857%;padding:.2rem;text-align:center;border:0}.calendar-date.prev-month,.calendar-date.next-month{opacity:.25}.calendar-date .date-item{position:relative;display:inline-block;width:1.4rem;height:1.4rem;line-height:1.4rem;color:#66758c;text-align:center;text-decoration:none;white-space:nowrap;vertical-align:middle;cursor:pointer;background:0 0;border:var(--tblr-border-width) var(--tblr-border-style) transparent;border-radius:100rem;outline:0;transition:background .3s,border .3s,box-shadow .32s,color .3s}@media(prefers-reduced-motion:reduce){.calendar-date .date-item{transition:none}}.calendar-date .date-item:hover{color:var(--tblr-primary);text-decoration:none;background:#fefeff;border-color:var(--tblr-border-color)}.calendar-date .date-today{color:var(--tblr-primary);border-color:var(--tblr-border-color)}.calendar-range{position:relative}.calendar-range:before{position:absolute;top:50%;right:0;left:0;height:1.4rem;content:"";background:rgba(var(--tblr-primary-rgb),.1);transform:translateY(-50%)}.calendar-range.range-start .date-item,.calendar-range.range-end .date-item{color:#fff;background:var(--tblr-primary);border-color:var(--tblr-primary)}.calendar-range.range-start:before{left:50%}.calendar-range.range-end:before{right:50%}.carousel-indicators-vertical{left:auto;top:0;margin:0 1rem 0 0;flex-direction:column}.carousel-indicators-vertical [data-bs-target]{margin:3px 0;width:3px;height:30px;border:0;border-left:10px var(--tblr-border-style) transparent;border-right:10px var(--tblr-border-style) transparent}.carousel-indicators-dot [data-bs-target]{width:.5rem;height:.5rem;border-radius:100rem;border:10px var(--tblr-border-style) transparent;margin:0}.carousel-indicators-thumb [data-bs-target]{width:2rem;height:auto;background:no-repeat center/cover;border:0;border-radius:var(--tblr-border-radius);box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px;margin:0 3px;opacity:.75}@media(min-width:992px){.carousel-indicators-thumb [data-bs-target]{width:4rem}}.carousel-indicators-thumb [data-bs-target]:before{content:"";padding-top:var(--tblr-aspect-ratio, 100%);display:block}.carousel-indicators-thumb.carousel-indicators-vertical [data-bs-target]{margin:3px 0}.carousel-caption-background{background:red;position:absolute;left:0;right:0;bottom:0;height:90%;background:linear-gradient(0deg,#1f2937e6,#1f293700)}.card{transition:transform .3s ease-out,opacity .3s ease-out,box-shadow .3s ease-out}@media(prefers-reduced-motion:reduce){.card{transition:none}}@media print{.card{border:none;box-shadow:none}}a.card{color:inherit}a.card:hover{text-decoration:none;box-shadow:rgba(var(--tblr-body-color-rgb),.16) 0 2px 16px}.card .card{box-shadow:none}.card-borderless,.card-borderless .card-header,.card-borderless .card-footer{border-color:transparent}.card-stamp{--tblr-stamp-size: 7rem;position:absolute;top:0;right:0;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);max-height:100%;border-top-right-radius:6px;opacity:.2;overflow:hidden;pointer-events:none}.card-stamp-lg{--tblr-stamp-size: 13rem}.card-stamp-icon{background:var(--tblr-secondary);color:var(--tblr-card-bg, var(--tblr-bg-surface));display:flex;align-items:center;justify-content:center;border-radius:100rem;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);position:relative;top:calc(var(--tblr-stamp-size) * -.25);right:calc(var(--tblr-stamp-size) * -.25);font-size:calc(var(--tblr-stamp-size) * .75);transform:rotate(10deg)}.card-stamp-icon .icon{stroke-width:2;width:calc(var(--tblr-stamp-size) * .75);height:calc(var(--tblr-stamp-size) * .75)}.card-img,.card-img-start{border-top-left-radius:calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)));border-bottom-left-radius:calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)))}.card-img,.card-img-end{border-top-right-radius:calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)));border-bottom-right-radius:calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)))}.card-img-overlay{display:flex;flex-direction:column;justify-content:flex-end}.card-img-overlay-dark{background-image:linear-gradient(180deg,#0000,#0009)}.card-inactive{pointer-events:none;box-shadow:none}.card-inactive .card-body{opacity:.64}.card-active{--tblr-card-border-color: var(--tblr-primary);--tblr-card-bg: var(--tblr-active-bg)}.card-btn{display:flex;align-items:center;justify-content:center;padding:1rem 1.25rem;text-align:center;transition:background .3s}@media(prefers-reduced-motion:reduce){.card-btn{transition:none}}.card-btn{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);flex:1;color:inherit;font-weight:var(--tblr-font-weight-medium)}.card-btn:hover{text-decoration:none;background:rgba(var(--tblr-primary-rgb),.04)}.card-btn+.card-btn{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-stacked{--tblr-card-stacked-offset: .25rem;position:relative}.card-stacked:after{position:absolute;top:calc(-1 * var(--tblr-card-stacked-offset));right:var(--tblr-card-stacked-offset);left:var(--tblr-card-stacked-offset);height:var(--tblr-card-stacked-offset);content:"";background:var(--tblr-card-bg, var(--tblr-bg-surface));border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-cover{position:relative;padding:1rem 1.25rem;background:#666 no-repeat center/cover}.card-cover:before{position:absolute;inset:0;content:"";background:#1f29377a}.card-cover:first-child,.card-cover:first-child:before{border-radius:6px 6px 0 0}.card-cover-blurred:before{backdrop-filter:blur(2px)}.card-actions{margin:-.5rem -.5rem -.5rem auto;padding-left:.5rem}.card-actions a{text-decoration:none}.card-header{color:inherit;display:flex;align-items:center;background:transparent}.card-header:first-child{border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-header-light{border-bottom-color:transparent;background:var(--tblr-bg-surface-tertiary)}.card-header-tabs{background:var(--tblr-bg-surface-tertiary);flex:1;margin:calc(var(--tblr-card-cap-padding-y) * -1) calc(var(--tblr-card-cap-padding-x) * -1) calc(var(--tblr-card-cap-padding-y) * -1);padding:calc(var(--tblr-card-cap-padding-y) * .5) calc(var(--tblr-card-cap-padding-x) * .5) 0;border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-header-pills{flex:1;margin-top:-.5rem;margin-bottom:-.5rem}.card-rotate-left,.card-rotate-start{transform:rotate(-1.5deg)}.card-rotate-right,.card-rotate-end{transform:rotate(1.5deg)}.card-link{color:inherit}.card-link:hover{color:inherit;text-decoration:none;box-shadow:0 1px 6px #00000014}.card-link-rotate:hover{transform:rotate(1.5deg);opacity:1}.card-link-pop:hover{transform:translateY(-2px);opacity:1}.card-footer{margin-top:auto}.card-footer:last-child{border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-footer-transparent{background:transparent;border-color:transparent;padding-top:0}.card-footer-borderless{border-top:none}.card-progress{height:.25rem}.card-progress:last-child{border-radius:0 0 2px 2px}.card-progress:first-child{border-radius:2px 2px 0 0}.card-meta{color:var(--tblr-secondary)}.card-title{display:block;margin:0 0 1rem;font-size:1rem;font-weight:var(--tblr-font-weight-medium);color:inherit;line-height:1.5rem}a.card-title:hover{color:inherit}.card-header .card-title{margin:0}.card-subtitle{margin-bottom:1.25rem;color:var(--tblr-secondary);font-weight:400}.card-header .card-subtitle{margin:0}.card-title .card-subtitle{margin:0 0 0 .25rem;font-size:.875rem}.card-body{position:relative}.card-body>:last-child{margin-bottom:0}.card-sm>.card-body{padding:1rem}@media(min-width:768px){.card-md>.card-body{padding:2.5rem}}@media(min-width:768px){.card-lg>.card-body{padding:2rem}}@media(min-width:992px){.card-lg>.card-body{padding:4rem}}@media print{.card-body{padding:0}}.card-body+.card-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-body-scrollable{overflow:auto}.card-options{top:1.5rem;right:.75rem;display:flex;margin-left:auto}.card-options-link{display:inline-block;min-width:1rem;margin-left:.25rem;color:var(--tblr-secondary)}.card-status-top{position:absolute;top:0;right:0;left:0;height:2px;border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-status-start{position:absolute;right:auto;bottom:0;width:2px;height:100%;border-radius:var(--tblr-card-border-radius) 0 0 var(--tblr-card-border-radius)}.card-status-bottom{position:absolute;top:initial;bottom:0;width:100%;height:2px;border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-table{margin-bottom:0!important}.card-table tr td:first-child,.card-table tr th:first-child{padding-left:1.25rem;border-left:0}.card-table tr td:last-child,.card-table tr th:last-child{padding-right:1.25rem;border-right:0}.card-table thead tr:first-child,.card-table tbody tr:first-child,.card-table tfoot tr:first-child,.card-table thead tr:first-child td,.card-table thead tr:first-child th,.card-table tbody tr:first-child td,.card-table tbody tr:first-child th,.card-table tfoot tr:first-child td,.card-table tfoot tr:first-child th{border-top:0}.card-body+.card-table{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-table-border-color)}.card-code{padding:0}.card-code .highlight{margin:0;border:0}.card-code pre{margin:0!important;border:0!important}.card-chart{position:relative;z-index:1;height:3.5rem}.card-avatar{margin-left:auto;margin-right:auto;box-shadow:0 0 0 .25rem var(--tblr-card-bg, var(--tblr-bg-surface));margin-top:calc(-1 * var(--tblr-avatar-size) * .5)}.card-body+.card-list-group{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-list-group .list-group-item{padding-right:1.25rem;padding-left:1.25rem;border-right:0;border-left:0;border-radius:0}.card-list-group .list-group-item:last-child{border-bottom:0}.card-list-group .list-group-item:first-child{border-top:0}.card-tabs .nav-tabs{position:relative;z-index:1000;border-bottom:0}.card-tabs .nav-tabs .nav-link{background:var(--tblr-bg-surface-tertiary);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.card-tabs .nav-tabs .nav-link.active,.card-tabs .nav-tabs .nav-link:active,.card-tabs .nav-tabs .nav-link:hover{border-color:var(--tblr-border-color-translucent);color:var(--tblr-body-color)}.card-tabs .nav-tabs .nav-link.active{color:inherit;background:var(--tblr-card-bg, var(--tblr-bg-surface));border-bottom-color:transparent}.card-tabs .nav-tabs .nav-item:not(:first-child) .nav-link{border-top-left-radius:0}.card-tabs .nav-tabs .nav-item:not(:last-child) .nav-link{border-top-right-radius:0}.card-tabs .nav-tabs .nav-item+.nav-item{margin-left:calc(-1 * var(--tblr-border-width))}.card-tabs .nav-tabs-bottom,.card-tabs .nav-tabs-bottom .nav-link{margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-link.active{border-top-color:transparent}.card-tabs .nav-tabs-bottom .nav-item{margin-top:calc(-1 * var(--tblr-border-width));margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-item .nav-link{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:0 0 var(--tblr-border-radius-lg) var(--tblr-border-radius-lg)}.card-tabs .nav-tabs-bottom .nav-item:not(:first-child) .nav-link{border-bottom-left-radius:0}.card-tabs .nav-tabs-bottom .nav-item:not(:last-child) .nav-link{border-bottom-right-radius:0}.card-tabs .card{border-bottom-left-radius:0}.card-tabs .nav-tabs+.tab-content .card{border-bottom-left-radius:var(--tblr-card-border-radius);border-top-left-radius:0}.card-note{--tblr-card-bg: #fff7dd;--tblr-card-border-color: #fff1c9}.btn-close{--tblr-btn-close-color: currentColor;--tblr-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f2937'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/%3e%3c/svg%3e");--tblr-btn-close-opacity: .4;--tblr-btn-close-hover-opacity: .75;--tblr-btn-close-focus-shadow: 0 0 0 .25rem rgba(var(--tblr-primary-rgb), .25);--tblr-btn-close-focus-opacity: 1;--tblr-btn-close-disabled-opacity: .25;--tblr-btn-close-size: 1em;width:var(--tblr-btn-close-size);height:var(--tblr-btn-close-size);padding:.25em;color:var(--tblr-btn-close-color);mask:var(--tblr-btn-close-bg) no-repeat center/calc(var(--tblr-btn-close-size) * .75);background-color:var(--tblr-btn-close-color);border:0;border-radius:var(--tblr-border-radius);opacity:var(--tblr-btn-close-opacity);cursor:pointer;display:block}.btn-close:hover{color:var(--tblr-btn-close-color);text-decoration:none;opacity:var(--tblr-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--tblr-btn-close-focus-shadow);opacity:var(--tblr-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--tblr-btn-close-disabled-opacity)}.dropdown-menu{user-select:none;background-clip:border-box}.dropdown-menu.card{padding:0;min-width:25rem;display:none}.dropdown-menu.card.show{display:flex}.dropdown-item{min-width:11rem;display:flex;align-items:center;margin:0;line-height:1.4285714286;gap:.5rem}.dropdown-item-icon{width:1.25rem!important;height:1.25rem!important;margin-right:.5rem;color:var(--tblr-secondary);opacity:.7;text-align:center}.dropdown-item-indicator{margin-right:.5rem;margin-left:-.25rem;height:1.25rem;display:inline-flex;line-height:1;vertical-align:bottom;align-items:center}.dropdown-header{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-bottom:.25rem;pointer-events:none}.dropdown-menu-scrollable{height:auto;max-height:13rem;overflow-x:hidden}.dropdown-menu-column{min-width:11rem}.dropdown-menu-column .dropdown-item{min-width:0}.dropdown-menu-columns{display:flex;flex:0 .25rem}.dropdown-menu-arrow:before{content:"";position:absolute;top:-.25rem;left:.75rem;display:block;background:inherit;width:14px;height:14px;transform:rotate(45deg);transform-origin:center;border:1px solid;border-color:inherit;z-index:-1;clip:rect(0px,9px,9px,0px)}.dropdown-menu-arrow.dropdown-menu-end:before{right:.75rem;left:auto}.dropend>.dropdown-menu{margin-top:calc(-.25rem - 1px);margin-left:-.25rem}.dropend .dropdown-toggle:after{margin-left:auto}.dropdown-menu-card{padding:0;min-width:20rem}.dropdown-menu-card>.card{margin:0;border:0;box-shadow:none}.datagrid{--tblr-datagrid-padding: 1.5rem;--tblr-datagrid-item-width: 15rem;display:grid;grid-gap:var(--tblr-datagrid-padding);grid-template-columns:repeat(auto-fit,minmax(var(--tblr-datagrid-item-width),1fr))}.datagrid-title{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);margin-bottom:.25rem}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:1rem;text-align:center}@media(min-width:768px){.empty{padding:3rem}}.empty-icon{margin:0 0 1rem;width:3rem;height:3rem;line-height:1;color:var(--tblr-secondary)}.empty-icon svg{width:100%;height:100%}.empty-img{margin:0 0 2rem;line-height:1}.empty-header{margin:0 0 1rem;font-size:4rem;font-weight:var(--tblr-font-weight-light);line-height:1;color:var(--tblr-secondary)}.empty-title{font-size:1.25rem;line-height:1.75rem;font-weight:var(--tblr-font-weight-bold)}.empty-title,.empty-subtitle{margin:0 0 .5rem}.empty-action{margin-top:1.5rem}.empty-bordered{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.row>*{min-width:0}.col-separator{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.container-slim{--tblr-gutter-x: calc(var(--tblr-page-padding) * 2);--tblr-gutter-y: 0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:16rem}.container-tight{--tblr-gutter-x: calc(var(--tblr-page-padding) * 2);--tblr-gutter-y: 0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:30rem}.container-narrow{--tblr-gutter-x: calc(var(--tblr-page-padding) * 2);--tblr-gutter-y: 0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:61.875rem}.row-0{margin-right:0;margin-left:0}.row-0>.col,.row-0>[class*=col-]{padding-right:0;padding-left:0}.row-0 .card{margin-bottom:0}.row-sm{margin-right:-.375rem;margin-left:-.375rem}.row-sm>.col,.row-sm>[class*=col-]{padding-right:.375rem;padding-left:.375rem}.row-sm .card{margin-bottom:.75rem}.row-md{margin-right:-1.5rem;margin-left:-1.5rem}.row-md>.col,.row-md>[class*=col-]{padding-right:1.5rem;padding-left:1.5rem}.row-md .card{margin-bottom:3rem}.row-lg{margin-right:-3rem;margin-left:-3rem}.row-lg>.col,.row-lg>[class*=col-]{padding-right:3rem;padding-left:3rem}.row-lg .card{margin-bottom:6rem}.row-deck>.col,.row-deck>[class*=col-]{display:flex;align-items:stretch}.row-deck>.col .card,.row-deck>[class*=col-] .card{flex:1 1 auto}.row-cards{--tblr-gutter-x: var(--tblr-page-padding);--tblr-gutter-y: var(--tblr-page-padding);min-width:0}.row-cards .row-cards{flex:1}.space-y{display:flex;flex-direction:column;gap:1rem}.space-x{display:flex;gap:1rem}.space-y-0{display:flex;flex-direction:column;gap:0}.space-x-0{display:flex;gap:0}.space-y-1{display:flex;flex-direction:column;gap:.25rem}.space-x-1{display:flex;gap:.25rem}.space-y-2{display:flex;flex-direction:column;gap:.5rem}.space-x-2{display:flex;gap:.5rem}.space-y-3{display:flex;flex-direction:column;gap:1rem}.space-x-3{display:flex;gap:1rem}.space-y-4{display:flex;flex-direction:column;gap:1.5rem}.space-x-4{display:flex;gap:1.5rem}.space-y-5{display:flex;flex-direction:column;gap:2rem}.space-x-5{display:flex;gap:2rem}.space-y-6{display:flex;flex-direction:column;gap:2.5rem}.space-x-6{display:flex;gap:2.5rem}.divide-y>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y>:not(template):not(:first-child){padding-top:1rem!important}.divide-y>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x>:not(template):not(:first-child){padding-left:1rem!important}.divide-x>:not(template):not(:last-child){padding-right:1rem!important}.divide-y-0>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-0>:not(template):not(:first-child){padding-top:0!important}.divide-y-0>:not(template):not(:last-child){padding-bottom:0!important}.divide-x-0>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-0>:not(template):not(:first-child){padding-left:0!important}.divide-x-0>:not(template):not(:last-child){padding-right:0!important}.divide-y-1>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-1>:not(template):not(:first-child){padding-top:.25rem!important}.divide-y-1>:not(template):not(:last-child){padding-bottom:.25rem!important}.divide-x-1>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-1>:not(template):not(:first-child){padding-left:.25rem!important}.divide-x-1>:not(template):not(:last-child){padding-right:.25rem!important}.divide-y-2>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-2>:not(template):not(:first-child){padding-top:.5rem!important}.divide-y-2>:not(template):not(:last-child){padding-bottom:.5rem!important}.divide-x-2>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-2>:not(template):not(:first-child){padding-left:.5rem!important}.divide-x-2>:not(template):not(:last-child){padding-right:.5rem!important}.divide-y-3>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-3>:not(template):not(:first-child){padding-top:1rem!important}.divide-y-3>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x-3>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-3>:not(template):not(:first-child){padding-left:1rem!important}.divide-x-3>:not(template):not(:last-child){padding-right:1rem!important}.divide-y-4>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-4>:not(template):not(:first-child){padding-top:1.5rem!important}.divide-y-4>:not(template):not(:last-child){padding-bottom:1.5rem!important}.divide-x-4>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-4>:not(template):not(:first-child){padding-left:1.5rem!important}.divide-x-4>:not(template):not(:last-child){padding-right:1.5rem!important}.divide-y-5>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-5>:not(template):not(:first-child){padding-top:2rem!important}.divide-y-5>:not(template):not(:last-child){padding-bottom:2rem!important}.divide-x-5>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-5>:not(template):not(:first-child){padding-left:2rem!important}.divide-x-5>:not(template):not(:last-child){padding-right:2rem!important}.divide-y-6>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-6>:not(template):not(:first-child){padding-top:2.5rem!important}.divide-y-6>:not(template):not(:last-child){padding-bottom:2.5rem!important}.divide-x-6>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-6>:not(template):not(:first-child){padding-left:2.5rem!important}.divide-x-6>:not(template):not(:last-child){padding-right:2.5rem!important}.divide-y-fill{display:flex;flex-direction:column;height:100%}.divide-y-fill>:not(template){flex:1;display:flex;justify-content:center;flex-direction:column}.icon{--tblr-icon-size: 1.25rem;width:var(--tblr-icon-size);height:var(--tblr-icon-size);font-size:var(--tblr-icon-size);vertical-align:bottom;stroke-width:1.5}.icon:hover{text-decoration:none}.icon-inline{--tblr-icon-size: 1rem;vertical-align:-.2rem}.icon-filled{fill:currentColor}.icon-sm{--tblr-icon-size: 1rem;stroke-width:1}.icon-md{--tblr-icon-size: 2.5rem;stroke-width:1}.icon-lg{--tblr-icon-size: 3.5rem;stroke-width:1}.icon-pulse{transition:all .15s ease 0s;animation:pulse 2s ease infinite;animation-fill-mode:both}.icon-tada{transition:all .15s ease 0s;animation:tada 3s ease infinite;animation-fill-mode:both}.icon-rotate{transition:all .15s ease 0s;animation:rotate-360 3s linear infinite;animation-fill-mode:both}.img-responsive{--tblr-img-responsive-ratio: 75%;background:no-repeat center/cover;padding-top:var(--tblr-img-responsive-ratio)}.img-responsive-grid{padding-top:calc(var(--tblr-img-responsive-ratio) - var(--tblr-gutter-y) / 2)}.img-responsive-1x1{--tblr-img-responsive-ratio: 100%}.img-responsive-2x1{--tblr-img-responsive-ratio: 50%}.img-responsive-1x2{--tblr-img-responsive-ratio: 200%}.img-responsive-3x1{--tblr-img-responsive-ratio: 33.3333333333%}.img-responsive-1x3{--tblr-img-responsive-ratio: 300%}.img-responsive-4x1{--tblr-img-responsive-ratio: 25%}.img-responsive-1x4{--tblr-img-responsive-ratio: 400%}.img-responsive-4x3{--tblr-img-responsive-ratio: 75%}.img-responsive-3x4{--tblr-img-responsive-ratio: 133.3333333333%}.img-responsive-16x9{--tblr-img-responsive-ratio: 56.25%}.img-responsive-9x16{--tblr-img-responsive-ratio: 177.7777777778%}.img-responsive-21x9{--tblr-img-responsive-ratio: 42.8571428571%}.img-responsive-9x21{--tblr-img-responsive-ratio: 233.3333333333%}.img-bg{background:no-repeat center/cover}textarea[cols]{height:auto}.col-form-label,.form-label{display:block;font-weight:var(--tblr-font-weight-medium)}.col-form-label.required:after,.form-label.required:after{content:"*";margin-left:.25rem;color:#d63939}.form-label-description{float:right;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-secondary)}.form-hint{display:block;color:var(--tblr-secondary)}.form-hint:last-child{margin-bottom:0}.form-hint+.form-control{margin-top:.25rem}.form-label+.form-hint{margin-top:-.25rem}.input-group+.form-hint,.form-control+.form-hint,.form-select+.form-hint{margin-top:.5rem;color:var(--tblr-secondary)}.form-select:-moz-focusring{color:var(--tblr-body-color)}.form-control:-webkit-autofill{box-shadow:0 0 0 1000px var(--tblr-bg-surface-secondary) inset;color:var(--tblr-body-color);-webkit-text-fill-color:var(--tblr-body-color)}.form-control:disabled,.form-control.disabled{color:var(--tblr-secondary);user-select:none}.form-control[size]{width:auto}.form-control-light{background-color:var(--tblr-gray-100);border-color:transparent}.form-control-dark{background-color:#0000001a;color:#fff;border-color:transparent}.form-control-dark:focus{background-color:#0000001a;box-shadow:none;border-color:#ffffff3d}.form-control-dark::placeholder{color:#fff9}.form-control-rounded{border-radius:10rem}.form-control-flush{padding:0;background:none!important;border-color:transparent!important;resize:none;box-shadow:none!important;line-height:inherit}.form-footer{margin-top:2rem}.form-fieldset{padding:1rem;margin-bottom:1rem;background:var(--tblr-bg-surface-secondary);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}fieldset:empty{display:none}.form-help{display:inline-flex;font-weight:var(--tblr-font-weight-bold);align-items:center;justify-content:center;width:1.125rem;height:1.125rem;font-size:.75rem;color:var(--tblr-secondary);text-align:center;text-decoration:none;cursor:pointer;user-select:none;background:var(--tblr-gray-100);border-radius:100rem;transition:background-color .3s,color .3s}@media(prefers-reduced-motion:reduce){.form-help{transition:none}}.form-help:hover,.form-help[aria-describedby]{color:#fff;background:var(--tblr-primary)}.input-group{box-shadow:var(--tblr-shadow-input);border-radius:var(--tblr-border-radius)}.input-group .form-control,.input-group .btn{box-shadow:none}.input-group-link{font-size:.75rem}.input-group-flat:focus-within{box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25);border-radius:var(--tblr-border-radius)}.input-group-flat:focus-within .form-control,.input-group-flat:focus-within .input-group-text{border-color:#80c2be!important}.input-group-flat .form-control:focus{border-color:var(--tblr-border-color);box-shadow:none}.input-group-flat .form-control:not(:last-child){border-right:0}.input-group-flat .form-control:not(:first-child){border-left:0}.input-group-flat .input-group-text{background:var(--tblr-bg-forms);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.input-group-flat .input-group-text{transition:none}}.input-group-flat .input-group-text:first-child{padding-right:0}.input-group-flat .input-group-text:last-child{padding-left:0}.form-file-button{margin-left:0;border-left:0}label[for=floating-input]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:575.98px){.form-control,.form-select{font-size:1rem}}.input-icon{position:relative}.input-icon .form-control:not(:last-child),.input-icon .form-select:not(:last-child){padding-right:2.5rem}.input-icon .form-control:not(:first-child),.input-icon .form-select:not(:last-child){padding-left:2.5rem}.input-icon-addon{position:absolute;top:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;min-width:2.5rem;color:var(--tblr-icon-color);pointer-events:none;font-size:1.2em}.input-icon-addon:last-child{right:0;left:auto}.form-colorinput{position:relative;display:inline-block;margin:0;line-height:1;cursor:pointer}.form-colorinput-input{position:absolute;z-index:-1;opacity:0}.form-colorinput-color{display:block;width:1.5rem;height:1.5rem;color:#fff;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:var(--tblr-border-radius);box-shadow:0 1px 2px #0000000d}.form-colorinput-color:before{position:absolute;top:0;left:0;width:100%;height:100%;content:"";background:no-repeat center center/1.25rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");opacity:0;transition:opacity .3s}@media(prefers-reduced-motion:reduce){.form-colorinput-color:before{transition:none}}.form-colorinput-input:checked~.form-colorinput-color:before{opacity:1}.form-colorinput-input:focus~.form-colorinput-color{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-colorinput-light .form-colorinput-color:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%231f2937' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-imagecheck{--tblr-form-imagecheck-radius: var(--tblr-border-radius);position:relative;margin:0;cursor:pointer}.form-imagecheck-input{position:absolute;z-index:-1;opacity:0}.form-imagecheck-figure{position:relative;display:block;margin:0;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-form-imagecheck-radius)}.form-imagecheck-input:focus~.form-imagecheck-figure{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-imagecheck-input:checked~.form-imagecheck-figure{border-color:var(--tblr-primary)}.form-imagecheck-figure:before{position:absolute;top:.25rem;left:.25rem;z-index:1;display:block;width:1.25rem;height:1.25rem;color:#fff;pointer-events:none;content:"";user-select:none;background:var(--tblr-bg-forms);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius);transition:opacity .3s}@media(prefers-reduced-motion:reduce){.form-imagecheck-figure:before{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure:before{background-color:var(--tblr-primary);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-imagecheck-input[type=radio]~.form-imagecheck-figure:before{border-radius:50%}.form-imagecheck-input[type=radio]:checked~.form-imagecheck-figure:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-imagecheck-image{max-width:100%;display:block;opacity:.64;transition:opacity .3s}@media(prefers-reduced-motion:reduce){.form-imagecheck-image{transition:none}}.form-imagecheck-image:first-child{border-top-left-radius:calc(var(--tblr-form-imagecheck-radius) - 1px);border-top-right-radius:calc(var(--tblr-form-imagecheck-radius) - 1px)}.form-imagecheck-image:last-child{border-bottom-right-radius:calc(var(--tblr-form-imagecheck-radius) - 1px);border-bottom-left-radius:calc(var(--tblr-form-imagecheck-radius) - 1px)}.form-imagecheck:hover .form-imagecheck-image,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-image{opacity:1}.form-imagecheck-caption{padding:.25rem;font-size:.765625rem;color:var(--tblr-secondary);text-align:center;transition:color .3s}@media(prefers-reduced-motion:reduce){.form-imagecheck-caption{transition:none}}.form-imagecheck:hover .form-imagecheck-caption,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-caption{color:var(--tblr-body-color)}.form-selectgroup{display:inline-flex;margin:0 -.5rem -.5rem 0;flex-wrap:wrap}.form-selectgroup .form-selectgroup-item{margin:0 .5rem .5rem 0}.form-selectgroup-vertical{flex-direction:column}.form-selectgroup-item{display:block;position:relative}.form-selectgroup-input{position:absolute;top:0;left:0;z-index:-1;opacity:0}.form-selectgroup-label{position:relative;display:block;min-width:calc(1.25rem + 1.125rem + calc(var(--tblr-border-width) * 2));margin:0;padding:.5625rem 1rem;font-size:.875rem;line-height:1.25rem;color:var(--tblr-secondary);background:var(--tblr-bg-forms);text-align:center;cursor:pointer;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-shadow-input);transition:border-color .3s,background .3s,color .3s}@media(prefers-reduced-motion:reduce){.form-selectgroup-label{transition:none}}.form-selectgroup-label .icon:only-child{margin:0 -.25rem}.form-selectgroup-label:hover{color:var(--tblr-body-color)}.form-selectgroup-check{display:inline-block;width:1.25rem;height:1.25rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);vertical-align:middle;box-shadow:var(--tblr-shadow-input)}.form-selectgroup-input[type=checkbox]+.form-selectgroup-label .form-selectgroup-check{border-radius:var(--tblr-border-radius)}.form-selectgroup-input[type=radio]+.form-selectgroup-label .form-selectgroup-check{border-radius:50%}.form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-check{background-color:var(--tblr-primary);background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-selectgroup-input[type=checkbox]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-selectgroup-input[type=radio]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-selectgroup-check-floated{position:absolute;top:.5625rem;right:.5625rem}.form-selectgroup-input:checked+.form-selectgroup-label{z-index:1;color:var(--tblr-primary);background:rgba(var(--tblr-primary-rgb),.04);border-color:var(--tblr-primary)}.form-selectgroup-input:focus+.form-selectgroup-label{z-index:2;color:var(--tblr-primary);border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-selectgroup-boxes .form-selectgroup-label{text-align:left;padding:1.25rem 1rem;color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label{color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-title{color:var(--tblr-primary)}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-label-content{opacity:1}.form-selectgroup-pills{flex-wrap:wrap;align-items:flex-start}.form-selectgroup-pills .form-selectgroup-item{flex-grow:0}.form-selectgroup-pills .form-selectgroup-label{border-radius:50px}.form-control-color::-webkit-color-swatch{border:none}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}.form-control::file-selector-button{background-color:var(--tblr-btn-color, var(--tblr-tertiary-bg))}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-btn-color, var(--tblr-secondary-bg))}.form-check{user-select:none}.form-check.form-check-highlight .form-check-input:not(:checked)~.form-check-label{color:var(--tblr-secondary)}.form-check .form-check-label-off{color:var(--tblr-secondary)}.form-check .form-check-input:checked~.form-check-label-off{display:none}.form-check .form-check-input:not(:checked)~.form-check-label-on{display:none}.form-check-input{background-size:1.25rem;margin-top:0rem;box-shadow:var(--tblr-shadow-input)}.form-switch .form-check-input{transition:background-color .3s,background-position .3s}@media(prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-check-label{display:block}.form-check-label.required:after{content:"*";margin-left:.25rem;color:#d63939}.form-check-description{display:block;color:var(--tblr-secondary);font-size:.75rem;margin-top:.25rem}.form-check-single,.form-check-single .form-check-input{margin:0}.form-switch .form-check-input{height:1.25rem;margin-top:0rem}.form-switch-lg{padding-left:3.5rem;min-height:1.5rem}.form-switch-lg .form-check-input{height:1.5rem;width:2.75rem;background-size:1.5rem;margin-left:-3.5rem}.form-switch-lg .form-check-label{padding-top:.125rem}.form-check-input:checked{border:none}.form-select.is-invalid-lite,.form-control.is-invalid-lite,.form-select.is-valid-lite,.form-control.is-valid-lite{border-color:var(--tblr-border-color)!important}.legend{--tblr-legend-size: .75em;display:inline-block;background:var(--tblr-border-color);width:var(--tblr-legend-size);height:var(--tblr-legend-size);border-radius:var(--tblr-border-radius-sm);border:1px solid var(--tblr-border-color-translucent)}.list-group{margin-left:0;margin-right:0}.list-group-header{background:var(--tblr-bg-surface-tertiary);padding:.5rem 1.25rem;font-size:.75rem;font-weight:var(--tblr-font-weight-medium);line-height:1;text-transform:uppercase;color:var(--tblr-gray-500);border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.list-group-flush>.list-group-header:last-child{border-bottom-width:0}.list-group-item{background-color:inherit}.list-group-item.active{background-color:rgba(var(--tblr-secondary-rgb),.08);border-left-color:#00857d;border-left-width:2px}.list-group-item.disabled,.list-group-item:disabled{color:#6b7280;background-color:rgba(var(--tblr-secondary-rgb),.08)}.list-bordered .list-item{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);margin-top:-1px}.list-bordered .list-item:first-child{border-top:none}.list-group-hoverable .list-group-item:active,.list-group-hoverable .list-group-item:focus,.list-group-hoverable .list-group-item:hover{background-color:rgba(var(--tblr-secondary-rgb),.08)}.list-group-hoverable .list-group-item-actions{opacity:0;transition:opacity .3s}@media(prefers-reduced-motion:reduce){.list-group-hoverable .list-group-item-actions{transition:none}}.list-group-hoverable .list-group-item:hover .list-group-item-actions,.list-group-hoverable .list-group-item-actions.show{opacity:1}.list-group-transparent{--tblr-list-group-border-radius: 0;margin:0 -1.25rem}.list-group-transparent .list-group-item{background:none;border:0}.list-group-transparent .list-group-item .icon{color:var(--tblr-secondary)}.list-group-transparent .list-group-item.active{font-weight:var(--tblr-font-weight-bold);color:inherit;background:var(--tblr-active-bg)}.list-group-transparent .list-group-item.active .icon{color:inherit}.list-separated{display:flex;flex-direction:column;gap:1rem}.list-inline{margin:0}.list-inline-item:not(:last-child){margin-right:auto;margin-inline-end:.5rem}.list-inline-dots .list-inline-item+.list-inline-item:before{content:" \b7 ";margin-inline-end:.5rem}.loader{position:relative;display:block;width:2.5rem;height:2.5rem;color:#066fd1;vertical-align:middle}.loader:after{position:absolute;top:0;left:0;width:100%;height:100%;content:"";border:1px var(--tblr-border-style);border-color:transparent;border-top-color:currentColor;border-left-color:currentColor;border-radius:100rem;animation:rotate-360 .6s linear;animation-iteration-count:infinite}.dimmer{position:relative}.dimmer .loader{position:absolute;top:50%;right:0;left:0;display:none;margin:0 auto;transform:translateY(-50%)}.dimmer.active .loader{display:block}.dimmer.active .dimmer-content{pointer-events:none;opacity:.1}@keyframes animated-dots{0%{transform:translate(-100%)}}.animated-dots{display:inline-block;overflow:hidden;vertical-align:bottom}.animated-dots:after{display:inline-block;content:"...";animation:animated-dots 1.2s steps(4,jump-none) infinite}.modal-content>.btn-close,.modal-header>.btn-close{position:absolute;top:0;right:0;width:3.5rem;height:3.5rem;margin:0;padding:0;z-index:10}.modal-body{scrollbar-color:color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 20%,transparent) transparent}.modal-body::-webkit-scrollbar{width:1rem;height:1rem;transition:background .3s}@media(prefers-reduced-motion:reduce){.modal-body::-webkit-scrollbar{transition:none}}.modal-body::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 20%,transparent)}.modal-body::-webkit-scrollbar-track{background:transparent}.modal-body:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 40%,transparent)}.modal-body::-webkit-scrollbar-corner{background:transparent}.modal-body .modal-title{margin-bottom:1rem}.modal-body+.modal-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.modal-status{position:absolute;top:0;left:0;right:0;height:2px;background:var(--tblr-secondary);border-radius:var(--tblr-border-radius-lg) var(--tblr-border-radius-lg) 0 0}.modal-header{align-items:center;min-height:3.5rem;background:transparent;padding:0 3.5rem 0 1.5rem}.modal-title{font-size:1rem;font-weight:var(--tblr-font-weight-bold);color:inherit;line-height:1.4285714286}.modal-footer{padding-top:.75rem;padding-bottom:.75rem}.modal-blur{backdrop-filter:blur(4px)}.modal-full-width{max-width:none;margin:0 .5rem}.nav{--tblr-nav-link-hover-bg: color-mix(in srgb, var(--tblr-nav-link-color) 4%, transparent)}.nav-vertical,.nav-vertical .nav{flex-direction:column;flex-wrap:nowrap}.nav-vertical .nav{margin-left:1.25rem;border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding-left:.5rem}.nav-vertical .nav-link.active,.nav-vertical .nav-item.show .nav-link{font-weight:var(--tblr-font-weight-bold);color:var(--tblr-nav-link-active-color)}.nav-vertical.nav-pills{margin:0 -.75rem}.nav-bordered{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.nav-bordered .nav-item+.nav-item{margin-left:1.25rem}.nav-bordered .nav-link{padding-left:0;padding-right:0;margin:0 0 calc(-1 * var(--tblr-border-width));border:0;border-bottom:2px var(--tblr-border-style) transparent}.nav-bordered .nav-link:hover{background-color:transparent}.nav-bordered .nav-link.active,.nav-bordered .nav-item.show .nav-link{color:var(--tblr-primary);border-color:var(--tblr-primary)}.nav-underline .nav-link{border-radius:0}.nav-link{display:flex;transition:color .3s,background-color .3s}@media(prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link{align-items:center}.nav-link:hover,.nav-link:focus{background-color:var(--tblr-nav-link-hover-bg)}.nav-link-toggle{margin-left:auto;padding:0 .25rem;transition:transform .3s}@media(prefers-reduced-motion:reduce){.nav-link-toggle{transition:none}}.nav-link-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-45deg)}.nav-link-toggle:after{margin:0}.nav-link[aria-expanded=true] .nav-link-toggle{transform:rotate(180deg)}.nav-link-icon{width:1.25rem;height:1.25rem;margin-right:.5rem;color:inherit}.nav-link-icon svg{display:block;height:100%}.nav-fill .nav-item .nav-link{justify-content:center}.stars{display:inline-flex;color:#9ca3af;font-size:.75rem}.stars .star:not(:first-child){margin-left:.25rem}.pagination{margin:0;--tblr-pagination-gap: .25rem;user-select:none;gap:var(--tblr-pagination-gap);line-height:var(--tblr-body-line-height)}.page-link{min-width:2rem;border-radius:var(--tblr-pagination-border-radius)}.page-item:not(.active) .page-link:hover{background:var(--tblr-pagination-hover-bg)}.page-text{padding-left:.5rem;padding-right:.5rem}.page-item{text-align:center}.page-item.page-prev,.page-item.page-next{flex:0 0 50%;text-align:left}.page-item.page-next{margin-left:auto;text-align:right}.page-item-subtitle{margin-bottom:2px;font-size:12px;color:var(--tblr-secondary);text-transform:uppercase}.page-item.disabled .page-item-subtitle{color:var(--tblr-disabled-color)}.page-item-title{font-size:1rem;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-body-color)}.page-link:hover .page-item-title{color:#00857d}.page-item.disabled .page-item-title{color:var(--tblr-disabled-color)}.pagination-outline{--tblr-pagination-border-color: var(--tblr-border-color);--tblr-pagination-disabled-border-color: var(--tblr-border-color);--tblr-pagination-border-width: 1px}.pagination-circle{--tblr-pagination-border-radius: var(--tblr-border-radius-pill)}@keyframes progress-indeterminate{0%{right:100%;left:-35%}to,60%{right:-90%;left:100%}}.progress{position:relative;width:100%;line-height:.5rem;appearance:none}.progress::-webkit-progress-bar{background:var(--tblr-progress-bg)}.progress::-webkit-progress-value{background-color:var(--tblr-primary)}.progress::-moz-progress-bar{background-color:var(--tblr-primary)}.progress::-ms-fill{background-color:var(--tblr-primary);border:none}.progress-sm{height:.25rem}.progress-bar{height:100%}.progress-bar-indeterminate:after,.progress-bar-indeterminate:before{position:absolute;top:0;bottom:0;left:0;content:"";background-color:inherit;will-change:left,right}.progress-bar-indeterminate:before{animation:progress-indeterminate 1.5s cubic-bezier(.65,.815,.735,.395) infinite}.progress-separated .progress-bar{box-shadow:0 0 0 2px var(--tblr-card-bg, var(--tblr-bg-surface))}.progressbg{position:relative;padding:.25rem .5rem;display:flex}.progressbg-text{position:relative;z-index:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progressbg-progress{position:absolute;inset:0;z-index:0;height:100%;background:transparent;pointer-events:none}.progressbg-value{font-weight:var(--tblr-font-weight-medium);margin-left:auto;padding-left:2rem}.ribbon{--tblr-ribbon-margin: .25rem;--tblr-ribbon-border-radius: var(--tblr-border-radius);position:absolute;top:.75rem;right:calc(-1 * var(--tblr-ribbon-margin));z-index:1;padding:.25rem .75rem;font-size:.625rem;font-weight:var(--tblr-font-weight-bold);line-height:1;color:#fff;text-align:center;text-transform:uppercase;background:var(--tblr-primary);border-color:var(--tblr-primary);border-radius:var(--tblr-ribbon-border-radius) 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius);display:inline-flex;align-items:center;justify-content:center;min-height:2rem;min-width:2rem}.ribbon:before{position:absolute;right:0;bottom:100%;width:0;height:0;content:"";filter:brightness(70%);border:calc(var(--tblr-ribbon-margin) * .5) var(--tblr-border-style);border-color:inherit;border-top-color:transparent;border-right-color:transparent}.ribbon.bg-blue{border-color:var(--tblr-blue)}.ribbon.bg-blue-lt{border-color:rgba(var(--tblr-blue-rgb),.1)!important}.ribbon.bg-azure{border-color:var(--tblr-azure)}.ribbon.bg-azure-lt{border-color:rgba(var(--tblr-azure-rgb),.1)!important}.ribbon.bg-indigo{border-color:var(--tblr-indigo)}.ribbon.bg-indigo-lt{border-color:rgba(var(--tblr-indigo-rgb),.1)!important}.ribbon.bg-purple{border-color:var(--tblr-purple)}.ribbon.bg-purple-lt{border-color:rgba(var(--tblr-purple-rgb),.1)!important}.ribbon.bg-pink{border-color:var(--tblr-pink)}.ribbon.bg-pink-lt{border-color:rgba(var(--tblr-pink-rgb),.1)!important}.ribbon.bg-red{border-color:var(--tblr-red)}.ribbon.bg-red-lt{border-color:rgba(var(--tblr-red-rgb),.1)!important}.ribbon.bg-orange{border-color:var(--tblr-orange)}.ribbon.bg-orange-lt{border-color:rgba(var(--tblr-orange-rgb),.1)!important}.ribbon.bg-yellow{border-color:var(--tblr-yellow)}.ribbon.bg-yellow-lt{border-color:rgba(var(--tblr-yellow-rgb),.1)!important}.ribbon.bg-lime{border-color:var(--tblr-lime)}.ribbon.bg-lime-lt{border-color:rgba(var(--tblr-lime-rgb),.1)!important}.ribbon.bg-green{border-color:var(--tblr-green)}.ribbon.bg-green-lt{border-color:rgba(var(--tblr-green-rgb),.1)!important}.ribbon.bg-teal{border-color:var(--tblr-teal)}.ribbon.bg-teal-lt{border-color:rgba(var(--tblr-teal-rgb),.1)!important}.ribbon.bg-cyan{border-color:var(--tblr-cyan)}.ribbon.bg-cyan-lt{border-color:rgba(var(--tblr-cyan-rgb),.1)!important}.ribbon .icon{width:1.25rem;height:1.25rem;font-size:1.25rem}.ribbon-top{top:calc(-1 * var(--tblr-ribbon-margin));right:.75rem;width:2rem;padding:.5rem 0;border-radius:0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius)}.ribbon-top:before{top:0;right:100%;bottom:auto;border-color:inherit;border-top-color:transparent;border-left-color:transparent}.ribbon-top.ribbon-start{right:auto;left:.75rem}.ribbon-top.ribbon-start:before{top:0;right:100%;left:auto}.ribbon-start{right:auto;left:calc(-1 * var(--tblr-ribbon-margin));border-radius:0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius)}.ribbon-start:before{top:auto;bottom:100%;left:0;border-color:inherit;border-top-color:transparent;border-left-color:transparent}.ribbon-bottom{top:auto;bottom:.75rem}.ribbon-bookmark{padding-left:.25rem;border-radius:0 0 var(--tblr-ribbon-border-radius) 0}.ribbon-bookmark:after{position:absolute;top:0;right:100%;display:block;width:0;height:0;content:"";border:1rem var(--tblr-border-style);border-color:inherit;border-right-width:0;border-left-color:transparent;border-left-width:.5rem}.ribbon-bookmark.ribbon-left{padding-right:.5rem}.ribbon-bookmark.ribbon-left:after{right:auto;left:100%;border-right-color:transparent;border-right-width:.5rem;border-left-width:0}.ribbon-bookmark.ribbon-top{padding-right:0;padding-bottom:.25rem;padding-left:0;border-radius:0 var(--tblr-ribbon-border-radius) 0 0}.ribbon-bookmark.ribbon-top:after{top:100%;right:0;left:0;border-color:inherit;border-width:1rem;border-top-width:0;border-bottom-color:transparent;border-bottom-width:.5rem}.markdown{line-height:2}.markdown>:first-child{margin-top:0}.markdown>:last-child,.markdown>:last-child .highlight{margin-bottom:0}@media(min-width:768px){.markdown>hr,.markdown>.hr{margin-top:3em;margin-bottom:3em}}.markdown>h1,.markdown>.h1,.markdown>h2,.markdown>.h2,.markdown>h3,.markdown>.h3,.markdown>h4,.markdown>.h4,.markdown>h5,.markdown>.h5,.markdown>h6,.markdown>.h6{font-weight:var(--tblr-font-weight-bold)}.markdown>h2,.markdown>.h2,.markdown>h3,.markdown>.h3,.markdown>h4,.markdown>.h4,.markdown>h5,.markdown>.h5,.markdown>h6,.markdown>.h6{margin-top:2.5rem}.markdown>table{font-size:var(--tblr-body-font-size)}.markdown>blockquote{font-size:1rem;margin:1.5rem 0;padding:.5rem 1.5rem}.markdown>img,.markdown>p>img{border-radius:var(--tblr-border-radius);border:1px solid var(--tblr-border-color)}.markdown pre{max-height:20rem}.placeholder:not(.btn):not([class*=bg-]){background-color:currentColor!important}.placeholder:not(.avatar):not([class*=card-img-]){border-radius:var(--tblr-border-radius)}.nav-segmented{--tblr-nav-bg: var(--tblr-bg-surface-tertiary);--tblr-nav-padding: 2px;--tblr-nav-height: 2.5rem;--tblr-nav-gap: .25rem;--tblr-nav-active-bg: var(--tblr-bg-surface);--tblr-nav-font-size: inherit;--tblr-nav-radius: 6px;--tblr-nav-link-disabled-color: var(--tblr-disabled-color);--tblr-nav-link-gap: .25rem;--tblr-nav-link-padding-x: .75rem;--tblr-nav-link-icon-size: 1.25rem;display:inline-flex;flex-wrap:wrap;gap:var(--tblr-nav-gap);padding:var(--tblr-nav-padding);list-style:none;background:var(--tblr-nav-bg);border-radius:calc(var(--tblr-nav-radius) + var(--tblr-nav-padding));box-shadow:inset 0 0 0 1px #0000000a}.nav-segmented .nav-link{display:inline-flex;gap:calc(.25rem + var(--tblr-nav-link-gap));align-items:center;margin:0;font-size:var(--tblr-nav-font-size);min-width:calc(var(--tblr-nav-height) - 2 * var(--tblr-nav-padding));height:calc(var(--tblr-nav-height) - 2 * var(--tblr-nav-padding));padding:0 calc(var(--tblr-nav-link-padding-x) - 2px);border:1px solid transparent;background:transparent;color:var(--tblr-secondary);text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color .3s,color .3s;border-radius:var(--tblr-nav-radius);flex-grow:1;justify-content:center}.nav-segmented .nav-link:hover,.nav-segmented .nav-link.hover{background:#0000000a;color:var(--tblr-body-color)}.nav-segmented .nav-link.disabled,.nav-segmented .nav-link:disabled{color:var(--tblr-nav-link-disabled-color);cursor:not-allowed}.nav-segmented .nav-link-input:checked+.nav-link,.nav-segmented .nav-link.active{color:var(--tblr-body-color);background:var(--tblr-nav-active-bg);border-color:var(--tblr-border-color)}.nav-segmented .nav-link-input{display:none}.nav-segmented .nav-link-icon{width:var(--tblr-nav-link-icon-size);height:var(--tblr-nav-link-icon-size);margin:0 -.25rem;color:inherit}.nav-segmented-vertical{flex-direction:column}.nav-segmented-vertical .nav-link{justify-content:flex-start}.nav-sm{--tblr-nav-height: 2rem;--tblr-nav-font-size: var(--tblr-font-size-h5);--tblr-nav-radius: 4px;--tblr-nav-link-padding-x: .5rem;--tblr-nav-link-gap: .25rem;--tblr-nav-link-icon-size: 1rem}.nav-lg{--tblr-nav-height: 3rem;--tblr-nav-font-size: var(--tblr-font-size-h3);--tblr-nav-radius: 8px;--tblr-nav-link-padding-x: 1rem;--tblr-nav-link-gap: .5rem;--tblr-nav-link-icon-size: 1.5rem}.steps{--tblr-steps-color: var(--tblr-primary);--tblr-steps-inactive-color: var(--tblr-border-color);--tblr-steps-dot-size: .5rem;--tblr-steps-border-width: 2px;display:flex;flex-wrap:nowrap;width:100%;padding:0;margin:0;list-style:none}.steps-blue{--tblr-steps-color: var(--tblr-blue)}.steps-blue-lt{--tblr-steps-color: var(--tblr-blue-lt)}.steps-azure{--tblr-steps-color: var(--tblr-azure)}.steps-azure-lt{--tblr-steps-color: var(--tblr-azure-lt)}.steps-indigo{--tblr-steps-color: var(--tblr-indigo)}.steps-indigo-lt{--tblr-steps-color: var(--tblr-indigo-lt)}.steps-purple{--tblr-steps-color: var(--tblr-purple)}.steps-purple-lt{--tblr-steps-color: var(--tblr-purple-lt)}.steps-pink{--tblr-steps-color: var(--tblr-pink)}.steps-pink-lt{--tblr-steps-color: var(--tblr-pink-lt)}.steps-red{--tblr-steps-color: var(--tblr-red)}.steps-red-lt{--tblr-steps-color: var(--tblr-red-lt)}.steps-orange{--tblr-steps-color: var(--tblr-orange)}.steps-orange-lt{--tblr-steps-color: var(--tblr-orange-lt)}.steps-yellow{--tblr-steps-color: var(--tblr-yellow)}.steps-yellow-lt{--tblr-steps-color: var(--tblr-yellow-lt)}.steps-lime{--tblr-steps-color: var(--tblr-lime)}.steps-lime-lt{--tblr-steps-color: var(--tblr-lime-lt)}.steps-green{--tblr-steps-color: var(--tblr-green)}.steps-green-lt{--tblr-steps-color: var(--tblr-green-lt)}.steps-teal{--tblr-steps-color: var(--tblr-teal)}.steps-teal-lt{--tblr-steps-color: var(--tblr-teal-lt)}.steps-cyan{--tblr-steps-color: var(--tblr-cyan)}.steps-cyan-lt{--tblr-steps-color: var(--tblr-cyan-lt)}.step-item{position:relative;flex:1 1 0;min-height:1rem;margin-top:0;color:inherit;text-align:center;cursor:default;padding-top:calc(var(--tblr-steps-dot-size))}a.step-item{cursor:pointer}a.step-item:hover{color:inherit}.step-item:after,.step-item:before{background:var(--tblr-steps-color)}.step-item:not(:last-child):after{position:absolute;left:50%;width:100%;content:"";transform:translateY(-50%)}.step-item:after{top:calc(var(--tblr-steps-dot-size) * .5);height:var(--tblr-steps-border-width)}.step-item:before{content:"";position:absolute;top:0;left:50%;z-index:1;box-sizing:content-box;display:flex;align-items:center;justify-content:center;border-radius:100rem;transform:translate(-50%);color:var(--tblr-white);width:var(--tblr-steps-dot-size);height:var(--tblr-steps-dot-size)}.step-item.active{font-weight:var(--tblr-font-weight-bold)}.step-item.active:after{background:var(--tblr-steps-inactive-color)}.step-item.active~.step-item{color:var(--tblr-disabled-color)}.step-item.active~.step-item:after,.step-item.active~.step-item:before{background:var(--tblr-steps-inactive-color)}.steps-counter{--tblr-steps-dot-size: 1.5rem;counter-reset:steps}.steps-counter .step-item{counter-increment:steps}.steps-counter .step-item:before{content:counter(steps)}.steps-vertical{--tblr-steps-dot-offset: 6px;flex-direction:column}.steps-vertical.steps-counter{--tblr-steps-dot-offset: -2px}.steps-vertical .step-item{text-align:left;padding-top:0;padding-left:calc(var(--tblr-steps-dot-size) + 1rem);min-height:auto}.steps-vertical .step-item:not(:first-child){margin-top:1rem}.steps-vertical .step-item:before{top:var(--tblr-steps-dot-offset);left:0;transform:translate(0)}.steps-vertical .step-item:not(:last-child):after{position:absolute;content:"";transform:translate(-50%);top:var(--tblr-steps-dot-offset);left:calc(var(--tblr-steps-dot-size) * .5);width:var(--tblr-steps-border-width);height:calc(100% + 1rem)}@keyframes status-pulsate-main{40%{transform:scale(1.25)}60%{transform:scale(1.25)}}@keyframes status-pulsate-secondary{10%{transform:scale(1)}30%{transform:scale(3)}80%{transform:scale(3)}to{transform:scale(1)}}@keyframes status-pulsate-tertiary{25%{transform:scale(1)}80%{transform:scale(3);opacity:0}to{transform:scale(3);opacity:0}}.status{--tblr-status-height: 1.5rem;--tblr-status-color: #6b7280;--tblr-status-color-rgb: 107, 114, 128;display:inline-flex;align-items:center;height:var(--tblr-status-height);padding:.25rem .75rem;gap:.5rem;color:var(--tblr-status-color);background:rgba(var(--tblr-status-color-rgb),.1);font-size:.875rem;text-transform:none;letter-spacing:normal;border-radius:100rem;font-weight:var(--tblr-font-weight-medium);line-height:1;margin:0}.status .status-dot{background:var(--tblr-status-color)}.status .icon{font-size:1.25rem}.status-lite{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)!important;background:transparent!important;color:var(--tblr-body-color)!important}.status-primary{--tblr-status-color: #00857D;--tblr-status-color-rgb: 0, 133, 125}.status-secondary{--tblr-status-color: #6b7280;--tblr-status-color-rgb: 107, 114, 128}.status-success{--tblr-status-color: #2fb344;--tblr-status-color-rgb: 47, 179, 68}.status-info{--tblr-status-color: #4299e1;--tblr-status-color-rgb: 66, 153, 225}.status-warning{--tblr-status-color: #f59f00;--tblr-status-color-rgb: 245, 159, 0}.status-danger{--tblr-status-color: #d63939;--tblr-status-color-rgb: 214, 57, 57}.status-light{--tblr-status-color: #f9fafb;--tblr-status-color-rgb: 249, 250, 251}.status-dark{--tblr-status-color: #1f2937;--tblr-status-color-rgb: 31, 41, 55}.status-muted{--tblr-status-color: #6b7280;--tblr-status-color-rgb: 107, 114, 128}.status-blue{--tblr-status-color: #066fd1;--tblr-status-color-rgb: 6, 111, 209}.status-azure{--tblr-status-color: #4299e1;--tblr-status-color-rgb: 66, 153, 225}.status-indigo{--tblr-status-color: #4263eb;--tblr-status-color-rgb: 66, 99, 235}.status-purple{--tblr-status-color: #ae3ec9;--tblr-status-color-rgb: 174, 62, 201}.status-pink{--tblr-status-color: #d6336c;--tblr-status-color-rgb: 214, 51, 108}.status-red{--tblr-status-color: #d63939;--tblr-status-color-rgb: 214, 57, 57}.status-orange{--tblr-status-color: #f76707;--tblr-status-color-rgb: 247, 103, 7}.status-yellow{--tblr-status-color: #f59f00;--tblr-status-color-rgb: 245, 159, 0}.status-lime{--tblr-status-color: #74b816;--tblr-status-color-rgb: 116, 184, 22}.status-green{--tblr-status-color: #2fb344;--tblr-status-color-rgb: 47, 179, 68}.status-teal{--tblr-status-color: #0ca678;--tblr-status-color-rgb: 12, 166, 120}.status-cyan{--tblr-status-color: #17a2b8;--tblr-status-color-rgb: 23, 162, 184}.status-dot{--tblr-status-dot-color: var(--tblr-status-color, #6b7280);--tblr-status-size: .5rem;position:relative;display:inline-block;width:var(--tblr-status-size);height:var(--tblr-status-size);background:var(--tblr-status-dot-color);border-radius:100rem}.status-dot-animated:before{content:"";position:absolute;inset:0;z-index:0;background:inherit;border-radius:inherit;opacity:.6;animation:1s linear 2s backwards infinite status-pulsate-tertiary}.status-indicator{--tblr-status-indicator-size: 2.5rem;--tblr-status-indicator-color: var(--tblr-status-color, #6b7280);display:block;position:relative;width:var(--tblr-status-indicator-size);height:var(--tblr-status-indicator-size)}.status-indicator-circle{--tblr-status-circle-size: .75rem;position:absolute;left:50%;top:50%;margin:calc(var(--tblr-status-circle-size) / -2) 0 0 calc(var(--tblr-status-circle-size) / -2);width:var(--tblr-status-circle-size);height:var(--tblr-status-circle-size);border-radius:100rem;background:var(--tblr-status-color)}.status-indicator-circle:nth-child(1){z-index:3}.status-indicator-circle:nth-child(2){z-index:2;opacity:.1}.status-indicator-circle:nth-child(3){z-index:1;opacity:.3}.status-indicator-animated .status-indicator-circle:nth-child(1){animation:2s linear 1s infinite backwards status-pulsate-main}.status-indicator-animated .status-indicator-circle:nth-child(2){animation:2s linear 1s infinite backwards status-pulsate-secondary}.status-indicator-animated .status-indicator-circle:nth-child(3){animation:2s linear 1s infinite backwards status-pulsate-tertiary}.switch-icon{display:inline-block;line-height:1;border:0;padding:0;background:transparent;width:1.25rem;height:1.25rem;vertical-align:bottom;position:relative;cursor:pointer}.switch-icon.disabled{pointer-events:none;opacity:.4}.switch-icon:focus{outline:none}.switch-icon svg{display:block;width:100%;height:100%}.switch-icon .switch-icon-a,.switch-icon .switch-icon-b{display:block;width:100%;height:100%}.switch-icon .switch-icon-a{opacity:1}.switch-icon .switch-icon-b{position:absolute;top:0;left:0;opacity:0}.switch-icon.active .switch-icon-a{opacity:0}.switch-icon.active .switch-icon-b{opacity:1}.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:opacity .5s}@media(prefers-reduced-motion:reduce){.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:opacity .5s,transform 0s .5s}@media(prefers-reduced-motion:reduce){.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-b{transform:scale(1.5)}.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:opacity 0s,transform .5s}@media(prefers-reduced-motion:reduce){.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:none}}.switch-icon-scale.active .switch-icon-b{transform:scale(1)}.switch-icon-flip{perspective:10em}.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{backface-visibility:hidden;transform-style:preserve-3d;transition:opacity 0s .2s,transform .4s ease-in-out}@media(prefers-reduced-motion:reduce){.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{transition:none}}.switch-icon-flip .switch-icon-a{opacity:1;transform:rotateY(0)}.switch-icon-flip .switch-icon-b{opacity:1;transform:rotateY(-180deg)}.switch-icon-flip.active .switch-icon-a{opacity:1;transform:rotateY(180deg)}.switch-icon-flip.active .switch-icon-b{opacity:1;transform:rotateY(0)}.switch-icon-slide-up,.switch-icon-slide-left,.switch-icon-slide-start,.switch-icon-slide-right,.switch-icon-slide-end,.switch-icon-slide-down{overflow:hidden}.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-start .switch-icon-a,.switch-icon-slide-start .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-end .switch-icon-a,.switch-icon-slide-end .switch-icon-b,.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b{transition:opacity .3s,transform .3s}@media(prefers-reduced-motion:reduce){.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-start .switch-icon-a,.switch-icon-slide-start .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-end .switch-icon-a,.switch-icon-slide-end .switch-icon-b,.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b{transition:none}}.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-start .switch-icon-a,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-end .switch-icon-a,.switch-icon-slide-down .switch-icon-a{transform:translateY(0)}.switch-icon-slide-up .switch-icon-b,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-start .switch-icon-b,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-end .switch-icon-b,.switch-icon-slide-down .switch-icon-b{transform:translateY(100%)}.switch-icon-slide-up.active .switch-icon-a,.switch-icon-slide-left.active .switch-icon-a,.switch-icon-slide-start.active .switch-icon-a,.switch-icon-slide-right.active .switch-icon-a,.switch-icon-slide-end.active .switch-icon-a,.switch-icon-slide-down.active .switch-icon-a{transform:translateY(-100%)}.switch-icon-slide-up.active .switch-icon-b,.switch-icon-slide-left.active .switch-icon-b,.switch-icon-slide-start.active .switch-icon-b,.switch-icon-slide-right.active .switch-icon-b,.switch-icon-slide-end.active .switch-icon-b,.switch-icon-slide-down.active .switch-icon-b{transform:translateY(0)}.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-start .switch-icon-a{transform:translate(0)}.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-start .switch-icon-b{transform:translate(100%)}.switch-icon-slide-left.active .switch-icon-a,.switch-icon-slide-start.active .switch-icon-a{transform:translate(-100%)}.switch-icon-slide-left.active .switch-icon-b,.switch-icon-slide-start.active .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-end .switch-icon-a{transform:translate(0)}.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-end .switch-icon-b{transform:translate(-100%)}.switch-icon-slide-right.active .switch-icon-a,.switch-icon-slide-end.active .switch-icon-a{transform:translate(100%)}.switch-icon-slide-right.active .switch-icon-b,.switch-icon-slide-end.active .switch-icon-b{transform:translate(0)}.switch-icon-slide-down .switch-icon-a{transform:translateY(0)}.switch-icon-slide-down .switch-icon-b{transform:translateY(-100%)}.switch-icon-slide-down.active .switch-icon-a{transform:translateY(100%)}.switch-icon-slide-down.active .switch-icon-b{transform:translateY(0)}.table thead th,.markdown>table thead th{background:var(--tblr-bg-surface-tertiary);font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-top:.5rem;padding-bottom:.5rem;white-space:nowrap}@media print{.table thead th,.markdown>table thead th{background:transparent}}.table-responsive .table,.table-responsive .markdown>table{margin-bottom:0}.table-responsive+.card-footer{border-top:0}.table-transparent thead th{background:transparent}.table-nowrap>:not(caption)>*>*{white-space:nowrap}.table-vcenter>:not(caption)>*>*{vertical-align:middle}.table-center>:not(caption)>*>*{text-align:center}.td-truncate{max-width:1px;width:100%}.table-mobile{display:block}.table-mobile thead{display:none}.table-mobile tbody,.table-mobile tr{display:flex;flex-direction:column}.table-mobile td{display:block;padding:.5rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile .btn{display:block}@media(max-width:575.98px){.table-mobile-sm{display:block}.table-mobile-sm thead{display:none}.table-mobile-sm tbody,.table-mobile-sm tr{display:flex;flex-direction:column}.table-mobile-sm td{display:block;padding:.5rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-sm td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-sm tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-sm .btn{display:block}}@media(max-width:767.98px){.table-mobile-md{display:block}.table-mobile-md thead{display:none}.table-mobile-md tbody,.table-mobile-md tr{display:flex;flex-direction:column}.table-mobile-md td{display:block;padding:.5rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-md td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-md tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-md .btn{display:block}}@media(max-width:991.98px){.table-mobile-lg{display:block}.table-mobile-lg thead{display:none}.table-mobile-lg tbody,.table-mobile-lg tr{display:flex;flex-direction:column}.table-mobile-lg td{display:block;padding:.5rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-lg td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-lg tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-lg .btn{display:block}}@media(max-width:1199.98px){.table-mobile-xl{display:block}.table-mobile-xl thead{display:none}.table-mobile-xl tbody,.table-mobile-xl tr{display:flex;flex-direction:column}.table-mobile-xl td{display:block;padding:.5rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xl td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xl .btn{display:block}}@media(max-width:1399.98px){.table-mobile-xxl{display:block}.table-mobile-xxl thead{display:none}.table-mobile-xxl tbody,.table-mobile-xxl tr{display:flex;flex-direction:column}.table-mobile-xxl td{display:block;padding:.5rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xxl td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xxl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xxl .btn{display:block}}.table-sort{font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;border:0;background:inherit;display:block;width:100%;text-align:inherit;transition:color .3s}@media(prefers-reduced-motion:reduce){.table-sort{transition:none}}.table-sort{margin:-.5rem;padding:.5rem}.table-sort:hover,.table-sort.asc,.table-sort.desc{color:var(--tblr-body-color)}.table-sort:after{content:"";display:inline-flex;width:1rem;height:1rem;vertical-align:bottom;mask-image:url("data:image/svg+xml,");background:currentColor;margin-left:.25rem}.table-sort.asc:after{mask-image:url("data:image/svg+xml,")}.table-sort.desc:after{mask-image:url("data:image/svg+xml,")}.table-borderless thead th{background:transparent}.table-selectable tbody tr .on-checked{display:none}.table-selectable tbody tr .on-unchecked{display:initial}.table-selectable tbody tr:has(.table-selectable-check:checked){background-color:var(--tblr-active-bg)}.table-selectable tbody tr:has(.table-selectable-check:checked) .on-checked{display:initial}.table-selectable tbody tr:has(.table-selectable-check:checked) .on-unchecked{display:none}.tag{--tblr-tag-height: 1.5rem;border:1px solid var(--tblr-border-color);display:inline-flex;align-items:center;height:var(--tblr-tag-height);border-radius:var(--tblr-border-radius);padding:0 .5rem;background:var(--tblr-bg-surface);box-shadow:var(--tblr-shadow-input);gap:.5rem}.tag .btn-close{margin-right:-.25rem;margin-left:-.125rem;padding:0;width:1rem;height:1rem;font-size:.5rem}.tag-badge{--tblr-badge-font-size: .625rem;--tblr-badge-padding-x: .25rem;--tblr-badge-padding-y: .125rem;margin-right:-.25rem}.tag-avatar,.tag-flag,.tag-payment,.tag-icon,.tag-check{margin-left:-.25rem}.tag-icon{color:var(--tblr-secondary);margin-right:-.125rem;width:1rem;height:1rem}.tag-check{width:1rem;height:1rem;background-size:1rem}.tags-list{--tblr-list-gap: .5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.toast{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);box-shadow:#1f29370a 0 2px 4px}.toast .toast-header{user-select:none}.toast button[data-bs-dismiss=toast]{outline:none}.toast-primary{--tblr-toast-color: #00857D}.toast-secondary{--tblr-toast-color: #6b7280}.toast-success{--tblr-toast-color: #2fb344}.toast-info{--tblr-toast-color: #4299e1}.toast-warning{--tblr-toast-color: #f59f00}.toast-danger{--tblr-toast-color: #d63939}.toast-light{--tblr-toast-color: #f9fafb}.toast-dark{--tblr-toast-color: #1f2937}.toast-muted{--tblr-toast-color: #6b7280}.toast-blue{--tblr-toast-color: #066fd1}.toast-azure{--tblr-toast-color: #4299e1}.toast-indigo{--tblr-toast-color: #4263eb}.toast-purple{--tblr-toast-color: #ae3ec9}.toast-pink{--tblr-toast-color: #d6336c}.toast-red{--tblr-toast-color: #d63939}.toast-orange{--tblr-toast-color: #f76707}.toast-yellow{--tblr-toast-color: #f59f00}.toast-lime{--tblr-toast-color: #74b816}.toast-green{--tblr-toast-color: #2fb344}.toast-teal{--tblr-toast-color: #0ca678}.toast-cyan{--tblr-toast-color: #17a2b8}.toolbar{display:flex;flex-wrap:nowrap;flex-shrink:0;margin:0 -.5rem}.toolbar>*{margin:0 .5rem}.tracking{--tblr-tracking-height: 1.5rem;--tblr-tracking-gap-width: .125rem;--tblr-tracking-block-border-radius: var(--tblr-border-radius);display:flex;gap:var(--tblr-tracking-gap-width)}.tracking-squares{--tblr-tracking-block-border-radius: var(--tblr-border-radius-sm)}.tracking-squares .tracking-block{height:auto}.tracking-squares .tracking-block:before{content:"";display:block;padding-top:100%}.tracking-block{flex:1;border-radius:var(--tblr-tracking-block-border-radius);height:var(--tblr-tracking-height);min-width:.25rem;background:var(--tblr-border-color)}.timeline{--tblr-timeline-icon-size: 2.5rem;position:relative;list-style:none;padding:0}.timeline-event{position:relative}.timeline-event:not(:last-child){margin-bottom:var(--tblr-page-padding)}.timeline-event:not(:last-child):before{content:"";position:absolute;top:var(--tblr-timeline-icon-size);left:calc(var(--tblr-timeline-icon-size) / 2);bottom:calc(-1 * var(--tblr-page-padding));width:var(--tblr-border-width);background-color:var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.timeline-event-icon{position:absolute;display:flex;align-items:center;justify-content:center;width:var(--tblr-timeline-icon-size, 2.5rem);height:var(--tblr-timeline-icon-size, 2.5rem);background:var(--tblr-bg-surface-secondary);color:var(--tblr-secondary);border-radius:var(--tblr-border-radius);z-index:5}.timeline-event-card{margin-left:calc(var(--tblr-timeline-icon-size, 2.5rem) + var(--tblr-page-padding))}.timeline-simple .timeline-event-icon{display:none}.timeline-simple .timeline-event-card{margin-left:0}.hr-text{display:flex;align-items:center;margin:2rem 0;font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);height:1px}.hr-text:after,.hr-text:before{flex:1 1 auto;height:1px;background-color:var(--tblr-border-color)}.hr-text:before{content:"";margin-right:.5rem}.hr-text:after{content:"";margin-left:.5rem}.hr-text>*:first-child{padding-right:.5rem;padding-left:0;color:var(--tblr-secondary)}.hr-text.hr-text-left:before,.hr-text.hr-text-start:before{content:none}.hr-text.hr-text-left>*:first-child,.hr-text.hr-text-start>*:first-child{padding-right:.5rem;padding-left:.5rem}.hr-text.hr-text-right:before,.hr-text.hr-text-end:before{content:""}.hr-text.hr-text-right:after,.hr-text.hr-text-end:after{content:none}.hr-text.hr-text-right>*:first-child,.hr-text.hr-text-end>*:first-child{padding-right:0;padding-left:.5rem}.card>.hr-text{margin:0}.hr-text-spaceless{margin:-.5rem 0}.lead{color:var(--tblr-secondary);font-size:inherit}a{text-decoration-skip-ink:auto;color:color-mix(in srgb,transparent,var(--tblr-link-color) var(--tblr-link-opacity, 100%))}a:hover{color:color-mix(in srgb,transparent,var(--tblr-link-hover-color) var(--tblr-link-opacity, 100%))}h1 a,h2 a,h3 a,.field-group h2 a,h4 a,h5 a,h6 a,.h1 a,.h2 a,.h3 a,.h4 a,.h5 a,.h6 a,h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover,.h1 a:hover,.h2 a:hover,.h3 a:hover,.h4 a:hover,.h5 a:hover,.h6 a:hover{color:inherit}h1,.h1{font-size:var(--tblr-font-size-h1);line-height:var(--tblr-line-height-h1)}h2,.h2{font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h2)}h3,.field-group h2,.field-group .h2,.h3{font-size:var(--tblr-font-size-h3);line-height:var(--tblr-line-height-h3)}h4,.h4{font-size:var(--tblr-font-size-h4);line-height:var(--tblr-line-height-h4)}h5,.h5{font-size:var(--tblr-font-size-h5);line-height:var(--tblr-line-height-h5)}h6,.h6{font-size:var(--tblr-font-size-h6);line-height:var(--tblr-line-height-h6)}.fs-base{font-size:var(--tblr-body-font-size)}strong,.strong,b{font-weight:var(--tblr-font-weight-bold)}blockquote{padding:1rem;border-left:2px var(--tblr-border-style) var(--tblr-border-color)}blockquote p{margin-bottom:1rem}blockquote cite{display:block;text-align:right}blockquote cite:before{content:"\2014 "}ul,ol{padding-left:1.5rem}hr,.hr{margin:2rem 0}dl dd:last-child{margin-bottom:0}pre{--tblr-scrollbar-color: var(--tblr-light);padding:1rem;background:var(--tblr-bg-surface-dark);color:var(--tblr-light);border-radius:var(--tblr-border-radius);line-height:1.4285714286}pre{scrollbar-color:color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 20%,transparent) transparent}pre::-webkit-scrollbar{width:1rem;height:1rem;transition:background .3s}@media(prefers-reduced-motion:reduce){pre::-webkit-scrollbar{transition:none}}pre::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 20%,transparent)}pre::-webkit-scrollbar-track{background:transparent}pre:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem color-mix(in srgb,var(--tblr-scrollbar-color, var(--tblr-body-color)) 40%,transparent)}pre::-webkit-scrollbar-corner{background:transparent}pre code{background:transparent;padding:0}code{background:var(--tblr-code-bg);padding:2px 4px;border-radius:var(--tblr-border-radius)}abbr{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}kbd,.kbd{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);display:inline-block;box-sizing:border-box;max-width:100%;font-size:var(--tblr-font-size-h5);font-weight:var(--tblr-font-weight-medium);line-height:1;vertical-align:baseline;border-radius:var(--tblr-border-radius)}img{max-width:100%;height:auto}.list-unstyled{margin-left:0}::selection,.text-selected{background-color:color-mix(in srgb,var(--tblr-primary) 10%,transparent)}.text-selected{display:inline-block}[class^=link-].disabled,[class*=" link-"].disabled{color:var(--tblr-disabled-color)!important;pointer-events:none}a:hover:has(.icon){text-decoration:none}.link-hoverable{border-radius:var(--tblr-border-radius);transition:background-color .15s ease-in-out}.link-hoverable:hover{text-decoration:none;color:var(--tblr-primary);background:color-mix(in srgb,var(--tblr-secondary) 4%,transparent)}.subheader{font-size:.75rem;font-weight:var(--tblr-font-weight-medium);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.mention{display:inline-block;box-shadow:var(--tblr-shadow-border);border-radius:var(--tblr-border-radius-pill);line-height:1.3333333333em;font-size:.8571428571em;color:var(--tblr-body-color);background:var(--tblr-bg-surface-tertiary);padding:.1666666667em .6666666667em;font-weight:var(--tblr-font-weight-medium)}a.mention{cursor:pointer}a.mention:hover,a.mention.hover{background:var(--tblr-bg-surface-secondary);text-decoration:underline}.mention-avatar,.mention-app,.mention-color{width:1.1666666667em;height:1.1666666667em;border-radius:var(--tblr-border-radius-pill);margin:-.1666666667em .3333333333em 0 -.3333333333em;display:inline-flex;background:no-repeat center center/cover;box-shadow:var(--tblr-shadow-border);vertical-align:middle;text-align:center}.mention-app{box-shadow:none;background:none;border-radius:0}.mention-count{color:var(--tblr-secondary);margin-left:.6666666667em}.text-incorrect{background:color-mix(in srgb,var(--tblr-red) 4%,transparent);text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:var(--tblr-red)}.text-correct{background:color-mix(in srgb,var(--tblr-green) 4%,transparent);text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:var(--tblr-green)}.steps{--tblr-steps-padding: 2rem;--tblr-steps-item-size: 1.5rem;margin-left:1rem;padding-left:var(--tblr-steps-padding);counter-reset:step;border-left:1px solid var(--tblr-border-color);margin-bottom:2rem}.steps h3,.steps .field-group h2,.field-group .steps h2,.steps .field-group .h2,.field-group .steps .h2,.steps .h3{counter-increment:step}.steps h3:not(:first-child),.steps .field-group h2:not(:first-child),.field-group .steps h2:not(:first-child),.steps .field-group .h2:not(:first-child),.field-group .steps .h2:not(:first-child),.steps .h3:not(:first-child){margin-top:2.5rem!important}.steps h3:before,.steps .field-group h2:before,.field-group .steps h2:before,.steps .field-group .h2:before,.field-group .steps .h2:before,.steps .h3:before{content:counter(step);display:inline-block;position:absolute;margin-top:1px;margin-left:calc(-1 * var(--tblr-steps-padding) - var(--tblr-steps-item-size) / 2);width:var(--tblr-steps-item-size);height:var(--tblr-steps-item-size);text-align:center;color:var(--tblr-body-color);border:1px solid var(--tblr-border-color);background:var(--tblr-bg-surface);border-radius:var(--tblr-border-radius);line-height:calc(var(--tblr-steps-item-size) - 2px);font-size:var(--tblr-font-size-h4);font-weight:var(--tblr-font-weight-bold)}.steps>:last-child{margin-bottom:0}.callout{margin-bottom:1.5rem;border:1px solid var(--tblr-primary-200);border-radius:var(--tblr-border-radius);padding:.5rem 1rem;background:var(--tblr-primary-lt)}.callout>:last-child{margin-bottom:0}.chart{display:block;min-height:10rem}.chart text{font-family:inherit}.chart-sm{height:2.5rem}.chart-lg{height:15rem}.chart-square{height:5.75rem}.chart-sparkline{position:relative;width:4rem;height:2.5rem;line-height:1;min-height:0!important}.chart-sparkline-sm{height:1.5rem}.chart-sparkline-square{width:2.5rem}.chart-sparkline-wide{width:6rem}.chart-sparkline-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.625rem}.chart-sparkline-label .icon{width:1rem;height:1rem;font-size:1rem}.offcanvas-header{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.offcanvas-footer{padding:1.5rem}.offcanvas-title{font-size:1rem;font-weight:var(--tblr-font-weight-medium);line-height:1.5rem}.offcanvas-narrow{width:20rem}.chat-bubbles{display:flex;flex-direction:column;gap:1rem}.chat-bubble{background:var(--tblr-bg-surface-secondary);border-radius:var(--tblr-border-radius-lg);padding:1rem;position:relative}.chat-bubble-me{background-color:var(--tblr-primary-lt);box-shadow:none}.chat-bubble-title{margin-bottom:.25rem}.chat-bubble-author{font-weight:600}.chat-bubble-date{color:var(--tblr-secondary)}.chat-bubble-body>*:last-child{margin-bottom:0}.signature{--tblr-signature-padding: var(--tblr-spacer-1);--tblr-signature-border-radius: var(--tblr-border-radius);border:var(--tblr-border-width) solid var(--tblr-border-color);padding:var(--tblr-signature-padding);border-radius:var(--tblr-border-radius)}.signature-canvas{border:var(--tblr-border-width) dashed var(--tblr-border-color);border-radius:calc(var(--tblr-signature-border-radius) - var(--tblr-signature-padding));display:block;cursor:crosshair;width:100%}.clearfix:after{display:block;clear:both;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--tblr-border-width);min-height:1em;background-color:currentcolor;opacity:.16}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!important}.visually-hidden *,.visually-hidden-focusable:not(:focus):not(:focus-within) *{overflow:hidden!important}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--tblr-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--tblr-aspect-ratio: 100%}.ratio-2x1{--tblr-aspect-ratio: 50%}.ratio-1x2{--tblr-aspect-ratio: 200%}.ratio-3x1{--tblr-aspect-ratio: 33.3333333333%}.ratio-1x3{--tblr-aspect-ratio: 300%}.ratio-4x1{--tblr-aspect-ratio: 25%}.ratio-1x4{--tblr-aspect-ratio: 400%}.ratio-4x3{--tblr-aspect-ratio: 75%}.ratio-3x4{--tblr-aspect-ratio: 133.3333333333%}.ratio-16x9{--tblr-aspect-ratio: 56.25%}.ratio-9x16{--tblr-aspect-ratio: 177.7777777778%}.ratio-21x9{--tblr-aspect-ratio: 42.8571428571%}.ratio-9x21{--tblr-aspect-ratio: 233.3333333333%}.focus-ring:focus{outline:0;box-shadow:var(--tblr-focus-ring-x, 0) var(--tblr-focus-ring-y, 0) var(--tblr-focus-ring-blur, 0) var(--tblr-focus-ring-width) var(--tblr-focus-ring-color)}.bg-white-overlay{color:#fff;background-color:#f9fafb3d}.bg-dark-overlay{color:#fff;background-color:#1f29373d}.bg-cover{background-repeat:no-repeat;background-size:cover;background-position:center}.bg-primary{background-color:color-mix(in srgb,var(--tblr-primary) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-primary-lt{color:color-mix(in srgb,var(--tblr-primary) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-primary-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-primary{border-color:color-mix(in srgb,var(--tblr-primary) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-primary{--tblr-gradient-from: var(--tblr-primary)}.bg-gradient-to-primary{--tblr-gradient-to: var(--tblr-primary)}.bg-gradient-via-primary{--tblr-gradient-via: var(--tblr-primary);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-primary{color:#f9fafb!important;background-color:RGBA(var(--tblr-primary-rgb),var(--tblr-bg-opacity, 1))!important}.link-primary{color:color-mix(in srgb,var(--tblr-primary) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-primary) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-primary:hover,.link-primary:focus{color:RGBA(0,106,100,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(0,106,100,var(--tblr-link-underline-opacity, 1))!important}.bg-secondary{background-color:color-mix(in srgb,var(--tblr-secondary) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-secondary-lt{color:color-mix(in srgb,var(--tblr-secondary) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-secondary-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-secondary{border-color:color-mix(in srgb,var(--tblr-secondary) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-secondary{--tblr-gradient-from: var(--tblr-secondary)}.bg-gradient-to-secondary{--tblr-gradient-to: var(--tblr-secondary)}.bg-gradient-via-secondary{--tblr-gradient-via: var(--tblr-secondary);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-secondary,.text-bg-gray{color:#f9fafb!important;background-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-bg-opacity, 1))!important}.link-secondary{color:color-mix(in srgb,var(--tblr-secondary) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-secondary) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-secondary:hover,.link-secondary:focus{color:RGBA(86,91,102,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(86,91,102,var(--tblr-link-underline-opacity, 1))!important}.bg-success{background-color:color-mix(in srgb,var(--tblr-success) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-success-lt{color:color-mix(in srgb,var(--tblr-success) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-success-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-success{border-color:color-mix(in srgb,var(--tblr-success) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-success{--tblr-gradient-from: var(--tblr-success)}.bg-gradient-to-success{--tblr-gradient-to: var(--tblr-success)}.bg-gradient-via-success{--tblr-gradient-via: var(--tblr-success);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-success{color:#f9fafb!important;background-color:RGBA(var(--tblr-success-rgb),var(--tblr-bg-opacity, 1))!important}.link-success{color:color-mix(in srgb,var(--tblr-success) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-success) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-success:hover,.link-success:focus{color:RGBA(38,143,54,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity, 1))!important}.bg-info{background-color:color-mix(in srgb,var(--tblr-info) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-info-lt{color:color-mix(in srgb,var(--tblr-info) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-info-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-info{border-color:color-mix(in srgb,var(--tblr-info) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-info{--tblr-gradient-from: var(--tblr-info)}.bg-gradient-to-info{--tblr-gradient-to: var(--tblr-info)}.bg-gradient-via-info{--tblr-gradient-via: var(--tblr-info);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-info{color:#f9fafb!important;background-color:RGBA(var(--tblr-info-rgb),var(--tblr-bg-opacity, 1))!important}.link-info{color:color-mix(in srgb,var(--tblr-info) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-info) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-info:hover,.link-info:focus{color:RGBA(53,122,180,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity, 1))!important}.bg-warning{background-color:color-mix(in srgb,var(--tblr-warning) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-warning-lt{color:color-mix(in srgb,var(--tblr-warning) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-warning-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-warning{border-color:color-mix(in srgb,var(--tblr-warning) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-warning{--tblr-gradient-from: var(--tblr-warning)}.bg-gradient-to-warning{--tblr-gradient-to: var(--tblr-warning)}.bg-gradient-via-warning{--tblr-gradient-via: var(--tblr-warning);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-warning{color:#f9fafb!important;background-color:RGBA(var(--tblr-warning-rgb),var(--tblr-bg-opacity, 1))!important}.link-warning{color:color-mix(in srgb,var(--tblr-warning) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-warning) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-warning:hover,.link-warning:focus{color:RGBA(196,127,0,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(196,127,0,var(--tblr-link-underline-opacity, 1))!important}.bg-danger{background-color:color-mix(in srgb,var(--tblr-danger) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-danger-lt{color:color-mix(in srgb,var(--tblr-danger) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-danger-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-danger{border-color:color-mix(in srgb,var(--tblr-danger) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-danger{--tblr-gradient-from: var(--tblr-danger)}.bg-gradient-to-danger{--tblr-gradient-to: var(--tblr-danger)}.bg-gradient-via-danger{--tblr-gradient-via: var(--tblr-danger);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-danger{color:#f9fafb!important;background-color:RGBA(var(--tblr-danger-rgb),var(--tblr-bg-opacity, 1))!important}.link-danger{color:color-mix(in srgb,var(--tblr-danger) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-danger) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-danger:hover,.link-danger:focus{color:RGBA(171,46,46,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity, 1))!important}.bg-light{background-color:color-mix(in srgb,var(--tblr-light) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-light-lt{color:color-mix(in srgb,var(--tblr-light) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-light-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-light{border-color:color-mix(in srgb,var(--tblr-light) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-light{--tblr-gradient-from: var(--tblr-light)}.bg-gradient-to-light{--tblr-gradient-to: var(--tblr-light)}.bg-gradient-via-light{--tblr-gradient-via: var(--tblr-light);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-light,.text-bg-white{color:#1f2937!important;background-color:RGBA(var(--tblr-light-rgb),var(--tblr-bg-opacity, 1))!important}.link-light{color:color-mix(in srgb,var(--tblr-light) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-light) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-light:hover,.link-light:focus{color:RGBA(250,251,252,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(250,251,252,var(--tblr-link-underline-opacity, 1))!important}.bg-dark{background-color:color-mix(in srgb,var(--tblr-dark) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-dark-lt{color:color-mix(in srgb,var(--tblr-dark) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-dark-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-dark{border-color:color-mix(in srgb,var(--tblr-dark) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-dark{--tblr-gradient-from: var(--tblr-dark)}.bg-gradient-to-dark{--tblr-gradient-to: var(--tblr-dark)}.bg-gradient-via-dark{--tblr-gradient-via: var(--tblr-dark);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-dark,.text-bg-black{color:#f9fafb!important;background-color:RGBA(var(--tblr-dark-rgb),var(--tblr-bg-opacity, 1))!important}.link-dark{color:color-mix(in srgb,var(--tblr-dark) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-dark) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-dark:hover,.link-dark:focus{color:RGBA(25,33,44,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(25,33,44,var(--tblr-link-underline-opacity, 1))!important}.bg-muted{background-color:color-mix(in srgb,var(--tblr-muted) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-muted-lt{color:color-mix(in srgb,var(--tblr-muted) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-muted-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-muted{border-color:color-mix(in srgb,var(--tblr-muted) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-muted{--tblr-gradient-from: var(--tblr-muted)}.bg-gradient-to-muted{--tblr-gradient-to: var(--tblr-muted)}.bg-gradient-via-muted{--tblr-gradient-via: var(--tblr-muted);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-muted{color:#f9fafb!important;background-color:RGBA(var(--tblr-muted-rgb),var(--tblr-bg-opacity, 1))!important}.link-muted{color:color-mix(in srgb,var(--tblr-muted) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-muted) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-muted:hover,.link-muted:focus{color:RGBA(86,91,102,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(86,91,102,var(--tblr-link-underline-opacity, 1))!important}.bg-blue{background-color:color-mix(in srgb,var(--tblr-blue) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-blue-lt{color:color-mix(in srgb,var(--tblr-blue) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-blue-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-blue{border-color:color-mix(in srgb,var(--tblr-blue) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-blue{--tblr-gradient-from: var(--tblr-blue)}.bg-gradient-to-blue{--tblr-gradient-to: var(--tblr-blue)}.bg-gradient-via-blue{--tblr-gradient-via: var(--tblr-blue);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-blue{color:#f9fafb!important;background-color:RGBA(var(--tblr-blue-rgb),var(--tblr-bg-opacity, 1))!important}.link-blue{color:color-mix(in srgb,var(--tblr-blue) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-blue) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-blue:hover,.link-blue:focus{color:RGBA(5,89,167,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(5,89,167,var(--tblr-link-underline-opacity, 1))!important}.bg-azure{background-color:color-mix(in srgb,var(--tblr-azure) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-azure-lt{color:color-mix(in srgb,var(--tblr-azure) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-azure-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-azure{border-color:color-mix(in srgb,var(--tblr-azure) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-azure{--tblr-gradient-from: var(--tblr-azure)}.bg-gradient-to-azure{--tblr-gradient-to: var(--tblr-azure)}.bg-gradient-via-azure{--tblr-gradient-via: var(--tblr-azure);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-azure{color:#f9fafb!important;background-color:RGBA(var(--tblr-azure-rgb),var(--tblr-bg-opacity, 1))!important}.link-azure{color:color-mix(in srgb,var(--tblr-azure) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-azure) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-azure:hover,.link-azure:focus{color:RGBA(53,122,180,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity, 1))!important}.bg-indigo{background-color:color-mix(in srgb,var(--tblr-indigo) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-indigo-lt{color:color-mix(in srgb,var(--tblr-indigo) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-indigo-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-indigo{border-color:color-mix(in srgb,var(--tblr-indigo) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-indigo{--tblr-gradient-from: var(--tblr-indigo)}.bg-gradient-to-indigo{--tblr-gradient-to: var(--tblr-indigo)}.bg-gradient-via-indigo{--tblr-gradient-via: var(--tblr-indigo);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-indigo{color:#f9fafb!important;background-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-bg-opacity, 1))!important}.link-indigo{color:color-mix(in srgb,var(--tblr-indigo) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-indigo) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-indigo:hover,.link-indigo:focus{color:RGBA(53,79,188,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(53,79,188,var(--tblr-link-underline-opacity, 1))!important}.bg-purple{background-color:color-mix(in srgb,var(--tblr-purple) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-purple-lt{color:color-mix(in srgb,var(--tblr-purple) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-purple-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-purple{border-color:color-mix(in srgb,var(--tblr-purple) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-purple{--tblr-gradient-from: var(--tblr-purple)}.bg-gradient-to-purple{--tblr-gradient-to: var(--tblr-purple)}.bg-gradient-via-purple{--tblr-gradient-via: var(--tblr-purple);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-purple{color:#f9fafb!important;background-color:RGBA(var(--tblr-purple-rgb),var(--tblr-bg-opacity, 1))!important}.link-purple{color:color-mix(in srgb,var(--tblr-purple) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-purple) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-purple:hover,.link-purple:focus{color:RGBA(139,50,161,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(139,50,161,var(--tblr-link-underline-opacity, 1))!important}.bg-pink{background-color:color-mix(in srgb,var(--tblr-pink) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-pink-lt{color:color-mix(in srgb,var(--tblr-pink) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-pink-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-pink{border-color:color-mix(in srgb,var(--tblr-pink) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-pink{--tblr-gradient-from: var(--tblr-pink)}.bg-gradient-to-pink{--tblr-gradient-to: var(--tblr-pink)}.bg-gradient-via-pink{--tblr-gradient-via: var(--tblr-pink);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-pink{color:#f9fafb!important;background-color:RGBA(var(--tblr-pink-rgb),var(--tblr-bg-opacity, 1))!important}.link-pink{color:color-mix(in srgb,var(--tblr-pink) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-pink) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-pink:hover,.link-pink:focus{color:RGBA(171,41,86,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(171,41,86,var(--tblr-link-underline-opacity, 1))!important}.bg-red{background-color:color-mix(in srgb,var(--tblr-red) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-red-lt{color:color-mix(in srgb,var(--tblr-red) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-red-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-red{border-color:color-mix(in srgb,var(--tblr-red) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-red{--tblr-gradient-from: var(--tblr-red)}.bg-gradient-to-red{--tblr-gradient-to: var(--tblr-red)}.bg-gradient-via-red{--tblr-gradient-via: var(--tblr-red);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-red{color:#f9fafb!important;background-color:RGBA(var(--tblr-red-rgb),var(--tblr-bg-opacity, 1))!important}.link-red{color:color-mix(in srgb,var(--tblr-red) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-red) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-red:hover,.link-red:focus{color:RGBA(171,46,46,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity, 1))!important}.bg-orange{background-color:color-mix(in srgb,var(--tblr-orange) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-orange-lt{color:color-mix(in srgb,var(--tblr-orange) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-orange-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-orange{border-color:color-mix(in srgb,var(--tblr-orange) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-orange{--tblr-gradient-from: var(--tblr-orange)}.bg-gradient-to-orange{--tblr-gradient-to: var(--tblr-orange)}.bg-gradient-via-orange{--tblr-gradient-via: var(--tblr-orange);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-orange{color:#f9fafb!important;background-color:RGBA(var(--tblr-orange-rgb),var(--tblr-bg-opacity, 1))!important}.link-orange{color:color-mix(in srgb,var(--tblr-orange) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-orange) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-orange:hover,.link-orange:focus{color:RGBA(198,82,6,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity, 1))!important}.bg-yellow{background-color:color-mix(in srgb,var(--tblr-yellow) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-yellow-lt{color:color-mix(in srgb,var(--tblr-yellow) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-yellow-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-yellow{border-color:color-mix(in srgb,var(--tblr-yellow) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-yellow{--tblr-gradient-from: var(--tblr-yellow)}.bg-gradient-to-yellow{--tblr-gradient-to: var(--tblr-yellow)}.bg-gradient-via-yellow{--tblr-gradient-via: var(--tblr-yellow);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-yellow{color:#f9fafb!important;background-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-bg-opacity, 1))!important}.link-yellow{color:color-mix(in srgb,var(--tblr-yellow) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-yellow) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-yellow:hover,.link-yellow:focus{color:RGBA(196,127,0,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(196,127,0,var(--tblr-link-underline-opacity, 1))!important}.bg-lime{background-color:color-mix(in srgb,var(--tblr-lime) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-lime-lt{color:color-mix(in srgb,var(--tblr-lime) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-lime-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-lime{border-color:color-mix(in srgb,var(--tblr-lime) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-lime{--tblr-gradient-from: var(--tblr-lime)}.bg-gradient-to-lime{--tblr-gradient-to: var(--tblr-lime)}.bg-gradient-via-lime{--tblr-gradient-via: var(--tblr-lime);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-lime{color:#f9fafb!important;background-color:RGBA(var(--tblr-lime-rgb),var(--tblr-bg-opacity, 1))!important}.link-lime{color:color-mix(in srgb,var(--tblr-lime) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-lime) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-lime:hover,.link-lime:focus{color:RGBA(93,147,18,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(93,147,18,var(--tblr-link-underline-opacity, 1))!important}.bg-green{background-color:color-mix(in srgb,var(--tblr-green) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-green-lt{color:color-mix(in srgb,var(--tblr-green) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-green-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-green{border-color:color-mix(in srgb,var(--tblr-green) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-green{--tblr-gradient-from: var(--tblr-green)}.bg-gradient-to-green{--tblr-gradient-to: var(--tblr-green)}.bg-gradient-via-green{--tblr-gradient-via: var(--tblr-green);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-green{color:#f9fafb!important;background-color:RGBA(var(--tblr-green-rgb),var(--tblr-bg-opacity, 1))!important}.link-green{color:color-mix(in srgb,var(--tblr-green) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-green) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-green:hover,.link-green:focus{color:RGBA(38,143,54,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity, 1))!important}.bg-teal{background-color:color-mix(in srgb,var(--tblr-teal) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-teal-lt{color:color-mix(in srgb,var(--tblr-teal) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-teal-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-teal{border-color:color-mix(in srgb,var(--tblr-teal) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-teal{--tblr-gradient-from: var(--tblr-teal)}.bg-gradient-to-teal{--tblr-gradient-to: var(--tblr-teal)}.bg-gradient-via-teal{--tblr-gradient-via: var(--tblr-teal);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-teal{color:#f9fafb!important;background-color:RGBA(var(--tblr-teal-rgb),var(--tblr-bg-opacity, 1))!important}.link-teal{color:color-mix(in srgb,var(--tblr-teal) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-teal) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-teal:hover,.link-teal:focus{color:RGBA(10,133,96,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(10,133,96,var(--tblr-link-underline-opacity, 1))!important}.bg-cyan{background-color:color-mix(in srgb,var(--tblr-cyan) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-cyan-lt{color:color-mix(in srgb,var(--tblr-cyan) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-cyan-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-cyan{border-color:color-mix(in srgb,var(--tblr-cyan) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-cyan{--tblr-gradient-from: var(--tblr-cyan)}.bg-gradient-to-cyan{--tblr-gradient-to: var(--tblr-cyan)}.bg-gradient-via-cyan{--tblr-gradient-via: var(--tblr-cyan);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-cyan{color:#f9fafb!important;background-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-bg-opacity, 1))!important}.link-cyan{color:color-mix(in srgb,var(--tblr-cyan) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-cyan) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-cyan:hover,.link-cyan:focus{color:RGBA(18,130,147,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(18,130,147,var(--tblr-link-underline-opacity, 1))!important}.bg-white{background-color:color-mix(in srgb,var(--tblr-white) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.bg-white-lt{color:color-mix(in srgb,var(--tblr-white) calc(var(--tblr-text-opacity, 1) * 100%),transparent)!important;background-color:color-mix(in srgb,var(--tblr-white-lt) calc(var(--tblr-bg-opacity, 1) * 100%),transparent)!important}.border-white{border-color:color-mix(in srgb,var(--tblr-white) calc(var(--tblr-border-opacity, 1) * 100%),transparent)!important}.bg-gradient-from-white{--tblr-gradient-from: var(--tblr-white)}.bg-gradient-to-white{--tblr-gradient-to: var(--tblr-white)}.bg-gradient-via-white{--tblr-gradient-via: var(--tblr-white);--tblr-gradient-stops: var(--tblr-gradient-from, transparent), var(--tblr-gradient-via, transparent), var(--tblr-gradient-to, transparent)}.text-bg-white{color:#1f2937!important;background-color:RGBA(var(--tblr-white-rgb),var(--tblr-bg-opacity, 1))!important}.link-white{color:color-mix(in srgb,var(--tblr-white) calc(var(--tblr-link-opacity, 1) * 100%),transparent)!important;text-decoration-color:color-mix(in srgb,var(--tblr-white) calc(var(--tblr-link-underline-opacity, 1) * 100%),transparent)!important}.link-white:hover,.link-white:focus{color:RGBA(255,255,255,var(--tblr-link-opacity, 1))!important;text-decoration-color:RGBA(255,255,255,var(--tblr-link-underline-opacity, 1))!important}.text-primary{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-primary) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-primary-fg{color:var(--tblr-primary-fg)!important}.text-secondary{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-secondary) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-secondary-fg{color:var(--tblr-secondary-fg)!important}.text-success{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-success) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-success-fg{color:var(--tblr-success-fg)!important}.text-info{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-info) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-info-fg{color:var(--tblr-info-fg)!important}.text-warning{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-warning) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-warning-fg{color:var(--tblr-warning-fg)!important}.text-danger{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-danger) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-danger-fg{color:var(--tblr-danger-fg)!important}.text-light{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-light) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-light-fg{color:var(--tblr-light-fg)!important}.text-dark{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-dark) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-dark-fg{color:var(--tblr-dark-fg)!important}.text-muted{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-muted) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-muted-fg{color:var(--tblr-muted-fg)!important}.text-blue{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-blue) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-blue-fg{color:var(--tblr-blue-fg)!important}.text-azure{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-azure) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-azure-fg{color:var(--tblr-azure-fg)!important}.text-indigo{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-indigo) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-indigo-fg{color:var(--tblr-indigo-fg)!important}.text-purple{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-purple) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-purple-fg{color:var(--tblr-purple-fg)!important}.text-pink{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-pink) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-pink-fg{color:var(--tblr-pink-fg)!important}.text-red{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-red) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-red-fg{color:var(--tblr-red-fg)!important}.text-orange{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-orange) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-orange-fg{color:var(--tblr-orange-fg)!important}.text-yellow{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-yellow) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-yellow-fg{color:var(--tblr-yellow-fg)!important}.text-lime{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-lime) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-lime-fg{color:var(--tblr-lime-fg)!important}.text-green{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-green) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-green-fg{color:var(--tblr-green-fg)!important}.text-teal{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-teal) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-teal-fg{color:var(--tblr-teal-fg)!important}.text-cyan{--tblr-text-opacity: 1;color:color-mix(in srgb,var(--tblr-cyan) calc(var(--tblr-text-opacity) * 100%),transparent)!important}.text-cyan-fg{color:var(--tblr-cyan-fg)!important}.bg-gray-50{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-50) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-50-fg{color:var(--tblr-gray-50-fg)!important}.bg-gray-100{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-100) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-100-fg{color:var(--tblr-gray-100-fg)!important}.bg-gray-200{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-200) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-200-fg{color:var(--tblr-gray-200-fg)!important}.bg-gray-300{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-300) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-300-fg{color:var(--tblr-gray-300-fg)!important}.bg-gray-400{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-400) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-400-fg{color:var(--tblr-gray-400-fg)!important}.bg-gray-500{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-500) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-500-fg{color:var(--tblr-gray-500-fg)!important}.bg-gray-600{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-600) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-600-fg{color:var(--tblr-gray-600-fg)!important}.bg-gray-700{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-700) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-700-fg{color:var(--tblr-gray-700-fg)!important}.bg-gray-800{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-800) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-800-fg{color:var(--tblr-gray-800-fg)!important}.bg-gray-900{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-900) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-900-fg{color:var(--tblr-gray-900-fg)!important}.bg-gray-950{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-gray-950) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-gray-950-fg{color:var(--tblr-gray-950-fg)!important}.bg-x{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-x) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-x-fg{color:var(--tblr-x-fg)!important}.bg-facebook{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-facebook) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-facebook-fg{color:var(--tblr-facebook-fg)!important}.bg-twitter{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-twitter) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-twitter-fg{color:var(--tblr-twitter-fg)!important}.bg-linkedin{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-linkedin) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-linkedin-fg{color:var(--tblr-linkedin-fg)!important}.bg-google{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-google) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-google-fg{color:var(--tblr-google-fg)!important}.bg-youtube{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-youtube) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-youtube-fg{color:var(--tblr-youtube-fg)!important}.bg-vimeo{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-vimeo) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-vimeo-fg{color:var(--tblr-vimeo-fg)!important}.bg-dribbble{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-dribbble) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-dribbble-fg{color:var(--tblr-dribbble-fg)!important}.bg-github{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-github) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-github-fg{color:var(--tblr-github-fg)!important}.bg-instagram{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-instagram) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-instagram-fg{color:var(--tblr-instagram-fg)!important}.bg-pinterest{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-pinterest) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-pinterest-fg{color:var(--tblr-pinterest-fg)!important}.bg-vk{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-vk) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-vk-fg{color:var(--tblr-vk-fg)!important}.bg-rss{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-rss) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-rss-fg{color:var(--tblr-rss-fg)!important}.bg-flickr{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-flickr) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-flickr-fg{color:var(--tblr-flickr-fg)!important}.bg-bitbucket{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-bitbucket) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-bitbucket-fg{color:var(--tblr-bitbucket-fg)!important}.bg-tabler{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-tabler) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.text-tabler-fg{color:var(--tblr-tabler-fg)!important}.bg-inverted{--tblr-bg-opacity: 1;background-color:color-mix(in srgb,var(--tblr-bg-surface-inverted) calc(var(--tblr-bg-opacity) * 100%),transparent)!important}.bg-surface{background-color:var(--tblr-bg-surface)!important}.bg-surface-secondary{background-color:var(--tblr-bg-surface-secondary)!important}.bg-surface-tertiary{background-color:var(--tblr-bg-surface-tertiary)!important}.bg-surface-backdrop{background-color:color-mix(in srgb,var(--tblr-gray-800) 24%,transparent)!important}.scrollable{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.hover{overflow-y:hidden}.scrollable.hover>*{margin-top:-1px}.scrollable.hover:hover,.scrollable.hover:focus,.scrollable.hover:active{overflow:visible;overflow-y:auto}.touch .scrollable{overflow-y:auto!important}.scroll-x,.scroll-y{overflow:hidden;-webkit-overflow-scrolling:touch}.scroll-y{overflow-y:auto}.scroll-x{overflow-x:auto}.no-scroll{overflow:hidden}.w-0{width:0!important}.h-0{height:0!important}.w-1{width:.25rem!important}.h-1{height:.25rem!important}.w-2{width:.5rem!important}.h-2{height:.5rem!important}.w-3{width:1rem!important}.h-3{height:1rem!important}.w-4{width:1.5rem!important}.h-4{height:1.5rem!important}.w-5{width:2rem!important}.h-5{height:2rem!important}.w-6{width:2.5rem!important}.h-6{height:2.5rem!important}.w-auto{width:auto!important}.h-auto{height:auto!important}.w-px{width:1px!important}.h-px{height:1px!important}.w-full{width:100%!important}.h-full{height:100%!important}.opacity-0{opacity:0!important}.opacity-5{opacity:.05!important}.opacity-10{opacity:.1!important}.opacity-15{opacity:.15!important}.opacity-20{opacity:.2!important}.opacity-25{opacity:.25!important}.opacity-30{opacity:.3!important}.opacity-35{opacity:calc(35 / 100)!important}.opacity-40{opacity:.4!important}.opacity-45{opacity:.45!important}.opacity-50{opacity:.5!important}.opacity-55{opacity:.55!important}.opacity-60{opacity:.6!important}.opacity-65{opacity:.65!important}.opacity-70{opacity:calc(70 / 100)!important}.opacity-75{opacity:.75!important}.opacity-80{opacity:.8!important}.opacity-85{opacity:.85!important}.opacity-90{opacity:.9!important}.opacity-95{opacity:calc(95 / 100)!important}.opacity-100{opacity:1!important}.hover-shadow-sm:hover{box-shadow:0 .125rem .25rem #00000013!important}.hover-shadow:hover{box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px!important}.hover-shadow-lg:hover{box-shadow:0 1rem 3rem #0000002d!important}.hover-shadow-none:hover{box-shadow:none!important}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.hover-rotate-start,.hover-rotate-end,.hover-scale,.hover-elevate-down,.hover-elevate-up{transition:transform .3s ease}.hover-rotate-start:hover,.hover-rotate-end:hover,.hover-scale:hover,.hover-elevate-down:hover,.hover-elevate-up:hover{will-change:transform}.hover-elevate-up:hover{transform:translateY(-4px)}.hover-elevate-down:hover{transform:translateY(4px)}.hover-scale:hover{transform:scale(1.1)}.hover-rotate-end:hover{transform:rotate(4deg)}.hover-rotate-start:hover{transform:rotate(-4deg)}.ts-control{border:1px solid var(--tblr-border-color);padding:.5625rem 1rem;width:100%;overflow:hidden;position:relative;z-index:1;box-sizing:border-box;box-shadow:none;border-radius:var(--tblr-border-radius);display:flex;flex-wrap:wrap}.ts-wrapper.multi.has-items .ts-control{padding:calc(.5625rem - 1px + -0) 1rem calc(.5625rem - 4px + -0)}.full .ts-control{background-color:var(--tblr-bg-forms)}.disabled .ts-control,.disabled .ts-control *{cursor:default!important}.focus .ts-control{box-shadow:none}.ts-control>*{vertical-align:baseline;display:inline-block}.ts-wrapper.multi .ts-control>div{cursor:pointer;margin:0 3px 3px 0;padding:1px 5px;background:#efefef;color:#1f2937;border:0 solid #e5e7eb;overflow:auto}.ts-wrapper.multi .ts-control>div.active{background:#00857d;color:#fff;border:0 solid rgba(0,0,0,0)}.ts-wrapper.multi.disabled .ts-control>div,.ts-wrapper.multi.disabled .ts-control>div.active{color:#787878;background:#fff;border:0 solid white}.ts-control>input{flex:1 1 auto;min-width:7rem;display:inline-block!important;padding:0!important;min-height:0!important;max-height:none!important;max-width:100%!important;margin:0!important;text-indent:0!important;border:0 none!important;background:none!important;line-height:inherit!important;user-select:auto!important;box-shadow:none!important}.ts-control>input::-ms-clear{display:none}.ts-control>input:focus{outline:none!important}.has-items .ts-control>input{margin:0 4px!important}.ts-control.rtl{text-align:right}.ts-control.rtl.single .ts-control:after{left:calc(1rem + 5px);right:auto}.ts-control.rtl .ts-control>input{margin:0 4px 0 -2px!important}.disabled .ts-control{opacity:1;background-color:var(--tblr-bg-surface-secondary)}.input-hidden .ts-control>input{opacity:0;position:absolute;left:-10000px}.ts-dropdown{position:absolute;top:100%;left:0;width:100%;z-index:10;border:1px solid #d0d0d0;background:var(--tblr-bg-surface);margin:.25rem 0 0;border-top:0 none;box-sizing:border-box;box-shadow:0 1px 3px #0000001a;border-radius:0 0 var(--tblr-border-radius) var(--tblr-border-radius)}.ts-dropdown [data-selectable]{cursor:pointer;overflow:hidden}.ts-dropdown [data-selectable] .highlight{background:#ffed2866;border-radius:1px}.ts-dropdown .option,.ts-dropdown .optgroup-header,.ts-dropdown .no-results,.ts-dropdown .create{padding:3px 1rem}.ts-dropdown .option,.ts-dropdown [data-disabled],.ts-dropdown [data-disabled] [data-selectable].option{cursor:inherit;opacity:.5}.ts-dropdown [data-selectable].option{opacity:1;cursor:pointer}.ts-dropdown .optgroup:first-child .optgroup-header{border-top:0 none}.ts-dropdown .optgroup-header{color:#4b5563;background:var(--tblr-bg-surface);cursor:default}.ts-dropdown .active{background-color:rgba(var(--tblr-secondary-rgb),.08);color:inherit}.ts-dropdown .active.create{color:inherit}.ts-dropdown .create{color:#1f293780}.ts-dropdown .spinner{display:inline-block;width:30px;height:30px;margin:3px 1rem}.ts-dropdown .spinner:after{content:" ";display:block;width:24px;height:24px;margin:3px;border-radius:50%;border:5px solid #d0d0d0;border-color:#d0d0d0 transparent #d0d0d0 transparent;animation:lds-dual-ring 1.2s linear infinite}@keyframes lds-dual-ring{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ts-dropdown-content{overflow:hidden auto;max-height:200px;scroll-behavior:smooth}.ts-wrapper.plugin-drag_drop .ts-dragging{color:transparent!important}.ts-wrapper.plugin-drag_drop .ts-dragging>*{visibility:hidden!important}.plugin-checkbox_options:not(.rtl) .option input{margin-right:.5rem}.plugin-checkbox_options.rtl .option input{margin-left:.5rem}.plugin-clear_button{--ts-pr-clear-button: 1em}.plugin-clear_button .clear-button{opacity:0;position:absolute;top:50%;transform:translateY(-50%);right:calc(1rem - 5px);margin-right:0!important;background:transparent!important;transition:opacity .5s;cursor:pointer}.plugin-clear_button.form-select .clear-button,.plugin-clear_button.single .clear-button{right:max(var(--ts-pr-caret),1rem)}.plugin-clear_button.focus.has-items .clear-button,.plugin-clear_button:not(.disabled):hover.has-items .clear-button{opacity:1}.ts-wrapper .dropdown-header{position:relative;padding:6px 1rem;border-bottom:1px solid #d0d0d0;background:color-mix(var(--tblr-bg-surface),#d0d0d0,85%);border-radius:var(--tblr-border-radius) var(--tblr-border-radius) 0 0}.ts-wrapper .dropdown-header-close{position:absolute;right:1rem;top:50%;color:#1f2937;opacity:.4;margin-top:-12px;line-height:20px;font-size:20px!important}.ts-wrapper .dropdown-header-close:hover{color:#000}.plugin-dropdown_input.focus.dropdown-active .ts-control{box-shadow:none;border:1px solid var(--tblr-border-color);box-shadow:var(--tblr-shadow-input)}.plugin-dropdown_input .dropdown-input{border:1px solid #d0d0d0;border-width:0 0 1px;display:block;padding:.5625rem 1rem;box-shadow:none;width:100%;background:transparent}.plugin-dropdown_input.focus .ts-dropdown .dropdown-input{border-color:#80c2be;outline:0;box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.plugin-dropdown_input .items-placeholder{border:0 none!important;box-shadow:none!important;width:100%}.plugin-dropdown_input.has-items .items-placeholder,.plugin-dropdown_input.dropdown-active .items-placeholder{display:none!important}.ts-wrapper.plugin-input_autogrow.has-items .ts-control>input{min-width:0}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input{flex:none;min-width:4px}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::placeholder{color:transparent}.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content{display:flex}.ts-dropdown.plugin-optgroup_columns .optgroup{border-right:1px solid #f2f2f2;border-top:0 none;flex-grow:1;flex-basis:0;min-width:0}.ts-dropdown.plugin-optgroup_columns .optgroup:last-child{border-right:0 none}.ts-dropdown.plugin-optgroup_columns .optgroup:before{display:none}.ts-dropdown.plugin-optgroup_columns .optgroup-header{border-top:0 none}.ts-wrapper.plugin-remove_button .item{display:inline-flex;align-items:center}.ts-wrapper.plugin-remove_button .item .remove{color:inherit;text-decoration:none;vertical-align:middle;display:inline-block;padding:0 5px;border-radius:0 2px 2px 0;box-sizing:border-box}.ts-wrapper.plugin-remove_button .item .remove:hover{background:#0000000d}.ts-wrapper.plugin-remove_button.disabled .item .remove:hover{background:none}.ts-wrapper.plugin-remove_button .remove-single{position:absolute;right:0;top:0;font-size:23px}.ts-wrapper.plugin-remove_button:not(.rtl) .item{padding-right:0!important}.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove{border-left:1px solid #e5e7eb;margin-left:5px}.ts-wrapper.plugin-remove_button:not(.rtl) .item.active .remove{border-left-color:#0000}.ts-wrapper.plugin-remove_button:not(.rtl).disabled .item .remove{border-left-color:#fff}.ts-wrapper.plugin-remove_button.rtl .item{padding-left:0!important}.ts-wrapper.plugin-remove_button.rtl .item .remove{border-right:1px solid #e5e7eb;margin-right:5px}.ts-wrapper.plugin-remove_button.rtl .item.active .remove{border-right-color:#0000}.ts-wrapper.plugin-remove_button.rtl.disabled .item .remove{border-right-color:#fff}:root{--ts-pr-clear-button: 0px;--ts-pr-caret: 0px;--ts-pr-min: .75rem}.ts-wrapper.single .ts-control,.ts-wrapper.single .ts-control input{cursor:pointer}.ts-control:not(.rtl){padding-right:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret))!important}.ts-control.rtl{padding-left:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret))!important}.ts-wrapper{position:relative}.ts-dropdown,.ts-control,.ts-control input{color:#1f2937;font-family:inherit;font-size:inherit;line-height:1.25rem}.ts-control,.ts-wrapper.single.input-active .ts-control{background:var(--tblr-bg-forms);cursor:text}.ts-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;white-space:nowrap!important}.ts-dropdown,.ts-dropdown.form-control,.ts-dropdown.form-select{height:auto;padding:0;z-index:1000;background:var(--tblr-bg-surface);border:1px solid var(--tblr-border-color-translucent);border-radius:6px;box-shadow:0 6px 12px #0000002d}.ts-dropdown .optgroup-header{font-size:.765625rem;line-height:1.4285714286}.ts-dropdown .optgroup:first-child:before{display:none}.ts-dropdown .optgroup:before{content:" ";display:block;height:0;margin:var(--tblr-spacer-2) 0;overflow:hidden;border-top:1px solid var(--tblr-border-color-translucent);margin-left:-1rem;margin-right:-1rem}.ts-dropdown .create{padding-left:1rem}.ts-dropdown-content{padding:5px 0}.ts-control{box-shadow:var(--tblr-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.ts-control{transition:none}}.ts-control{display:flex;align-items:center}.focus .ts-control{border-color:#80c2be;outline:0;box-shadow:var(--tblr-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.ts-control .item{display:flex;align-items:center}.ts-control input::placeholder{color:var(--bs-secondary-color, #a7aeb8);opacity:1}.ts-wrapper.is-invalid,select.tomselected.is-invalid+div.ts-wrapper,.was-validated .invalid,.was-validated :invalid+.ts-wrapper{border-color:var(--tblr-form-invalid-color)}.ts-wrapper.is-invalid:not(.single),select.tomselected.is-invalid+div.ts-wrapper:not(.single),.was-validated .invalid:not(.single),.was-validated :invalid+.ts-wrapper:not(.single){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-position:right 1.53125rem center;background-size:1.8125rem 1.8125rem;background-repeat:no-repeat}.ts-wrapper.is-invalid.single,select.tomselected.is-invalid+div.ts-wrapper.single,.was-validated .invalid.single,.was-validated :invalid+.ts-wrapper.single{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%239ca3af' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-position:right 1rem center,center right 3rem;background-size:16px 12px,1.8125rem 1.8125rem;background-repeat:no-repeat}.ts-wrapper.is-invalid.focus .ts-control,select.tomselected.is-invalid+div.ts-wrapper.focus .ts-control,.was-validated .invalid.focus .ts-control,.was-validated :invalid+.ts-wrapper.focus .ts-control{border-color:var(--tblr-form-invalid-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-form-invalid-color),.25)}.ts-wrapper.is-valid,.was-validated .valid,.was-validated :valid+.ts-wrapper{border-color:var(--tblr-form-valid-color)}.ts-wrapper.is-valid:not(.single),.was-validated .valid:not(.single),.was-validated :valid+.ts-wrapper:not(.single){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-position:right 1.53125rem center;background-size:1.8125rem 1.8125rem;background-repeat:no-repeat}.ts-wrapper.is-valid.single,.was-validated .valid.single,.was-validated :valid+.ts-wrapper.single{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%239ca3af' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-position:right 1rem center,center right 3rem;background-size:16px 12px,1.8125rem 1.8125rem;background-repeat:no-repeat}.ts-wrapper.is-valid.focus .ts-control,.was-validated .valid.focus .ts-control,.was-validated :valid+.ts-wrapper.focus .ts-control{border-color:var(--tblr-form-valid-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-form-valid-color),.25)}.ts-wrapper{min-height:calc(1.25rem + 1.125rem + calc(var(--tblr-border-width) * 2));display:flex}.input-group-sm>.ts-wrapper,.ts-wrapper.form-select-sm,.ts-wrapper.form-control-sm{min-height:calc(1.25rem + .625rem + calc(var(--tblr-border-width) * 2))}.input-group-sm>.ts-wrapper .ts-control,.ts-wrapper.form-select-sm .ts-control,.ts-wrapper.form-control-sm .ts-control{border-radius:var(--tblr-border-radius-sm);font-size:.75rem}.input-group-sm>.ts-wrapper.has-items .ts-control,.ts-wrapper.form-select-sm.has-items .ts-control,.ts-wrapper.form-control-sm.has-items .ts-control{font-size:.75rem}.input-group-sm>.ts-wrapper.multi.has-items .ts-control,.ts-wrapper.form-select-sm.multi.has-items .ts-control,.ts-wrapper.form-control-sm.multi.has-items .ts-control{padding-top:calc((calc(1.25rem + .625rem + calc(var(--tblr-border-width) * 2)) - 1.25rem * .75rem - calc((var(--tblr-border-width) + 1px) * 2)) / 2)!important}.ts-wrapper.multi.has-items .ts-control{padding-left:calc(1rem - 5px);--ts-pr-min: calc(1rem - 5px) }.ts-wrapper.multi .ts-control>div{border-radius:calc(var(--tblr-border-radius) - 1px)}.input-group-lg>.ts-wrapper,.ts-wrapper.form-control-lg,.ts-wrapper.form-select-lg{min-height:calc(1.25rem + 1.375rem + calc(var(--tblr-border-width) * 2))}.input-group-lg>.ts-wrapper .ts-control,.ts-wrapper.form-control-lg .ts-control,.ts-wrapper.form-select-lg .ts-control{border-radius:var(--tblr-border-radius-lg);font-size:1rem}.ts-wrapper:not(.form-control,.form-select){padding:0;border:none;height:auto;box-shadow:none;background:none}.ts-wrapper:not(.form-control,.form-select).single .ts-control{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%239ca3af' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 1rem center;background-size:16px 12px}.ts-wrapper.form-select,.ts-wrapper.single{--ts-pr-caret: 3rem}.ts-wrapper.form-control,.ts-wrapper.form-select{padding:0!important;height:auto;box-shadow:none;display:flex}.ts-wrapper.form-control .ts-control,.ts-wrapper.form-control.single.input-active .ts-control,.ts-wrapper.form-select .ts-control,.ts-wrapper.form-select.single.input-active .ts-control{border:none!important}.ts-wrapper.form-control:not(.disabled) .ts-control,.ts-wrapper.form-control:not(.disabled).single.input-active .ts-control,.ts-wrapper.form-select:not(.disabled) .ts-control,.ts-wrapper.form-select:not(.disabled).single.input-active .ts-control{background:transparent!important}.input-group>.ts-wrapper{flex-grow:1;width:1%}.input-group>.ts-wrapper:not(:nth-child(2))>.ts-control{border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.ts-wrapper:not(:last-child)>.ts-control{border-top-right-radius:0;border-bottom-right-radius:0}.form-select .ts-dropdown,.form-select .ts-control,.form-select .ts-control input{color:var(--tblr-body-color)}:root{--ts-pr-clear-button: 0rem;--ts-pr-caret: 0rem}.ts-input{color:inherit}.focus .ts-control{border-radius:var(--tblr-border-radius)}.ts-control{color:inherit}.ts-control .dropdown-menu{width:100%;height:auto}.ts-wrapper .form-control,.ts-wrapper .form-select,.ts-wrapper.form-control,.ts-wrapper.form-select{box-shadow:var(--tblr-shadow-input)}.ts-wrapper.is-invalid .ts-control,select.tomselected.is-invalid+div.ts-wrapper .ts-control,.ts-wrapper.is-valid .ts-control{--ts-pr-clear-button: 1.5rem}.ts-dropdown{background:var(--tblr-bg-surface);color:var(--tblr-body-color);box-shadow:var(--tblr-shadow-dropdown);z-index:1000}.ts-dropdown .option{padding:.5rem .75rem}.ts-control,.ts-control input{color:var(--tblr-body-color)}.ts-control input::placeholder{color:var(--tblr-tertiary)}.ts-wrapper.multi .ts-control>div,.ts-wrapper.multi.disabled .ts-control>div{background:var(--tblr-bg-surface-secondary);border:1px solid var(--tblr-border-color);color:var(--tblr-body-color)}.ts-wrapper.disabled .ts-control{opacity:1}.ts-wrapper.disabled .ts-control>div.item{color:var(--tblr-gray-500)}html{scroll-behavior:auto!important}mark,.mark{padding-left:0;padding-right:0}.table-responsive .dropdown,.table-responsive .btn-group,.table-responsive .btn-group-vertical{position:static}.progress{min-width:80px}hr.dropdown-divider,.dropdown-divider.hr{margin-bottom:.25rem;margin-top:.25rem}.dropdown-item{font-weight:400}*{font-feature-settings:"liga" 0;font-variant-ligatures:none}@media(min-width:992px){:root,:host{margin-left:0;scrollbar-gutter:stable}}pre{background-color:transparent;color:inherit}.alert{background:var(--tblr-bg-surface)}.badge{user-select:text}.btn{display:inline-block}.btn:focus{border:1px solid var(--tblr-primary-fg);outline:2px solid var(--tblr-primary)!important}.btn-sm,.btn-group-sm>.btn{border-radius:6px}.dropdown-item{display:inline-block}.footer .text-primary{color:#001423!important}.nav-tabs .nav-link{display:inline-block}.page,.page-tabs .nav-tabs .nav-link.active{background-color:var(--tblr-bg-surface-tertiary)!important}.navbar{--tblr-navbar-active-bg: rgba(0, 0, 0, .06)}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{--tblr-alert-color: darken(var(--tblr-warning),10%);--tblr-link-color: #00F2D4;--tblr-link-color-rgb: 0,242,212;--tblr-link-hover-color-rgb: 0,242,212;--tblr-secondary: #9ca3af;--tblr-primary: #00F2D4;--tblr-primary-fg: #001423;--tblr-primary-rgb: 0,242,212;--tblr-btn-active-color: #001423}html[data-bs-theme=dark] ::selection,body[data-bs-theme=dark] html[data-bs-theme=light] ::selection{background-color:rgba(var(--tblr-primary-rgb),.48)}html[data-bs-theme=dark] .btn-primary,body[data-bs-theme=dark] html[data-bs-theme=light] .btn-primary,html[data-bs-theme=dark] .bg-primary .card-title,body[data-bs-theme=dark] html[data-bs-theme=light] .bg-primary .card-title,html[data-bs-theme=dark] .bg-primary a,body[data-bs-theme=dark] html[data-bs-theme=light] .bg-primary a,html[data-bs-theme=dark] .bg-primary i,body[data-bs-theme=dark] html[data-bs-theme=light] .bg-primary i,html[data-bs-theme=dark] .text-bg-primary,body[data-bs-theme=dark] html[data-bs-theme=light] .text-bg-primary{color:#001423!important}html[data-bs-theme=dark] .card,body[data-bs-theme=dark] html[data-bs-theme=light] .card{background:#001423!important}html[data-bs-theme=dark],body[data-bs-theme=dark] html[data-bs-theme=light],html[data-bs-theme=dark] .navbar,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar,html[data-bs-theme=dark] .page-header,body[data-bs-theme=dark] html[data-bs-theme=light] .page-header{background-color:#001423}html[data-bs-theme=dark] .page,body[data-bs-theme=dark] html[data-bs-theme=light] .page,html[data-bs-theme=dark] .page-tabs .nav-tabs .nav-link.active,body[data-bs-theme=dark] html[data-bs-theme=light] .page-tabs .nav-tabs .nav-link.active{background-color:#081b2a!important}html[data-bs-theme=dark] .page-link.active,body[data-bs-theme=dark] html[data-bs-theme=light] .page-link.active,html[data-bs-theme=dark] .active>.page-link,body[data-bs-theme=dark] html[data-bs-theme=light] .active>.page-link{color:#001423}html[data-bs-theme=dark] .text-bg-primary,body[data-bs-theme=dark] html[data-bs-theme=light] .text-bg-primary{color:#001423!important}html[data-bs-theme=dark] .text-muted,body[data-bs-theme=dark] html[data-bs-theme=light] .text-muted{color:var(--tblr-secondary-color)!important}html[data-bs-theme=dark] .text-secondary,body[data-bs-theme=dark] html[data-bs-theme=light] .text-secondary{color:#9ca3af!important}html[data-bs-theme=dark] .footer .text-primary,body[data-bs-theme=dark] html[data-bs-theme=light] .footer .text-primary{color:#fff!important}html[data-bs-theme=dark] .toast,body[data-bs-theme=dark] html[data-bs-theme=light] .toast{color:var(--tblr-body-color)}html[data-bs-theme=dark] .table-primary,body[data-bs-theme=dark] html[data-bs-theme=light] .table-primary{--tblr-table-bg: rgba(var(--tblr-secondary-rgb), .48);--tblr-table-hover-bg: inherit;--tblr-table-hover-color: inherit}pre code{padding:unset}.dropdown-toggle:after{font-family:Material Design Icons;content:"\f0140";padding-right:9px;border-bottom:none;border-left:none;transform:none;vertical-align:.05em;height:auto}:root:not(.dummy)[data-bs-theme=light] .hide-theme-light,:root:not(.dummy)[data-bs-theme=dark] .hide-theme-dark,body[data-bs-theme=dark] [data-bs-theme=light]:root:not(.dummy) .hide-theme-dark{display:none!important}:root:not(.dummy)[data-bs-theme=dark] .hide-theme-light,body[data-bs-theme=dark] [data-bs-theme=light]:root:not(.dummy) .hide-theme-light,:root:not(.dummy)[data-bs-theme=light] .hide-theme-dark{display:inline-flex!important}.ts-wrapper.multi .ts-control{padding:7px 7px 3px}.ts-wrapper.multi .ts-control div{margin:0 4px 4px 0}.badge a{color:inherit;text-decoration:none}.page-body .card{margin-bottom:1rem}.page-body .card .card-header,.page-body .card .card-body,.page-body .card .card-footer{padding:.75rem}.page-body .card .card-header{background:var(--tblr-bg-surface-tertiary)}.page-body .card h2.card-header,.page-body .card .card-header.h2{font-size:var(--tblr-font-size-h5);line-height:var(--tblr-line-height-h5);margin-bottom:0}.page-body .card .list-group-item{padding:.5rem .75rem}.page-body .card .table,.page-body .card .markdown>table{margin-bottom:0}form.object-edit{margin:auto;max-width:800px}.col-form-label.required{font-weight:700}.col-form-label.required:after{position:absolute;display:inline-block;margin-left:0;font-family:Material Design Icons;font-size:8px;content:"\f06c4"}.has-errors input,.has-errors select,.has-errors textarea{border:1px solid #d63939}select[multiple] optgroup{top:0;background-color:var(--bs-body-bg);font-style:normal;font-weight:700}select[multiple] option{padding-left:.5rem}.modifier-select{min-width:10rem;max-width:15rem;width:auto;white-space:nowrap}.page{background-color:var(--tblr-bg-surface-secondary)}.page-header{background-color:var(--tblr-bg-surface);min-height:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .nav-link-icon,.navbar-vertical.navbar-expand-lg .navbar-collapse .nav-link-title{color:#001423}.navbar-vertical.navbar-expand-lg .navbar-collapse .text-secondary{color:#00857d!important}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item a{color:#001423}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item .btn-group{visibility:hidden}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:hover,.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active{background-color:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:hover a,.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active a{text-decoration:none}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:hover .btn-group,.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active .btn-group{visibility:visible}.navbar-vertical.navbar-expand-lg .navbar-nav{z-index:1}@media(max-width:991.98px){.navbar-vertical.navbar-expand-lg .navbar-brand{padding:.2rem 0}}.navbar-vertical.navbar-expand-lg .navbar-brand a:hover{text-decoration:none}.navbar-vertical.navbar-expand-lg img.motif{bottom:0;display:none;left:0;mask-image:linear-gradient(180deg,#0000,#0000004d);opacity:.5;position:fixed;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none;width:18rem}@media(min-width:992px){.navbar-vertical.navbar-expand-lg img.motif{display:block}}html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg{background:linear-gradient(180deg,#00857d00,#00857d1a),#fff}html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg{background:linear-gradient(180deg,#00f2d400,#00f2d41a),#001423}html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .nav-item.dropdown.active:after,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .nav-item.dropdown.active:after{border-color:#00f2d4!important}html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .nav-link-title,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .nav-link-title,html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .nav-link-icon,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .nav-link-icon,html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .dropdown-item a,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .dropdown-item a{color:#fff!important}html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .dropdown-item.active,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .dropdown-item.active,html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .dropdown-item:hover,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .dropdown-item:hover{background-color:#ffffff0f!important}html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg .text-secondary,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg .text-secondary{color:#00f2d4!important}html[data-bs-theme=dark] .navbar-vertical.navbar-expand-lg img.motif,body[data-bs-theme=dark] html[data-bs-theme=light] .navbar-vertical.navbar-expand-lg img.motif{opacity:.25}.progress{height:20px}.progress .progress-label{display:flex;flex-direction:column;justify-content:center;padding-left:.25rem}.table thead th,.markdown>table thead th{font-size:.625rem}table.object-list tbody>tr:last-child>td{border-bottom-width:0}table.object-list th.asc>a:after{content:"\f0140";font-family:Material Design Icons}table.object-list th.desc>a:after{content:"\f0143";font-family:Material Design Icons}table.attr-table th{font-weight:400;width:min-content}table.attr-table th,table.attr-table td{border-bottom-style:dashed}table.attr-table tr:last-child{border-bottom-style:hidden}table.attr-table td{overflow-wrap:anywhere}td pre{margin-bottom:0}table th.orderable a{color:var(--tblr-body-color)}html[data-bs-theme=dark] .table thead th,body[data-bs-theme=dark] html[data-bs-theme=light] .table thead th,body[data-bs-theme=dark] html[data-bs-theme=light] .markdown>table thead th,html[data-bs-theme=dark] .markdown>table thead th{background:#001423!important}.page-tabs{border-bottom:1px solid var(--tblr-border-color-translucent)}.page-tabs .nav-tabs{position:relative;border:none}.page-tabs .nav-tabs .nav-link.active,.page-tabs .nav-tabs .nav-link:active,.page-tabs .nav-tabs .nav-link:hover{border-color:var(--tblr-border-color-translucent);border-bottom-color:transparent}.page-tabs .nav-tabs .nav-link.active{color:inherit;background:var(--tblr-bg-surface-secondary);border-bottom-color:transparent}pre.change-data{border-radius:0;padding:0;margin-inline:-.75rem}pre.change-data>span{display:block;padding-inline:.5rem;max-width:100%;min-width:fit-content;border-left:.25rem solid transparent}pre.change-data>span.added{background-color:var(--tblr-green-200);border-left-color:var(--tblr-green-darken)}pre.change-data>span.removed{background-color:var(--tblr-red-200);border-left-color:var(--tblr-red-darken)}pre.change-diff{border:var(--tblr-border-width) solid transparent}pre.change-diff.change-added{background-color:var(--tblr-green-lt);border-color:var(--tblr-green)}pre.change-diff.change-removed{background-color:var(--tblr-red-lt);border-color:var(--tblr-red)}pre.block{padding:1rem;border:var(--tblr-border-width) solid #e5e7eb;border-radius:6px}.grid-stack .card-header.bg-default{background:var(--tblr-bg-surface-secondary)!important}.grid-stack .card-header a{color:inherit!important}tr[data-cable-status=connected]{background-color:#2fb34426}tr[data-cable-status=planned]{background-color:#066fd126}tr[data-cable-status=decommissioning]{background-color:#f59f0026}tr[data-mark-connected=true]{background-color:#2fb34426}tr[data-virtual=true]{background-color:#00857d26}tr[data-enabled=disabled]{background-color:#9ca3af26}tr[data-cable-status=connected] button.mark-installed{display:none}tr:not([data-cable-status=connected]) button.mark-planned{display:none}.rendered-markdown table{width:100%}.rendered-markdown table th{border-bottom:2px solid #dddddd;padding:8px}.rendered-markdown table td{border-top:1px solid #dddddd;padding:8px}.rendered-markdown table th[align=left]{text-align:left}.rendered-markdown table th[align=center]{text-align:center}.rendered-markdown table th[align=right]{text-align:right}.rendered-markdown p:last-child{margin-bottom:0}td>.rendered-markdown{max-height:200px;overflow-y:scroll}.markdown-widget .preview{border:1px solid #e5e7eb;border-radius:6px;min-height:200px}span.color-label{display:inline-block;width:5rem;height:1rem;padding:.25em .5em;border:1px solid #303030;border-radius:6px}.record-depth{display:inline;user-select:none;opacity:33%}.record-depth span:only-of-type,.record-depth span:last-of-type{margin-right:.25rem}.hide-last-child :last-child{visibility:hidden;opacity:0}.netbox-edition{letter-spacing:.15rem}.btn-float-group,.btn-float-group-right,.btn-float-group-left{position:sticky;bottom:10px;z-index:4}.btn-float-group-left{float:left}.btn-float-group-right{float:right}.btn-float{--tblr-btn-bg: var(--tblr-bg-surface-tertiary) !important}.logo{height:80px}.sso-icon{height:24px}img.plugin-icon{max-width:1.4285em;height:auto}.thumbnail{max-width:200px}.thumbnail img{border:1px solid #606060}.image-preview-popover{--bs-popover-max-width: clamp(240px, 25vw, 640px)}.image-preview-popover .popover-header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.image-preview-popover .popover-body{display:flex;justify-content:center;align-items:center}.image-preview-popover img{display:block;max-width:100%;max-height:clamp(160px,33vh,640px);height:auto}html[data-bs-theme=dark] img.plugin-icon,body[data-bs-theme=dark] html[data-bs-theme=light] img.plugin-icon{filter:grayscale(100%) invert(100%) brightness(80%)}tr[data-read=True] td{background-color:var(--tblr-bg-surface-secondary);color:#6b7280}.rack-loading-container{min-height:200px;margin-left:30px} diff --git a/netbox/project-static/styles/custom/_code.scss b/netbox/project-static/styles/custom/_code.scss index 79bcb14c8..5e6389252 100644 --- a/netbox/project-static/styles/custom/_code.scss +++ b/netbox/project-static/styles/custom/_code.scss @@ -1,46 +1,50 @@ +@use 'sass:map'; + // Serialized data from change records pre.change-data { border-radius: 0; padding: 0; + // Remove card-body padding + margin-inline: -0.75rem; // Display each line individually for highlighting > span { display: block; - padding-right: $spacer; - padding-left: $spacer; - width: 100%; + padding-inline: map.get($spacers, 2); + max-width: 100%; min-width: fit-content; + border-left: map.get($spacers, 1) solid transparent; &.added { - color: var(--tblr-dark); - background-color: $green-300; + background-color: var(--tblr-green-200); + border-left-color: var(--tblr-green-darken); } &.removed { - color: var(--tblr-dark); - background-color: $red-300; + background-color: var(--tblr-red-200); + border-left-color: var(--tblr-red-darken); } } } // Change data diff w/added & removed data pre.change-diff { - border-color: transparent; + border: var(--tblr-border-width) solid transparent; &.change-added { - color: var(--tblr-dark); - background-color: $green-300; + background-color: var(--tblr-green-lt); + border-color: var(--tblr-green); } &.change-removed { - color: var(--tblr-dark); - background-color: $red-300; + background-color: var(--tblr-red-lt); + border-color: var(--tblr-red); } } //
     elements displayed with a border
     pre.block {
       padding: $spacer;
    -  border: 1px solid $border-color;
    +  border: var(--tblr-border-width) solid $border-color;
       border-radius: $border-radius;
     }
    diff --git a/netbox/templates/core/panels/objectchange_difference.html b/netbox/templates/core/panels/objectchange_difference.html
    index 5c954ee56..14bdb5dcc 100644
    --- a/netbox/templates/core/panels/objectchange_difference.html
    +++ b/netbox/templates/core/panels/objectchange_difference.html
    @@ -3,11 +3,11 @@
     

    {% trans "Difference" %} -
    - + From e4e4c1c56d08a1acbf9e9a2aee002f3155366fb1 Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Tue, 31 Mar 2026 14:33:23 +0200 Subject: [PATCH 32/41] feat(dcim): Add 50G, 800G, and 1.6T interface speed options (#21796) Adds support for 50 Gbps, 800 Gbps, and 1.6 Tbps interface speeds to the InterfaceSpeedChoices to cover newer high-speed networking hardware. --- netbox/dcim/choices.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index e92a1e9a7..5aedd3031 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -1518,9 +1518,12 @@ class InterfaceSpeedChoices(ChoiceSet): (10000000, '10 Gbps'), (25000000, '25 Gbps'), (40000000, '40 Gbps'), + (50000000, '50 Gbps'), (100000000, '100 Gbps'), (200000000, '200 Gbps'), (400000000, '400 Gbps'), + (800000000, '800 Gbps'), + (1600000000, '1.6 Tbps'), ] From 05059f4a86f20197241fbb150962a41e75bf56d1 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 31 Mar 2026 11:33:58 -0400 Subject: [PATCH 33/41] Release v4.5.6 --- .../ISSUE_TEMPLATE/01-feature_request.yaml | 2 +- .github/ISSUE_TEMPLATE/02-bug_report.yaml | 2 +- .github/ISSUE_TEMPLATE/03-performance.yaml | 2 +- contrib/generated_schema.json | 8 + contrib/openapi.json | 162 +- docs/release-notes/version-4.5.md | 19 + netbox/project-static/package.json | 4 +- netbox/project-static/yarn.lock | 28 +- netbox/release.yaml | 4 +- netbox/translations/cs/LC_MESSAGES/django.mo | Bin 261952 -> 262422 bytes netbox/translations/cs/LC_MESSAGES/django.po | 2731 +++++++-------- netbox/translations/da/LC_MESSAGES/django.mo | Bin 253815 -> 254257 bytes netbox/translations/da/LC_MESSAGES/django.po | 2733 +++++++-------- netbox/translations/de/LC_MESSAGES/django.mo | Bin 267226 -> 267669 bytes netbox/translations/de/LC_MESSAGES/django.po | 2739 +++++++-------- netbox/translations/es/LC_MESSAGES/django.mo | Bin 269300 -> 269733 bytes netbox/translations/es/LC_MESSAGES/django.po | 2734 +++++++-------- netbox/translations/fr/LC_MESSAGES/django.mo | Bin 271377 -> 271872 bytes netbox/translations/fr/LC_MESSAGES/django.po | 2735 +++++++-------- netbox/translations/it/LC_MESSAGES/django.mo | Bin 266862 -> 267286 bytes netbox/translations/it/LC_MESSAGES/django.po | 2735 +++++++-------- netbox/translations/ja/LC_MESSAGES/django.mo | Bin 288358 -> 288039 bytes netbox/translations/ja/LC_MESSAGES/django.po | 2721 +++++++-------- netbox/translations/lv/LC_MESSAGES/django.mo | Bin 262288 -> 261752 bytes netbox/translations/lv/LC_MESSAGES/django.po | 2925 ++++++++--------- netbox/translations/nl/LC_MESSAGES/django.mo | Bin 262448 -> 262943 bytes netbox/translations/nl/LC_MESSAGES/django.po | 2735 +++++++-------- netbox/translations/pl/LC_MESSAGES/django.mo | Bin 265011 -> 265543 bytes netbox/translations/pl/LC_MESSAGES/django.po | 2733 +++++++-------- netbox/translations/pt/LC_MESSAGES/django.mo | Bin 264821 -> 265260 bytes netbox/translations/pt/LC_MESSAGES/django.po | 2733 +++++++-------- netbox/translations/ru/LC_MESSAGES/django.mo | Bin 340657 -> 341188 bytes netbox/translations/ru/LC_MESSAGES/django.po | 2744 +++++++--------- netbox/translations/tr/LC_MESSAGES/django.mo | Bin 258174 -> 258627 bytes netbox/translations/tr/LC_MESSAGES/django.po | 2732 +++++++-------- netbox/translations/uk/LC_MESSAGES/django.mo | Bin 339594 -> 340048 bytes netbox/translations/uk/LC_MESSAGES/django.po | 2731 +++++++-------- netbox/translations/zh/LC_MESSAGES/django.mo | Bin 239249 -> 239720 bytes netbox/translations/zh/LC_MESSAGES/django.po | 2729 +++++++-------- pyproject.toml | 2 +- requirements.txt | 12 +- 41 files changed, 18244 insertions(+), 23191 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/01-feature_request.yaml b/.github/ISSUE_TEMPLATE/01-feature_request.yaml index 4f452bc65..f66b88a47 100644 --- a/.github/ISSUE_TEMPLATE/01-feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/01-feature_request.yaml @@ -15,7 +15,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v4.5.5 + placeholder: v4.5.6 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/02-bug_report.yaml b/.github/ISSUE_TEMPLATE/02-bug_report.yaml index bbc2c2299..445893e0c 100644 --- a/.github/ISSUE_TEMPLATE/02-bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/02-bug_report.yaml @@ -27,7 +27,7 @@ body: attributes: label: NetBox Version description: What version of NetBox are you currently running? - placeholder: v4.5.5 + placeholder: v4.5.6 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/03-performance.yaml b/.github/ISSUE_TEMPLATE/03-performance.yaml index 07d9168bf..fcea8cb08 100644 --- a/.github/ISSUE_TEMPLATE/03-performance.yaml +++ b/.github/ISSUE_TEMPLATE/03-performance.yaml @@ -8,7 +8,7 @@ body: attributes: label: NetBox Version description: What version of NetBox are you currently running? - placeholder: v4.5.5 + placeholder: v4.5.6 validations: required: true - type: dropdown diff --git a/contrib/generated_schema.json b/contrib/generated_schema.json index 8f28da5f6..fe881280d 100644 --- a/contrib/generated_schema.json +++ b/contrib/generated_schema.json @@ -416,9 +416,13 @@ "800gbase-dr8", "800gbase-sr8", "800gbase-vr8", + "1.6tbase-cr8", + "1.6tbase-dr8", + "1.6tbase-dr8-2", "100base-x-sfp", "1000base-x-gbic", "1000base-x-sfp", + "2.5gbase-x-sfp", "10gbase-x-sfpp", "10gbase-x-xenpak", "10gbase-x-xfp", @@ -448,6 +452,9 @@ "400gbase-x-osfp-rhs", "800gbase-x-osfp", "800gbase-x-qsfpdd", + "1.6tbase-x-osfp1600", + "1.6tbase-x-osfp1600-rhs", + "1.6tbase-x-qsfpdd1600", "1000base-kx", "2.5gbase-kx", "5gbase-kr", @@ -459,6 +466,7 @@ "100gbase-kp4", "100gbase-kr2", "100gbase-kr4", + "1.6tbase-kr8", "ieee802.11a", "ieee802.11g", "ieee802.11n", diff --git a/contrib/openapi.json b/contrib/openapi.json index b6afd417e..e7f4819b6 100644 --- a/contrib/openapi.json +++ b/contrib/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.3", "info": { "title": "NetBox REST API", - "version": "4.5.5", + "version": "4.5.6", "license": { "name": "Apache v2 License" } @@ -53687,7 +53687,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -53707,7 +53707,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -53720,7 +53720,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -53733,7 +53733,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -53746,7 +53746,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -53759,7 +53759,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -53772,7 +53772,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -53785,7 +53785,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -53798,7 +53798,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -53811,7 +53811,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -53824,7 +53824,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -53837,7 +53837,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -58020,7 +58020,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -58040,7 +58040,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -58053,7 +58053,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -58066,7 +58066,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -58079,7 +58079,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -58092,7 +58092,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -58105,7 +58105,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -58118,7 +58118,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -58131,7 +58131,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -58144,7 +58144,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -58157,7 +58157,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -58170,7 +58170,7 @@ "type": "array", "items": { "type": "string", - "x-spec-enum-id": "c9278969614bf382" + "x-spec-enum-id": "b067eb1f050c6ae9" } }, "explode": true, @@ -239631,9 +239631,13 @@ "800gbase-dr8", "800gbase-sr8", "800gbase-vr8", + "1.6tbase-cr8", + "1.6tbase-dr8", + "1.6tbase-dr8-2", "100base-x-sfp", "1000base-x-gbic", "1000base-x-sfp", + "2.5gbase-x-sfp", "10gbase-x-sfpp", "10gbase-x-xenpak", "10gbase-x-xfp", @@ -239663,6 +239667,9 @@ "400gbase-x-osfp-rhs", "800gbase-x-osfp", "800gbase-x-qsfpdd", + "1.6tbase-x-osfp1600", + "1.6tbase-x-osfp1600-rhs", + "1.6tbase-x-qsfpdd1600", "1000base-kx", "2.5gbase-kx", "5gbase-kr", @@ -239674,6 +239681,7 @@ "100gbase-kp4", "100gbase-kr2", "100gbase-kr4", + "1.6tbase-kr8", "ieee802.11a", "ieee802.11g", "ieee802.11n", @@ -239750,8 +239758,8 @@ "other" ], "type": "string", - "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", - "x-spec-enum-id": "c9278969614bf382" + "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `1.6tbase-cr8` - 1.6TBASE-CR8 (1.6TE)\n* `1.6tbase-dr8` - 1.6TBASE-DR8 (1.6TE)\n* `1.6tbase-dr8-2` - 1.6TBASE-DR8-2 (1.6TE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `2.5gbase-x-sfp` - SFP (2.5GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1.6tbase-x-osfp1600` - OSFP1600 (1.6TE)\n* `1.6tbase-x-osfp1600-rhs` - OSFP1600-RHS (1.6TE)\n* `1.6tbase-x-qsfpdd1600` - QSFP-DD1600 (1.6TE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `1.6tbase-kr8` - 1.6TBASE-KR8 (1.6TE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", + "x-spec-enum-id": "b067eb1f050c6ae9" }, "label": { "type": "string", @@ -239847,9 +239855,13 @@ "800GBASE-DR8 (800GE)", "800GBASE-SR8 (800GE)", "800GBASE-VR8 (800GE)", + "1.6TBASE-CR8 (1.6TE)", + "1.6TBASE-DR8 (1.6TE)", + "1.6TBASE-DR8-2 (1.6TE)", "SFP (100ME)", "GBIC (1GE)", "SFP (1GE)", + "SFP (2.5GE)", "SFP+ (10GE)", "XENPAK (10GE)", "XFP (10GE)", @@ -239879,6 +239891,9 @@ "OSFP-RHS (400GE)", "OSFP (800GE)", "QSFP-DD (800GE)", + "OSFP1600 (1.6TE)", + "OSFP1600-RHS (1.6TE)", + "QSFP-DD1600 (1.6TE)", "1000BASE-KX (1GE)", "2.5GBASE-KX (2.5GE)", "5GBASE-KR (5GE)", @@ -239890,6 +239905,7 @@ "100GBASE-KP4 (100GE)", "100GBASE-KR2 (100GE)", "100GBASE-KR4 (100GE)", + "1.6TBASE-KR8 (1.6TE)", "IEEE 802.11a", "IEEE 802.11b/g", "IEEE 802.11n (Wi-Fi 4)", @@ -240935,9 +240951,13 @@ "800gbase-dr8", "800gbase-sr8", "800gbase-vr8", + "1.6tbase-cr8", + "1.6tbase-dr8", + "1.6tbase-dr8-2", "100base-x-sfp", "1000base-x-gbic", "1000base-x-sfp", + "2.5gbase-x-sfp", "10gbase-x-sfpp", "10gbase-x-xenpak", "10gbase-x-xfp", @@ -240967,6 +240987,9 @@ "400gbase-x-osfp-rhs", "800gbase-x-osfp", "800gbase-x-qsfpdd", + "1.6tbase-x-osfp1600", + "1.6tbase-x-osfp1600-rhs", + "1.6tbase-x-qsfpdd1600", "1000base-kx", "2.5gbase-kx", "5gbase-kr", @@ -240978,6 +241001,7 @@ "100gbase-kp4", "100gbase-kr2", "100gbase-kr4", + "1.6tbase-kr8", "ieee802.11a", "ieee802.11g", "ieee802.11n", @@ -241054,8 +241078,8 @@ "other" ], "type": "string", - "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", - "x-spec-enum-id": "c9278969614bf382" + "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `1.6tbase-cr8` - 1.6TBASE-CR8 (1.6TE)\n* `1.6tbase-dr8` - 1.6TBASE-DR8 (1.6TE)\n* `1.6tbase-dr8-2` - 1.6TBASE-DR8-2 (1.6TE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `2.5gbase-x-sfp` - SFP (2.5GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1.6tbase-x-osfp1600` - OSFP1600 (1.6TE)\n* `1.6tbase-x-osfp1600-rhs` - OSFP1600-RHS (1.6TE)\n* `1.6tbase-x-qsfpdd1600` - QSFP-DD1600 (1.6TE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `1.6tbase-kr8` - 1.6TBASE-KR8 (1.6TE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", + "x-spec-enum-id": "b067eb1f050c6ae9" }, "enabled": { "type": "boolean" @@ -241673,9 +241697,13 @@ "800gbase-dr8", "800gbase-sr8", "800gbase-vr8", + "1.6tbase-cr8", + "1.6tbase-dr8", + "1.6tbase-dr8-2", "100base-x-sfp", "1000base-x-gbic", "1000base-x-sfp", + "2.5gbase-x-sfp", "10gbase-x-sfpp", "10gbase-x-xenpak", "10gbase-x-xfp", @@ -241705,6 +241733,9 @@ "400gbase-x-osfp-rhs", "800gbase-x-osfp", "800gbase-x-qsfpdd", + "1.6tbase-x-osfp1600", + "1.6tbase-x-osfp1600-rhs", + "1.6tbase-x-qsfpdd1600", "1000base-kx", "2.5gbase-kx", "5gbase-kr", @@ -241716,6 +241747,7 @@ "100gbase-kp4", "100gbase-kr2", "100gbase-kr4", + "1.6tbase-kr8", "ieee802.11a", "ieee802.11g", "ieee802.11n", @@ -241792,8 +241824,8 @@ "other" ], "type": "string", - "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", - "x-spec-enum-id": "c9278969614bf382" + "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `1.6tbase-cr8` - 1.6TBASE-CR8 (1.6TE)\n* `1.6tbase-dr8` - 1.6TBASE-DR8 (1.6TE)\n* `1.6tbase-dr8-2` - 1.6TBASE-DR8-2 (1.6TE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `2.5gbase-x-sfp` - SFP (2.5GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1.6tbase-x-osfp1600` - OSFP1600 (1.6TE)\n* `1.6tbase-x-osfp1600-rhs` - OSFP1600-RHS (1.6TE)\n* `1.6tbase-x-qsfpdd1600` - QSFP-DD1600 (1.6TE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `1.6tbase-kr8` - 1.6TBASE-KR8 (1.6TE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", + "x-spec-enum-id": "b067eb1f050c6ae9" }, "label": { "type": "string", @@ -241889,9 +241921,13 @@ "800GBASE-DR8 (800GE)", "800GBASE-SR8 (800GE)", "800GBASE-VR8 (800GE)", + "1.6TBASE-CR8 (1.6TE)", + "1.6TBASE-DR8 (1.6TE)", + "1.6TBASE-DR8-2 (1.6TE)", "SFP (100ME)", "GBIC (1GE)", "SFP (1GE)", + "SFP (2.5GE)", "SFP+ (10GE)", "XENPAK (10GE)", "XFP (10GE)", @@ -241921,6 +241957,9 @@ "OSFP-RHS (400GE)", "OSFP (800GE)", "QSFP-DD (800GE)", + "OSFP1600 (1.6TE)", + "OSFP1600-RHS (1.6TE)", + "QSFP-DD1600 (1.6TE)", "1000BASE-KX (1GE)", "2.5GBASE-KX (2.5GE)", "5GBASE-KR (5GE)", @@ -241932,6 +241971,7 @@ "100GBASE-KP4 (100GE)", "100GBASE-KR2 (100GE)", "100GBASE-KR4 (100GE)", + "1.6TBASE-KR8 (1.6TE)", "IEEE 802.11a", "IEEE 802.11b/g", "IEEE 802.11n (Wi-Fi 4)", @@ -242276,9 +242316,13 @@ "800gbase-dr8", "800gbase-sr8", "800gbase-vr8", + "1.6tbase-cr8", + "1.6tbase-dr8", + "1.6tbase-dr8-2", "100base-x-sfp", "1000base-x-gbic", "1000base-x-sfp", + "2.5gbase-x-sfp", "10gbase-x-sfpp", "10gbase-x-xenpak", "10gbase-x-xfp", @@ -242308,6 +242352,9 @@ "400gbase-x-osfp-rhs", "800gbase-x-osfp", "800gbase-x-qsfpdd", + "1.6tbase-x-osfp1600", + "1.6tbase-x-osfp1600-rhs", + "1.6tbase-x-qsfpdd1600", "1000base-kx", "2.5gbase-kx", "5gbase-kr", @@ -242319,6 +242366,7 @@ "100gbase-kp4", "100gbase-kr2", "100gbase-kr4", + "1.6tbase-kr8", "ieee802.11a", "ieee802.11g", "ieee802.11n", @@ -242395,8 +242443,8 @@ "other" ], "type": "string", - "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", - "x-spec-enum-id": "c9278969614bf382" + "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `1.6tbase-cr8` - 1.6TBASE-CR8 (1.6TE)\n* `1.6tbase-dr8` - 1.6TBASE-DR8 (1.6TE)\n* `1.6tbase-dr8-2` - 1.6TBASE-DR8-2 (1.6TE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `2.5gbase-x-sfp` - SFP (2.5GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1.6tbase-x-osfp1600` - OSFP1600 (1.6TE)\n* `1.6tbase-x-osfp1600-rhs` - OSFP1600-RHS (1.6TE)\n* `1.6tbase-x-qsfpdd1600` - QSFP-DD1600 (1.6TE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `1.6tbase-kr8` - 1.6TBASE-KR8 (1.6TE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", + "x-spec-enum-id": "b067eb1f050c6ae9" }, "enabled": { "type": "boolean" @@ -257759,9 +257807,13 @@ "800gbase-dr8", "800gbase-sr8", "800gbase-vr8", + "1.6tbase-cr8", + "1.6tbase-dr8", + "1.6tbase-dr8-2", "100base-x-sfp", "1000base-x-gbic", "1000base-x-sfp", + "2.5gbase-x-sfp", "10gbase-x-sfpp", "10gbase-x-xenpak", "10gbase-x-xfp", @@ -257791,6 +257843,9 @@ "400gbase-x-osfp-rhs", "800gbase-x-osfp", "800gbase-x-qsfpdd", + "1.6tbase-x-osfp1600", + "1.6tbase-x-osfp1600-rhs", + "1.6tbase-x-qsfpdd1600", "1000base-kx", "2.5gbase-kx", "5gbase-kr", @@ -257802,6 +257857,7 @@ "100gbase-kp4", "100gbase-kr2", "100gbase-kr4", + "1.6tbase-kr8", "ieee802.11a", "ieee802.11g", "ieee802.11n", @@ -257878,8 +257934,8 @@ "other" ], "type": "string", - "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", - "x-spec-enum-id": "c9278969614bf382" + "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `1.6tbase-cr8` - 1.6TBASE-CR8 (1.6TE)\n* `1.6tbase-dr8` - 1.6TBASE-DR8 (1.6TE)\n* `1.6tbase-dr8-2` - 1.6TBASE-DR8-2 (1.6TE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `2.5gbase-x-sfp` - SFP (2.5GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1.6tbase-x-osfp1600` - OSFP1600 (1.6TE)\n* `1.6tbase-x-osfp1600-rhs` - OSFP1600-RHS (1.6TE)\n* `1.6tbase-x-qsfpdd1600` - QSFP-DD1600 (1.6TE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `1.6tbase-kr8` - 1.6TBASE-KR8 (1.6TE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", + "x-spec-enum-id": "b067eb1f050c6ae9" }, "enabled": { "type": "boolean" @@ -258496,9 +258552,13 @@ "800gbase-dr8", "800gbase-sr8", "800gbase-vr8", + "1.6tbase-cr8", + "1.6tbase-dr8", + "1.6tbase-dr8-2", "100base-x-sfp", "1000base-x-gbic", "1000base-x-sfp", + "2.5gbase-x-sfp", "10gbase-x-sfpp", "10gbase-x-xenpak", "10gbase-x-xfp", @@ -258528,6 +258588,9 @@ "400gbase-x-osfp-rhs", "800gbase-x-osfp", "800gbase-x-qsfpdd", + "1.6tbase-x-osfp1600", + "1.6tbase-x-osfp1600-rhs", + "1.6tbase-x-qsfpdd1600", "1000base-kx", "2.5gbase-kx", "5gbase-kr", @@ -258539,6 +258602,7 @@ "100gbase-kp4", "100gbase-kr2", "100gbase-kr4", + "1.6tbase-kr8", "ieee802.11a", "ieee802.11g", "ieee802.11n", @@ -258615,8 +258679,8 @@ "other" ], "type": "string", - "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", - "x-spec-enum-id": "c9278969614bf382" + "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `1.6tbase-cr8` - 1.6TBASE-CR8 (1.6TE)\n* `1.6tbase-dr8` - 1.6TBASE-DR8 (1.6TE)\n* `1.6tbase-dr8-2` - 1.6TBASE-DR8-2 (1.6TE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `2.5gbase-x-sfp` - SFP (2.5GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1.6tbase-x-osfp1600` - OSFP1600 (1.6TE)\n* `1.6tbase-x-osfp1600-rhs` - OSFP1600-RHS (1.6TE)\n* `1.6tbase-x-qsfpdd1600` - QSFP-DD1600 (1.6TE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `1.6tbase-kr8` - 1.6TBASE-KR8 (1.6TE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", + "x-spec-enum-id": "b067eb1f050c6ae9" }, "enabled": { "type": "boolean" @@ -280296,9 +280360,13 @@ "800gbase-dr8", "800gbase-sr8", "800gbase-vr8", + "1.6tbase-cr8", + "1.6tbase-dr8", + "1.6tbase-dr8-2", "100base-x-sfp", "1000base-x-gbic", "1000base-x-sfp", + "2.5gbase-x-sfp", "10gbase-x-sfpp", "10gbase-x-xenpak", "10gbase-x-xfp", @@ -280328,6 +280396,9 @@ "400gbase-x-osfp-rhs", "800gbase-x-osfp", "800gbase-x-qsfpdd", + "1.6tbase-x-osfp1600", + "1.6tbase-x-osfp1600-rhs", + "1.6tbase-x-qsfpdd1600", "1000base-kx", "2.5gbase-kx", "5gbase-kr", @@ -280339,6 +280410,7 @@ "100gbase-kp4", "100gbase-kr2", "100gbase-kr4", + "1.6tbase-kr8", "ieee802.11a", "ieee802.11g", "ieee802.11n", @@ -280415,8 +280487,8 @@ "other" ], "type": "string", - "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", - "x-spec-enum-id": "c9278969614bf382" + "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `1.6tbase-cr8` - 1.6TBASE-CR8 (1.6TE)\n* `1.6tbase-dr8` - 1.6TBASE-DR8 (1.6TE)\n* `1.6tbase-dr8-2` - 1.6TBASE-DR8-2 (1.6TE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `2.5gbase-x-sfp` - SFP (2.5GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1.6tbase-x-osfp1600` - OSFP1600 (1.6TE)\n* `1.6tbase-x-osfp1600-rhs` - OSFP1600-RHS (1.6TE)\n* `1.6tbase-x-qsfpdd1600` - QSFP-DD1600 (1.6TE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `1.6tbase-kr8` - 1.6TBASE-KR8 (1.6TE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", + "x-spec-enum-id": "b067eb1f050c6ae9" }, "enabled": { "type": "boolean" @@ -281038,9 +281110,13 @@ "800gbase-dr8", "800gbase-sr8", "800gbase-vr8", + "1.6tbase-cr8", + "1.6tbase-dr8", + "1.6tbase-dr8-2", "100base-x-sfp", "1000base-x-gbic", "1000base-x-sfp", + "2.5gbase-x-sfp", "10gbase-x-sfpp", "10gbase-x-xenpak", "10gbase-x-xfp", @@ -281070,6 +281146,9 @@ "400gbase-x-osfp-rhs", "800gbase-x-osfp", "800gbase-x-qsfpdd", + "1.6tbase-x-osfp1600", + "1.6tbase-x-osfp1600-rhs", + "1.6tbase-x-qsfpdd1600", "1000base-kx", "2.5gbase-kx", "5gbase-kr", @@ -281081,6 +281160,7 @@ "100gbase-kp4", "100gbase-kr2", "100gbase-kr4", + "1.6tbase-kr8", "ieee802.11a", "ieee802.11g", "ieee802.11n", @@ -281157,8 +281237,8 @@ "other" ], "type": "string", - "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", - "x-spec-enum-id": "c9278969614bf382" + "description": "* `virtual` - Virtual\n* `bridge` - Bridge\n* `lag` - Link Aggregation Group (LAG)\n* `100base-fx` - 100BASE-FX (10/100ME)\n* `100base-lfx` - 100BASE-LFX (10/100ME)\n* `100base-tx` - 100BASE-TX (10/100ME)\n* `100base-t1` - 100BASE-T1 (10/100ME)\n* `1000base-bx10-d` - 1000BASE-BX10-D (1GE BiDi Down)\n* `1000base-bx10-u` - 1000BASE-BX10-U (1GE BiDi Up)\n* `1000base-cwdm` - 1000BASE-CWDM (1GE)\n* `1000base-cx` - 1000BASE-CX (1GE DAC)\n* `1000base-dwdm` - 1000BASE-DWDM (1GE)\n* `1000base-ex` - 1000BASE-EX (1GE)\n* `1000base-lsx` - 1000BASE-LSX (1GE)\n* `1000base-lx` - 1000BASE-LX (1GE)\n* `1000base-lx10` - 1000BASE-LX10/LH (1GE)\n* `1000base-sx` - 1000BASE-SX (1GE)\n* `1000base-t` - 1000BASE-T (1GE)\n* `1000base-tx` - 1000BASE-TX (1GE)\n* `1000base-zx` - 1000BASE-ZX (1GE)\n* `2.5gbase-t` - 2.5GBASE-T (2.5GE)\n* `5gbase-t` - 5GBASE-T (5GE)\n* `10gbase-br-d` - 10GBASE-BR-D (10GE BiDi Down)\n* `10gbase-br-u` - 10GBASE-BR-U (10GE BiDi Up)\n* `10gbase-cu` - 10GBASE-CU (10GE DAC Passive Twinax)\n* `10gbase-cx4` - 10GBASE-CX4 (10GE DAC)\n* `10gbase-er` - 10GBASE-ER (10GE)\n* `10gbase-lr` - 10GBASE-LR (10GE)\n* `10gbase-lrm` - 10GBASE-LRM (10GE)\n* `10gbase-lx4` - 10GBASE-LX4 (10GE)\n* `10gbase-sr` - 10GBASE-SR (10GE)\n* `10gbase-t` - 10GBASE-T (10GE)\n* `10gbase-zr` - 10GBASE-ZR (10GE)\n* `25gbase-cr` - 25GBASE-CR (25GE DAC)\n* `25gbase-er` - 25GBASE-ER (25GE)\n* `25gbase-lr` - 25GBASE-LR (25GE)\n* `25gbase-sr` - 25GBASE-SR (25GE)\n* `25gbase-t` - 25GBASE-T (25GE)\n* `40gbase-cr4` - 40GBASE-CR4 (40GE DAC)\n* `40gbase-er4` - 40GBASE-ER4 (40GE)\n* `40gbase-fr4` - 40GBASE-FR4 (40GE)\n* `40gbase-lr4` - 40GBASE-LR4 (40GE)\n* `40gbase-sr4` - 40GBASE-SR4 (40GE)\n* `40gbase-sr4-bd` - 40GBASE-SR4 (40GE BiDi)\n* `50gbase-cr` - 50GBASE-CR (50GE DAC)\n* `50gbase-er` - 50GBASE-ER (50GE)\n* `50gbase-fr` - 50GBASE-FR (50GE)\n* `50gbase-lr` - 50GBASE-LR (50GE)\n* `50gbase-sr` - 50GBASE-SR (50GE)\n* `100gbase-cr1` - 100GBASE-CR1 (100GE DAC)\n* `100gbase-cr2` - 100GBASE-CR2 (100GE DAC)\n* `100gbase-cr4` - 100GBASE-CR4 (100GE DAC)\n* `100gbase-cr10` - 100GBASE-CR10 (100GE DAC)\n* `100gbase-cwdm4` - 100GBASE-CWDM4 (100GE)\n* `100gbase-dr` - 100GBASE-DR (100GE)\n* `100gbase-er4` - 100GBASE-ER4 (100GE)\n* `100gbase-fr1` - 100GBASE-FR1 (100GE)\n* `100gbase-lr1` - 100GBASE-LR1 (100GE)\n* `100gbase-lr4` - 100GBASE-LR4 (100GE)\n* `100gbase-sr1` - 100GBASE-SR1 (100GE)\n* `100gbase-sr1.2` - 100GBASE-SR1.2 (100GE BiDi)\n* `100gbase-sr2` - 100GBASE-SR2 (100GE)\n* `100gbase-sr4` - 100GBASE-SR4 (100GE)\n* `100gbase-sr10` - 100GBASE-SR10 (100GE)\n* `100gbase-zr` - 100GBASE-ZR (100GE)\n* `200gbase-cr2` - 200GBASE-CR2 (200GE)\n* `200gbase-cr4` - 200GBASE-CR4 (200GE)\n* `200gbase-dr4` - 200GBASE-DR4 (200GE)\n* `200gbase-er4` - 200GBASE-ER4 (200GE)\n* `200gbase-fr4` - 200GBASE-FR4 (200GE)\n* `200gbase-lr4` - 200GBASE-LR4 (200GE)\n* `200gbase-sr2` - 200GBASE-SR2 (200GE)\n* `200gbase-sr4` - 200GBASE-SR4 (200GE)\n* `200gbase-vr2` - 200GBASE-VR2 (200GE)\n* `400gbase-cr4` - 400GBASE-CR4 (400GE)\n* `400gbase-dr4` - 400GBASE-DR4 (400GE)\n* `400gbase-er8` - 400GBASE-ER8 (400GE)\n* `400gbase-fr4` - 400GBASE-FR4 (400GE)\n* `400gbase-fr8` - 400GBASE-FR8 (400GE)\n* `400gbase-lr4` - 400GBASE-LR4 (400GE)\n* `400gbase-lr8` - 400GBASE-LR8 (400GE)\n* `400gbase-sr4` - 400GBASE-SR4 (400GE)\n* `400gbase-sr4_2` - 400GBASE-SR4.2 (400GE BiDi)\n* `400gbase-sr8` - 400GBASE-SR8 (400GE)\n* `400gbase-sr16` - 400GBASE-SR16 (400GE)\n* `400gbase-vr4` - 400GBASE-VR4 (400GE)\n* `400gbase-zr` - 400GBASE-ZR (400GE)\n* `800gbase-cr8` - 800GBASE-CR8 (800GE)\n* `800gbase-dr8` - 800GBASE-DR8 (800GE)\n* `800gbase-sr8` - 800GBASE-SR8 (800GE)\n* `800gbase-vr8` - 800GBASE-VR8 (800GE)\n* `1.6tbase-cr8` - 1.6TBASE-CR8 (1.6TE)\n* `1.6tbase-dr8` - 1.6TBASE-DR8 (1.6TE)\n* `1.6tbase-dr8-2` - 1.6TBASE-DR8-2 (1.6TE)\n* `100base-x-sfp` - SFP (100ME)\n* `1000base-x-gbic` - GBIC (1GE)\n* `1000base-x-sfp` - SFP (1GE)\n* `2.5gbase-x-sfp` - SFP (2.5GE)\n* `10gbase-x-sfpp` - SFP+ (10GE)\n* `10gbase-x-xenpak` - XENPAK (10GE)\n* `10gbase-x-xfp` - XFP (10GE)\n* `10gbase-x-x2` - X2 (10GE)\n* `25gbase-x-sfp28` - SFP28 (25GE)\n* `40gbase-x-qsfpp` - QSFP+ (40GE)\n* `50gbase-x-sfp28` - QSFP28 (50GE)\n* `50gbase-x-sfp56` - SFP56 (50GE)\n* `100gbase-x-cfp` - CFP (100GE)\n* `100gbase-x-cfp2` - CFP2 (100GE)\n* `100gbase-x-cfp4` - CFP4 (100GE)\n* `100gbase-x-cxp` - CXP (100GE)\n* `100gbase-x-cpak` - Cisco CPAK (100GE)\n* `100gbase-x-dsfp` - DSFP (100GE)\n* `100gbase-x-qsfp28` - QSFP28 (100GE)\n* `100gbase-x-qsfpdd` - QSFP-DD (100GE)\n* `100gbase-x-sfpdd` - SFP-DD (100GE)\n* `200gbase-x-cfp2` - CFP2 (200GE)\n* `200gbase-x-qsfp56` - QSFP56 (200GE)\n* `200gbase-x-qsfpdd` - QSFP-DD (200GE)\n* `400gbase-x-qsfp112` - QSFP112 (400GE)\n* `400gbase-x-qsfpdd` - QSFP-DD (400GE)\n* `400gbase-x-cdfp` - CDFP (400GE)\n* `400gbase-x-cfp2` - CFP2 (400GE)\n* `400gbase-x-cfp8` - CPF8 (400GE)\n* `400gbase-x-osfp` - OSFP (400GE)\n* `400gbase-x-osfp-rhs` - OSFP-RHS (400GE)\n* `800gbase-x-osfp` - OSFP (800GE)\n* `800gbase-x-qsfpdd` - QSFP-DD (800GE)\n* `1.6tbase-x-osfp1600` - OSFP1600 (1.6TE)\n* `1.6tbase-x-osfp1600-rhs` - OSFP1600-RHS (1.6TE)\n* `1.6tbase-x-qsfpdd1600` - QSFP-DD1600 (1.6TE)\n* `1000base-kx` - 1000BASE-KX (1GE)\n* `2.5gbase-kx` - 2.5GBASE-KX (2.5GE)\n* `5gbase-kr` - 5GBASE-KR (5GE)\n* `10gbase-kr` - 10GBASE-KR (10GE)\n* `10gbase-kx4` - 10GBASE-KX4 (10GE)\n* `25gbase-kr` - 25GBASE-KR (25GE)\n* `40gbase-kr4` - 40GBASE-KR4 (40GE)\n* `50gbase-kr` - 50GBASE-KR (50GE)\n* `100gbase-kp4` - 100GBASE-KP4 (100GE)\n* `100gbase-kr2` - 100GBASE-KR2 (100GE)\n* `100gbase-kr4` - 100GBASE-KR4 (100GE)\n* `1.6tbase-kr8` - 1.6TBASE-KR8 (1.6TE)\n* `ieee802.11a` - IEEE 802.11a\n* `ieee802.11g` - IEEE 802.11b/g\n* `ieee802.11n` - IEEE 802.11n (Wi-Fi 4)\n* `ieee802.11ac` - IEEE 802.11ac (Wi-Fi 5)\n* `ieee802.11ad` - IEEE 802.11ad (WiGig)\n* `ieee802.11ax` - IEEE 802.11ax (Wi-Fi 6)\n* `ieee802.11ay` - IEEE 802.11ay (WiGig)\n* `ieee802.11be` - IEEE 802.11be (Wi-Fi 7)\n* `ieee802.15.1` - IEEE 802.15.1 (Bluetooth)\n* `ieee802.15.4` - IEEE 802.15.4 (LR-WPAN)\n* `other-wireless` - Other (Wireless)\n* `gsm` - GSM\n* `cdma` - CDMA\n* `lte` - LTE\n* `4g` - 4G\n* `5g` - 5G\n* `sonet-oc3` - OC-3/STM-1\n* `sonet-oc12` - OC-12/STM-4\n* `sonet-oc48` - OC-48/STM-16\n* `sonet-oc192` - OC-192/STM-64\n* `sonet-oc768` - OC-768/STM-256\n* `sonet-oc1920` - OC-1920/STM-640\n* `sonet-oc3840` - OC-3840/STM-1234\n* `1gfc-sfp` - SFP (1GFC)\n* `2gfc-sfp` - SFP (2GFC)\n* `4gfc-sfp` - SFP (4GFC)\n* `8gfc-sfpp` - SFP+ (8GFC)\n* `16gfc-sfpp` - SFP+ (16GFC)\n* `32gfc-sfp28` - SFP28 (32GFC)\n* `32gfc-sfpp` - SFP+ (32GFC)\n* `64gfc-qsfpp` - QSFP+ (64GFC)\n* `64gfc-sfpdd` - SFP-DD (64GFC)\n* `64gfc-sfpp` - SFP+ (64GFC)\n* `128gfc-qsfp28` - QSFP28 (128GFC)\n* `infiniband-sdr` - SDR (2 Gbps)\n* `infiniband-ddr` - DDR (4 Gbps)\n* `infiniband-qdr` - QDR (8 Gbps)\n* `infiniband-fdr10` - FDR10 (10 Gbps)\n* `infiniband-fdr` - FDR (13.5 Gbps)\n* `infiniband-edr` - EDR (25 Gbps)\n* `infiniband-hdr` - HDR (50 Gbps)\n* `infiniband-ndr` - NDR (100 Gbps)\n* `infiniband-xdr` - XDR (250 Gbps)\n* `t1` - T1 (1.544 Mbps)\n* `e1` - E1 (2.048 Mbps)\n* `t3` - T3 (45 Mbps)\n* `e3` - E3 (34 Mbps)\n* `xdsl` - xDSL\n* `docsis` - DOCSIS\n* `moca` - MoCA\n* `bpon` - BPON (622 Mbps / 155 Mbps)\n* `epon` - EPON (1 Gbps)\n* `10g-epon` - 10G-EPON (10 Gbps)\n* `gpon` - GPON (2.5 Gbps / 1.25 Gbps)\n* `xg-pon` - XG-PON (10 Gbps / 2.5 Gbps)\n* `xgs-pon` - XGS-PON (10 Gbps)\n* `ng-pon2` - NG-PON2 (TWDM-PON) (4x10 Gbps)\n* `25g-pon` - 25G-PON (25 Gbps)\n* `50g-pon` - 50G-PON (50 Gbps)\n* `cisco-stackwise` - Cisco StackWise\n* `cisco-stackwise-plus` - Cisco StackWise Plus\n* `cisco-flexstack` - Cisco FlexStack\n* `cisco-flexstack-plus` - Cisco FlexStack Plus\n* `cisco-stackwise-80` - Cisco StackWise-80\n* `cisco-stackwise-160` - Cisco StackWise-160\n* `cisco-stackwise-320` - Cisco StackWise-320\n* `cisco-stackwise-480` - Cisco StackWise-480\n* `cisco-stackwise-1t` - Cisco StackWise-1T\n* `juniper-vcp` - Juniper VCP\n* `extreme-summitstack` - Extreme SummitStack\n* `extreme-summitstack-128` - Extreme SummitStack-128\n* `extreme-summitstack-256` - Extreme SummitStack-256\n* `extreme-summitstack-512` - Extreme SummitStack-512\n* `other` - Other", + "x-spec-enum-id": "b067eb1f050c6ae9" }, "enabled": { "type": "boolean" diff --git a/docs/release-notes/version-4.5.md b/docs/release-notes/version-4.5.md index b56af6d51..2557d0806 100644 --- a/docs/release-notes/version-4.5.md +++ b/docs/release-notes/version-4.5.md @@ -1,5 +1,24 @@ # NetBox v4.5 +## v4.5.6 (2026-03-31) + +### Enhancements + +* [#21480](https://github.com/netbox-community/netbox/issues/21480) - Add OSFP224 (1.6T) interface type +* [#21727](https://github.com/netbox-community/netbox/issues/21727) - Add 2.5GBASE-X SFP modular interface type +* [#21743](https://github.com/netbox-community/netbox/issues/21743) - Improve object change diff styling and layout +* [#21793](https://github.com/netbox-community/netbox/issues/21793) - Add 50 Gbps, 800 Gbps, and 1.6 Tbps interface speed options + +### Bug Fixes + +* [#20467](https://github.com/netbox-community/netbox/issues/20467) - Fix resolution of the `{module}` variable for position fields in nested modules +* [#21698](https://github.com/netbox-community/netbox/issues/21698) - Adjust custom field URL filter to support non-standard port numbers +* [#21707](https://github.com/netbox-community/netbox/issues/21707) - Fix grouping of owner fields in provider account add/edit forms +* [#21749](https://github.com/netbox-community/netbox/issues/21749) - Fix `FieldError` exception when sorting the circuit group assignment table by the member column +* [#21763](https://github.com/netbox-community/netbox/issues/21763) - Use separate add/remove form fields when editing a site or provider with a large number of ASNs assigned + +--- + ## v4.5.5 (2026-03-17) ### Enhancements diff --git a/netbox/project-static/package.json b/netbox/project-static/package.json index 59619fc42..311511223 100644 --- a/netbox/project-static/package.json +++ b/netbox/project-static/package.json @@ -60,7 +60,9 @@ "@types/bootstrap/**/@popperjs/core": "^2.11.6", "eslint/**/minimatch": "^3.1.3", "eslint-plugin-import/**/minimatch": "^3.1.3", - "**/markdown-it": "^14.1.1" + "**/markdown-it": "^14.1.1", + "micromatch/picomatch": "2.3.2", + "tinyglobby/picomatch": "4.0.4" }, "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/netbox/project-static/yarn.lock b/netbox/project-static/yarn.lock index 7a7cfd407..d1d0c3c9e 100644 --- a/netbox/project-static/yarn.lock +++ b/netbox/project-static/yarn.lock @@ -2076,9 +2076,9 @@ flatpickr@4.6.13: integrity sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw== flatted@^3.2.9: - version "3.3.3" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz" - integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + version "3.4.2" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz" + integrity sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA== for-each@^0.3.3: version "0.3.3" @@ -2993,15 +2993,25 @@ path-parse@^1.0.7: resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +picomatch@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.2.tgz#5a942915e26b372dc0f0e6753149a16e6b1c5601" + integrity sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA== + +picomatch@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589" + integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A== + picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + version "2.3.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.2.tgz#5a942915e26b372dc0f0e6753149a16e6b1c5601" + integrity sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA== picomatch@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" - integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + version "4.0.4" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589" + integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A== possible-typed-array-names@^1.0.0: version "1.0.0" diff --git a/netbox/release.yaml b/netbox/release.yaml index 24f9fb56d..10dd40164 100644 --- a/netbox/release.yaml +++ b/netbox/release.yaml @@ -1,3 +1,3 @@ -version: "4.5.5" +version: "4.5.6" edition: "Community" -published: "2026-03-17" +published: "2026-03-31" diff --git a/netbox/translations/cs/LC_MESSAGES/django.mo b/netbox/translations/cs/LC_MESSAGES/django.mo index 88a8dc821487ad7b7d10dbdb5d1f2b0996d0a7d7..998b9add32c0c54c05668b61f09da8557999bc84 100644 GIT binary patch delta 76115 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" msgstr "Přidán člen {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "Nelze odebrat hlavní zařízení {device} z virtuálního podvozku." -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Odstraněno {device} z virtuálního šasi {chassis}" @@ -8400,10 +8300,9 @@ msgstr "Ano" msgid "No" msgstr "Ne" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "Odkaz" @@ -8856,15 +8755,6 @@ msgstr "Jeden nebo více přiřazených typů objektů" msgid "Field data type (e.g. text, integer, etc.)" msgstr "Datový typ pole (např. text, celé číslo atd.)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "Typ objektu" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "Typ objektu (pro pole objektu nebo více objektů)" @@ -8967,7 +8857,7 @@ msgstr "Klasifikace vstupu" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -8993,15 +8883,14 @@ msgstr "Uživatelská jména oddělená čárkami, uzavřená dvojitými uvozovk #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "Skupiny" @@ -9027,13 +8916,6 @@ msgstr "Typ pole" msgid "Choices" msgstr "Možnosti" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "Údaje" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10318,17 +10200,6 @@ msgstr "Přípona souboru" msgid "As Attachment" msgstr "Jako příloha" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "Datový soubor" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10344,9 +10215,8 @@ msgstr "Obrázek" msgid "Filename" msgstr "Název souboru" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "Velikost" @@ -10400,6 +10270,7 @@ msgstr "" "Zkuste widget znovu nakonfigurovat, nebo jej odeberte z řídicího panelu." #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10542,7 +10413,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "Prostý text" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "Servisní služby" @@ -10605,7 +10476,6 @@ msgstr "Export L2VPN (identifikátor)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "Předpona" @@ -10655,7 +10525,6 @@ msgstr "Číslo VLAN (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "Adresa" @@ -10712,7 +10581,7 @@ msgstr "Skupina FHRP (ID)" msgid "IP address (ID)" msgstr "IP adresa (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "IP adresa" @@ -10779,8 +10648,8 @@ msgstr "Je soukromý" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "RIR" @@ -10791,15 +10660,13 @@ msgstr "Datum přidání" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Skupina VLAN" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10814,7 +10681,7 @@ msgid "Prefix length" msgstr "Délka předpony" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "Je bazén" @@ -10833,23 +10700,21 @@ msgstr "Přiřazení VLAN" msgid "Treat as populated" msgstr "Zacházejte s osídlenými" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "Název DNS" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "protokolu" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "ID skupiny" @@ -10870,9 +10735,8 @@ msgid "Authentication key" msgstr "Ověřovací klíč" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -10901,23 +10765,22 @@ msgstr "Lokalita a skupina" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "Politika" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "Přístavy" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "Importovat cíle trasy" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "Exportovat cíle trasy" @@ -10947,7 +10810,6 @@ msgstr "ID rozsahu" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "Skupina FHRP" @@ -11057,7 +10919,7 @@ msgid "Exported by VRF" msgstr "Exportováno VRF" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "Soukromé" @@ -11066,7 +10928,7 @@ msgstr "Soukromé" msgid "Address family" msgstr "Rodina adres" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "Rozsah" @@ -11094,18 +10956,10 @@ msgstr "Zařízení/VM" msgid "Parent Prefix" msgstr "Nadřazená předpona" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "Název DNS" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLAN" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "Obsahuje VLAN ID" @@ -11123,26 +10977,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Q-in-Q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "ID VLAN" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "Cíl trasy" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "Agregát" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "Řada ASN" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "Rozsah IP" @@ -11194,8 +11046,7 @@ msgstr "Virtuální IP adresa" msgid "Assignment already exists" msgstr "Přiřazení již existuje" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "ID VLAN" @@ -11213,7 +11064,6 @@ msgstr "" "verzi. Uživatelům se doporučuje, aby pro tento účel využívali skupiny VLAN." #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "Pravidlo překladu VLAN" @@ -11226,7 +11076,6 @@ msgstr "" "pomocí pomlčky." #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "Šablona aplikační služby" @@ -11401,7 +11250,7 @@ msgstr "je bazén" msgid "All IP addresses within this prefix are considered usable" msgstr "Všechny IP adresy v rámci této prefixy jsou považovány za použitelné" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "použitá značka" @@ -11413,12 +11262,12 @@ msgstr "předpony" msgid "Cannot create prefix with /0 mask." msgstr "Nelze vytvořit předponu s maskou /0." -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "globální tabulka" @@ -11427,127 +11276,127 @@ msgstr "globální tabulka" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Duplicitní předpona nalezena v {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "Počáteční adresa" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "Adresa IPv4 nebo IPv6 (s maskou)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "koncová adresa" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "Provozní stav tohoto rozsahu" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "Primární funkce tohoto rozsahu" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "značka obsazena" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "Zabránit vytváření IP adres v tomto rozsahu" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "Nahlásit prostor jako plně využitý" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "Rozsah IP" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "Rozsahy IP" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "Počáteční a koncová verze IP adresy se musí shodovat" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "Počáteční a koncová maska IP adresy se musí shodovat" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "Koncová adresa musí být větší než počáteční adresa ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Definované adresy se překrývají s rozsahem {overlapping_range} na VRF {vrf}" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "Definovaný rozsah přesahuje maximální podporovanou velikost ({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "adresa" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "Provozní stav tohoto IP" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "Funkční role tohoto IP" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (uvnitř)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "IP, pro kterou je tato adresa „vnější“ IP" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Název hostitele nebo FQDN (nerozlišuje velká a malá písmena)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "IP adresy" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "Nelze vytvořit IP adresu s maskou /0." -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip} je síťové ID, které nemusí být přiřazeno rozhraní." -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "{ip} je vysílací adresa, která nemusí být přiřazena k rozhraní." -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Duplicitní adresa IP nalezena v {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "Nelze vytvořit IP adresu {ip} vnitřní rozsah {range}." -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -11555,7 +11404,7 @@ msgstr "" "Nelze znovu přiřadit adresu IP, pokud je určena jako primární IP pro " "nadřazený objekt" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" @@ -11563,7 +11412,7 @@ msgstr "" "Nelze znovu přiřadit IP adresu, pokud je určena jako IP OOB pro nadřazený " "objekt" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Stav SLAAC lze přiřadit pouze adresám IPv6" @@ -11758,17 +11607,17 @@ msgid "Added" msgstr "Přidal" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "Předpony" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "Využití" @@ -11795,7 +11644,7 @@ msgid "Pool" msgstr "Bazén" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "Označeno Využito" @@ -11803,7 +11652,7 @@ msgstr "Označeno Využito" msgid "Start address" msgstr "Počáteční adresa" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "Označeno osídleno" @@ -11833,17 +11682,14 @@ msgid "VID" msgstr "VIDIO" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "Pravidla" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "Místní VID" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "Vzdálený VID" @@ -11863,16 +11709,71 @@ msgstr "Importovat cíle" msgid "Export Targets" msgstr "Cíle exportu" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "Vytvořit skupinu" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Přiřadit skupinu" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "Rozlišovač tras" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "Unikátní IP prostor" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "Číslo AS" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Rodina" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "Datum přidání" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "Počáteční adresa" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "Koncová adresa" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (vnější)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "Primární IP" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "OOB IP" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "Typ ověřování" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "Ověřovací klíč" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Role Q-in-Q" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "Zákaznické VLAN" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "Přidání sítě VLAN" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -11910,26 +11811,79 @@ msgstr "" "V názvech DNS jsou povoleny pouze alfanumerické znaky, hvězdičky, pomlčky, " "tečky a podtržítka" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "Rozhraní zařízení" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "Rozhraní virtuálních počítačů" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "Import souborů VRF" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "Export souborů VRF" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "Import L2VPN" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "Export L2VPN" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "Duplicitní předpony" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "Nadřazené předpony" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "Dětské předpony" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "Dětské rozsahy" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "Duplicitní adresy IP" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "Aplikační služby" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "Související IP adresy" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "Pravidla překladu VLAN" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "Přidat pravidlo" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "Virtuální IP adresy" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "Přidat IP adresu" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "Přidání předpony" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "Toto pole nesmí být prázdné." @@ -12432,7 +12386,6 @@ msgid "Contact Groups" msgstr "Skupiny kontaktů" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Role kontaktů" @@ -12452,11 +12405,6 @@ msgstr "Výšky" msgid "Modules" msgstr "Moduly" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "Kontexty virtuálních zařízení" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "Profily typu modulu" @@ -12470,12 +12418,11 @@ msgid "Device Components" msgstr "Komponenty zařízení" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Role položek inventáře" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "Spojení" @@ -12516,7 +12463,6 @@ msgid "VLAN Translation Policies" msgstr "Zásady překladu VLAN" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "Pravidla překladu VLAN" @@ -12595,7 +12541,6 @@ msgid "Circuit Terminations" msgstr "Zakončení okruhů" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "Virtuální obvody" @@ -12611,18 +12556,11 @@ msgstr "Zakončení virtuálních okruhů" msgid "Circuit Groups" msgstr "Skupiny okruhů" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "Skupinové úkoly" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "Poskytovatelé" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Účty poskytovatele" @@ -12718,7 +12656,7 @@ msgid "Journal Entries" msgstr "Záznamy deníku" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Protokol změn" @@ -12771,6 +12709,7 @@ msgstr "Úkoly na pozadí" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12789,8 +12728,9 @@ msgstr "Klon" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -12802,8 +12742,9 @@ msgstr "Upravit" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -13072,7 +13013,7 @@ msgstr "Dummy Plugin" msgid "Copy" msgstr "Kopírovat" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -13080,11 +13021,19 @@ msgstr "" "Neplatná možnost dekódování: {decoding}! Musí to být jeden z " "{image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" +"Neplatná hodnota max_items: {max_items}! Musí být kladné celé číslo nebo " +"Žádné." + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "GPS souřadnice" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "Související objekty" @@ -13357,8 +13306,7 @@ msgid "Account Details" msgstr "Podrobnosti o účtu" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "E-mailem" @@ -13380,16 +13328,15 @@ msgid "Assigned Groups" msgstr "Přiřazené skupiny" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13464,55 +13411,21 @@ msgstr "Zdrojový kód" msgid "Community" msgstr "Komunita" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "Datum instalace" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "Datum ukončení" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "Ukončení výměnných obvodů" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "Vyměňte tato zakončení za obvod %(circuit)s?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "Strana" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Strana Z" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "Přiřadit obvod" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "Přiřazení skupiny okruhů" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "Přidat obvod" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "Typ obvodu" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "Koncový bod" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "Označeno jako připojeno" @@ -13522,13 +13435,14 @@ msgstr "do" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "Stopa" @@ -13542,37 +13456,30 @@ msgstr "Odstraňte kabel" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "Odpojit" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "Připojit" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "Po proudu" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "Nad proudem" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "Křížové připojení" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "Patch panel/port" @@ -13580,39 +13487,10 @@ msgstr "Patch panel/port" msgid "Add circuit" msgstr "Přidat obvod" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "Účet poskytovatele" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "Přidání virtuálního obvodu" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "Přidat ukončení" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "Ukončení virtuálního obvodu" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "Přidat virtuální obvod" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "Typ virtuálního obvodu" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "Konfigurační data" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "Komentář" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13635,31 +13513,11 @@ msgstr "Nová hodnota" msgid "Changed" msgstr "Změněno" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "bajtů" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "SHA256 hash" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "Obsah" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "Naposledy synchronizováno" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "Backend" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "Nebyly definovány žádné parametry" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "Výšky stojanů" @@ -13718,70 +13576,11 @@ msgstr "Datový soubor přidružený k tomuto objektu byl smazán" msgid "Data Synced" msgstr "Synchronizovaná data" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "Práce" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "Vytvořil" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "Plánování" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "každá %(interval)s minut" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "Změna" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "Rozdíl" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "Předchozí" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "Další" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "Vytvořený objekt" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "Objekt odstraněn" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "Žádné změny" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "Data před změnou" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "Upozornění: Porovnání neatomové změny s předchozím záznamem změny" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "Údaje po změně" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Zobrazit vše %(count)s Mění" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -13797,6 +13596,59 @@ msgstr "dní" msgid "Indefinite" msgstr "Neurčitý" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "Komentář" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "Konfigurační data" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "Nebyly definovány žádné parametry" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "Rozdíl" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "Předchozí" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "Další" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "Vytvořený objekt" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "Objekt odstraněn" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "Žádné změny" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "Údaje po změně" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "Data před změnou" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "Upozornění: Porovnání neatomové změny s předchozím záznamem změny" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Zobrazit vše %(count)s Mění" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "Není nainstalován" @@ -14084,22 +13936,13 @@ msgstr "Segmenty" msgid "Incomplete" msgstr "neúplný" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "Není připojen" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT pro" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "THE NIGHT" @@ -14107,7 +13950,7 @@ msgstr "THE NIGHT" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "Kopírovat do schránky" @@ -14157,10 +14000,6 @@ msgstr "Odstranit" msgid "Local Config Context Data" msgstr "Kontextová data místní konfigurace" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "Rozložení zařízení" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -14188,34 +14027,6 @@ msgstr "Záliv" msgid "Add Device" msgstr "Přidat zařízení" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "Pozice" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "Označeno jako Připojeno" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "Stav připojení" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "Mapování přístavů" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "Nebyla definována žádná mapování" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "Strana A" @@ -14241,6 +14052,8 @@ msgid "Path Status" msgstr "Stav cesty" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "Nedostižitelný" @@ -14249,8 +14062,6 @@ msgid "Path Endpoints" msgstr "Koncové body cesty" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "Není připojen" @@ -14296,94 +14107,10 @@ msgstr "Výška stojanu" msgid "Loading..." msgstr "Načítání..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "Přidat podřízené rozhraní" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "Rychlost/Duplex" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "Režim PoE" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "Typ PoE" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "Přemostěná rozhraní" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "Překlad VLAN" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "Bezdrátové spojení" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "Kanál" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "Frekvence kanálu" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "MHz" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "Šířka kanálu" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "Přidat IP adresu" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "Přidat MAC adresu" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "Nadřazená položka" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "ID součásti" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "Značka majetku" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "Primární pro rozhraní" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "Přidat typ zařízení" @@ -14392,6 +14119,64 @@ msgstr "Přidat typ zařízení" msgid "Add Module Type" msgstr "Přidat typ modulu" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "Stav cesty" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "Koncové body cesty" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "Není připojen" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "Mapování přístavů" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "Nebyla definována žádná mapování" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "Bezdrátové spojení" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "Kanál" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "Frekvence kanálu" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "MHz" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "Šířka kanálu" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "Žádný profil není přiřazen" @@ -14411,7 +14196,7 @@ msgstr "Přiděleno" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "VA" @@ -14435,44 +14220,6 @@ msgstr "Pouze obrázky" msgid "Labels only" msgstr "Pouze štítky" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "Připojené zařízení" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "Využití (přiděleno" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "Elektrické charakteristiky" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "A" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "Krmná noha" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "Přidání napájecích zdrojů" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "Maximální losování" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "Přidělené losování" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "Přidat rezervaci" @@ -14512,10 +14259,6 @@ msgstr "Přidat web" msgid "Attachment" msgstr "Příloha" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "Přidat člena" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14567,10 +14310,6 @@ msgstr "" "Jste si jisti, že chcete odstranit %(device)s z virtuálního" " šasi %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "Identifikátor" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -14906,6 +14645,10 @@ msgstr "" msgid "Journal Entry" msgstr "Zápis do deníku" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "Vytvořil" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "Skupina oznámení" @@ -15399,37 +15142,15 @@ msgstr "Odhlásit se" msgid "Log In" msgstr "Přihlásit se" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Rodina" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "Datum přidání" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "Přidat předponu" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "Číslo AS" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "Typ ověřování" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "Ověřovací klíč" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "Virtuální IP adresy" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "Globální" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15464,15 +15185,6 @@ msgstr "Zobrazit Dostupné" msgid "Show All" msgstr "Zobrazit vše" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "Globální" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (vnější)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "Přiřaďte IP adresu" @@ -15489,51 +15201,43 @@ msgstr "Výsledky vyhledávání" msgid "Bulk Add IP Addresses" msgstr "Hromadné přidávání IP adres" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "Počáteční adresa" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "Koncová adresa" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "Podrobnosti o adresování" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "Označeno plně využito" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "Dětské IP adresy" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "Dostupné IP adresy" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "První dostupná IP" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "Podrobnosti o předponě" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "Síťová adresa" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "Síťová maska" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "Zástupná maska" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "Adresa vysílání" @@ -15545,58 +15249,14 @@ msgstr "Přidat rozsah IP" msgid "Hide Depth Indicators" msgstr "Skrýt indikátory hloubky" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "Přidat agregát" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "Import souborů VRF" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "Export souborů VRF" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "Import L2VPN" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "Export L2VPN" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Role Q-in-Q" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "Přidání předpony" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "Zákaznické VLAN" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "Přidání sítě VLAN" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "Přidat VLAN" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "Přidat pravidlo" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "Rozlišovač tras" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "Unikátní IP prostor" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15665,61 +15325,14 @@ msgstr "" "Klepněte na tlačítko tady pokusit se znovu " "načíst NetBox." -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "Kontaktovat" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "Název" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "Telefon" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "Kontaktní skupina" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "Přidat skupinu kontaktů" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "Role Kontaktu" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "Přidání kontaktu" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "Přidat nájemce" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "Skupina nájemců" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "Přidat skupinu nájemců" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -15830,16 +15443,28 @@ msgstr "Zásady IPsec" msgid "PFS Group" msgstr "Skupina PFS" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "Přidat ukončení" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "Přidat tunel" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "Frekvence kanálu" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "MHz" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "Šířka kanálu" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "Přidat bezdrátovou síť LAN" @@ -15874,6 +15499,20 @@ msgstr "Kontaktní role (ID)" msgid "Contact role (slug)" msgstr "Kontaktní role (slug)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "Kontaktovat" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "Role Kontaktu" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "Kontaktní skupina" @@ -15906,6 +15545,15 @@ msgstr "Přidání skupin" msgid "Remove groups" msgstr "Odstranit skupiny" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "Název" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "Telefon" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -15918,6 +15566,17 @@ msgstr "" msgid "Assigned contact" msgstr "Přiřazený kontakt" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "Skupina nájemců" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "Kontaktní skupina" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "kontaktní skupina" @@ -16019,6 +15678,14 @@ msgstr "Kontakt Odkaz" msgid "Contact Description" msgstr "Kontakt Popis" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "Přidat skupinu nájemců" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "Přidat skupinu kontaktů" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -17292,10 +16959,6 @@ msgstr "Přidal {count} zařízení do clusteru {cluster}" msgid "Assigned VLANs" msgstr "Přiřazené sítě VLAN" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "Podřízená rozhraní" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPsec - Přeprava" diff --git a/netbox/translations/da/LC_MESSAGES/django.mo b/netbox/translations/da/LC_MESSAGES/django.mo index 1a4a7d46ef87c2d6b521359d69b7287e02ed2a39..4d2f7af440562d4e8ad12259c54ae61b0780b694 100644 GIT binary patch delta 75994 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 adRwIQKfUB_9oOIYruSTspWErE`~L$+&Jdaa diff --git a/netbox/translations/da/LC_MESSAGES/django.po b/netbox/translations/da/LC_MESSAGES/django.po index 610288411..cc82fdb20 100644 --- a/netbox/translations/da/LC_MESSAGES/django.po +++ b/netbox/translations/da/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-14 05:18+0000\n" +"POT-Creation-Date: 2026-03-31 05:31+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2026\n" "Language-Team: Danish (https://app.transifex.com/netbox-community/teams/178115/da/)\n" @@ -47,9 +47,9 @@ msgstr "Din adgangskode er blevet ændret." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 #: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204 -#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1933 -#: netbox/dcim/choices.py:1991 netbox/dcim/choices.py:2058 -#: netbox/dcim/choices.py:2080 netbox/virtualization/choices.py:20 +#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1954 +#: netbox/dcim/choices.py:2012 netbox/dcim/choices.py:2079 +#: netbox/dcim/choices.py:2101 netbox/virtualization/choices.py:20 #: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18 #: netbox/vpn/choices.py:281 msgid "Planned" @@ -63,8 +63,8 @@ msgstr "Opretter" #: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22 #: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155 #: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256 -#: netbox/dcim/choices.py:1990 netbox/dcim/choices.py:2057 -#: netbox/dcim/choices.py:2079 netbox/extras/tables/tables.py:642 +#: netbox/dcim/choices.py:2011 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:2100 netbox/extras/tables/tables.py:642 #: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49 #: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154 #: netbox/templates/extras/configcontext.html:29 @@ -76,8 +76,8 @@ msgid "Active" msgstr "Aktiv" #: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202 -#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:1989 -#: netbox/dcim/choices.py:2059 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:2010 +#: netbox/dcim/choices.py:2080 netbox/dcim/choices.py:2099 #: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44 msgid "Offline" msgstr "Offline" @@ -90,8 +90,9 @@ msgstr "Nedlægger" msgid "Decommissioned" msgstr "Nedlagt" -#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2002 -#: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:153 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2023 +#: netbox/dcim/tables/devices.py:1208 +#: netbox/templates/dcim/interface/attrs/mac_address.html:3 #: netbox/tenancy/choices.py:17 msgid "Primary" msgstr "Primær" @@ -110,7 +111,8 @@ msgid "Inactive" msgstr "Inaktiv" #: netbox/circuits/choices.py:107 netbox/dcim/tables/devices.py:714 -#: netbox/templates/dcim/interface.html:293 netbox/vpn/choices.py:63 +#: netbox/templates/dcim/panels/interface_wireless.html:12 +#: netbox/vpn/choices.py:63 msgid "Peer" msgstr "jævnaldrende" @@ -186,9 +188,9 @@ msgstr "Områdegruppe (slug)" #: netbox/dcim/forms/filtersets.py:1172 netbox/dcim/forms/filtersets.py:1268 #: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:2024 #: netbox/dcim/forms/filtersets.py:2048 netbox/dcim/forms/filtersets.py:2072 -#: netbox/dcim/forms/model_forms.py:155 netbox/dcim/forms/model_forms.py:183 -#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:570 -#: netbox/dcim/forms/model_forms.py:839 netbox/dcim/forms/object_create.py:294 +#: netbox/dcim/forms/model_forms.py:166 netbox/dcim/forms/model_forms.py:209 +#: netbox/dcim/forms/model_forms.py:280 netbox/dcim/forms/model_forms.py:596 +#: netbox/dcim/forms/model_forms.py:865 netbox/dcim/forms/object_create.py:294 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:26 #: netbox/dcim/tables/power.py:90 netbox/dcim/tables/racks.py:111 #: netbox/dcim/tables/racks.py:194 netbox/dcim/tables/sites.py:102 @@ -199,7 +201,6 @@ msgstr "Områdegruppe (slug)" #: netbox/ipam/tables/vlans.py:90 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:36 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/ipam/vlan.html:23 #: netbox/templates/ipam/vlan_edit.html:52 #: netbox/virtualization/forms/bulk_edit.py:95 #: netbox/virtualization/forms/bulk_import.py:60 @@ -231,7 +232,6 @@ msgstr "ASN (ID)" #: netbox/circuits/filtersets.py:85 netbox/circuits/forms/filtersets.py:42 #: netbox/ipam/forms/model_forms.py:162 netbox/ipam/models/asns.py:137 #: netbox/ipam/models/asns.py:154 netbox/ipam/tables/asn.py:51 -#: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" @@ -328,14 +328,12 @@ msgstr "Søg" #: netbox/circuits/forms/filtersets.py:232 #: netbox/circuits/forms/filtersets.py:259 #: netbox/circuits/forms/filtersets.py:306 -#: netbox/circuits/forms/model_forms.py:139 -#: netbox/circuits/forms/model_forms.py:162 -#: netbox/circuits/forms/model_forms.py:260 +#: netbox/circuits/forms/model_forms.py:168 +#: netbox/circuits/forms/model_forms.py:191 +#: netbox/circuits/forms/model_forms.py:289 #: netbox/circuits/tables/circuits.py:103 #: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 -#: netbox/templates/circuits/circuit.html:15 -#: netbox/templates/circuits/circuitgroupassignment.html:30 -#: netbox/templates/circuits/circuittermination.html:19 +#: netbox/templates/circuits/panels/circuit_termination.html:7 #: netbox/templates/dcim/inc/cable_termination.html:62 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -393,11 +391,9 @@ msgstr "Virtuel kredsløbstype (slug)" #: netbox/circuits/forms/bulk_import.py:248 #: netbox/circuits/forms/filtersets.py:384 #: netbox/circuits/forms/filtersets.py:390 -#: netbox/circuits/forms/model_forms.py:338 -#: netbox/circuits/forms/model_forms.py:353 +#: netbox/circuits/forms/model_forms.py:367 +#: netbox/circuits/forms/model_forms.py:382 #: netbox/circuits/tables/virtual_circuits.py:84 -#: netbox/templates/circuits/virtualcircuit.html:20 -#: netbox/templates/circuits/virtualcircuittermination.html:38 msgid "Virtual circuit" msgstr "Virtuelt kredsløb" @@ -410,12 +406,12 @@ msgstr "Grænseflade (ID)" #: netbox/circuits/forms/bulk_edit.py:48 #: netbox/circuits/forms/filtersets.py:68 #: netbox/circuits/forms/model_forms.py:48 -#: netbox/circuits/tables/providers.py:32 netbox/dcim/forms/bulk_edit.py:134 -#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/model_forms.py:142 -#: netbox/dcim/tables/sites.py:74 netbox/ipam/models/asns.py:155 -#: netbox/ipam/tables/asn.py:37 netbox/ipam/views.py:270 -#: netbox/netbox/navigation/menu.py:182 netbox/netbox/navigation/menu.py:185 -#: netbox/templates/circuits/provider.html:23 +#: netbox/circuits/tables/providers.py:32 netbox/circuits/ui/panels.py:92 +#: netbox/dcim/forms/bulk_edit.py:134 netbox/dcim/forms/filtersets.py:225 +#: netbox/dcim/forms/model_forms.py:142 netbox/dcim/tables/sites.py:74 +#: netbox/ipam/models/asns.py:155 netbox/ipam/tables/asn.py:37 +#: netbox/ipam/views.py:365 netbox/netbox/navigation/menu.py:182 +#: netbox/netbox/navigation/menu.py:185 msgid "ASNs" msgstr "ASN'er" @@ -435,9 +431,9 @@ msgstr "ASN'er" #: netbox/circuits/forms/filtersets.py:349 #: netbox/circuits/forms/filtersets.py:385 #: netbox/circuits/forms/filtersets.py:408 -#: netbox/circuits/forms/model_forms.py:65 -#: netbox/circuits/forms/model_forms.py:80 -#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:90 +#: netbox/circuits/forms/model_forms.py:109 +#: netbox/circuits/forms/model_forms.py:140 #: netbox/circuits/tables/circuits.py:56 #: netbox/circuits/tables/circuits.py:107 #: netbox/circuits/tables/circuits.py:192 @@ -445,22 +441,14 @@ msgstr "ASN'er" #: netbox/circuits/tables/providers.py:95 #: netbox/circuits/tables/virtual_circuits.py:46 #: netbox/circuits/tables/virtual_circuits.py:89 -#: netbox/templates/circuits/circuit.html:18 -#: netbox/templates/circuits/circuitgroupassignment.html:26 -#: netbox/templates/circuits/circuittermination.html:25 -#: netbox/templates/circuits/provider.html:20 -#: netbox/templates/circuits/provideraccount.html:20 -#: netbox/templates/circuits/providernetwork.html:20 -#: netbox/templates/circuits/virtualcircuit.html:23 -#: netbox/templates/circuits/virtualcircuittermination.html:26 +#: netbox/templates/circuits/panels/circuit_termination.html:11 #: netbox/templates/dcim/inc/cable_termination.html:58 -#: netbox/templates/dcim/interface.html:184 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:7 msgid "Provider" msgstr "Leverandør" #: netbox/circuits/forms/bulk_edit.py:86 -#: netbox/circuits/forms/filtersets.py:106 -#: netbox/templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/filtersets.py:106 netbox/circuits/ui/panels.py:106 msgid "Service ID" msgstr "Tjeneste-id" @@ -479,12 +467,7 @@ msgstr "Tjeneste-id" #: netbox/dcim/tables/devicetypes.py:214 netbox/dcim/tables/devicetypes.py:255 #: netbox/dcim/tables/devicetypes.py:274 netbox/dcim/tables/racks.py:30 #: netbox/extras/forms/bulk_edit.py:306 netbox/extras/tables/tables.py:552 -#: netbox/netbox/ui/attrs.py:194 netbox/templates/circuits/circuittype.html:30 -#: netbox/templates/circuits/virtualcircuittype.html:30 -#: netbox/templates/dcim/cable.html:44 netbox/templates/dcim/frontport.html:40 -#: netbox/templates/dcim/inventoryitemrole.html:26 -#: netbox/templates/dcim/poweroutlet.html:48 -#: netbox/templates/dcim/rearport.html:40 netbox/templates/extras/tag.html:26 +#: netbox/netbox/ui/attrs.py:213 netbox/templates/extras/tag.html:26 msgid "Color" msgstr "Farve" @@ -518,27 +501,14 @@ msgstr "Farve" #: netbox/dcim/forms/filtersets.py:1602 netbox/dcim/forms/filtersets.py:1707 #: netbox/dcim/forms/filtersets.py:1756 netbox/dcim/forms/filtersets.py:1775 #: netbox/dcim/forms/filtersets.py:1799 netbox/dcim/forms/filtersets.py:1818 -#: netbox/dcim/forms/model_forms.py:820 netbox/dcim/forms/model_forms.py:826 +#: netbox/dcim/forms/model_forms.py:846 netbox/dcim/forms/model_forms.py:852 #: netbox/dcim/forms/object_import.py:85 #: netbox/dcim/forms/object_import.py:114 #: netbox/dcim/forms/object_import.py:127 netbox/dcim/tables/devices.py:182 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 #: netbox/extras/forms/bulk_import.py:48 netbox/extras/tables/tables.py:510 #: netbox/extras/tables/tables.py:578 netbox/netbox/tables/tables.py:339 -#: netbox/templates/circuits/circuit.html:30 -#: netbox/templates/circuits/virtualcircuit.html:39 -#: netbox/templates/circuits/virtualcircuittermination.html:64 -#: netbox/templates/core/datasource.html:38 -#: netbox/templates/dcim/cable.html:15 -#: netbox/templates/dcim/consoleport.html:36 -#: netbox/templates/dcim/consoleserverport.html:36 -#: netbox/templates/dcim/frontport.html:36 -#: netbox/templates/dcim/interface.html:46 -#: netbox/templates/dcim/interface.html:244 -#: netbox/templates/dcim/powerfeed.html:32 -#: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 -#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/dcim/panels/interface_connection.html:68 #: netbox/templates/extras/eventrule.html:74 #: netbox/templates/wireless/panels/wirelesslink_interface.html:16 #: netbox/virtualization/forms/bulk_edit.py:50 @@ -559,10 +529,8 @@ msgstr "Type" #: netbox/circuits/forms/bulk_import.py:213 #: netbox/circuits/forms/filtersets.py:159 #: netbox/circuits/forms/filtersets.py:357 -#: netbox/circuits/forms/model_forms.py:117 -#: netbox/circuits/forms/model_forms.py:326 -#: netbox/templates/circuits/virtualcircuit.html:31 -#: netbox/templates/circuits/virtualcircuittermination.html:34 +#: netbox/circuits/forms/model_forms.py:146 +#: netbox/circuits/forms/model_forms.py:355 msgid "Provider account" msgstr "Leverandørkonto" @@ -604,19 +572,10 @@ msgstr "Leverandørkonto" #: netbox/ipam/forms/model_forms.py:503 netbox/ipam/tables/ip.py:182 #: netbox/ipam/tables/ip.py:261 netbox/ipam/tables/ip.py:314 #: netbox/ipam/tables/ip.py:389 netbox/ipam/tables/ip.py:416 -#: netbox/ipam/tables/vlans.py:98 netbox/templates/circuits/circuit.html:34 -#: netbox/templates/circuits/virtualcircuit.html:43 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:21 -#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:19 -#: netbox/templates/dcim/cable.html:19 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/powerfeed.html:36 -#: netbox/templates/dcim/poweroutlet.html:40 +#: netbox/ipam/tables/vlans.py:98 netbox/templates/core/rq_task.html:81 +#: netbox/templates/core/system.html:19 #: netbox/templates/extras/inc/script_list_content.html:35 -#: netbox/templates/ipam/ipaddress.html:37 -#: netbox/templates/ipam/iprange.html:61 netbox/templates/ipam/prefix.html:69 -#: netbox/templates/ipam/vlan.html:48 netbox/users/forms/filtersets.py:36 -#: netbox/users/forms/model_forms.py:223 +#: netbox/users/forms/filtersets.py:36 netbox/users/forms/model_forms.py:223 #: netbox/virtualization/forms/bulk_edit.py:60 #: netbox/virtualization/forms/bulk_edit.py:83 #: netbox/virtualization/forms/bulk_import.py:55 @@ -677,21 +636,9 @@ msgstr "Status" #: netbox/ipam/forms/filtersets.py:155 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:297 netbox/ipam/forms/filtersets.py:350 #: netbox/ipam/forms/filtersets.py:459 netbox/ipam/forms/filtersets.py:552 -#: netbox/ipam/tables/ip.py:419 netbox/templates/circuits/circuit.html:48 -#: netbox/templates/circuits/circuitgroup.html:36 -#: netbox/templates/circuits/virtualcircuit.html:47 -#: netbox/templates/dcim/cable.html:27 netbox/templates/dcim/powerfeed.html:44 -#: netbox/templates/dcim/virtualdevicecontext.html:52 -#: netbox/templates/ipam/aggregate.html:30 netbox/templates/ipam/asn.html:33 -#: netbox/templates/ipam/asnrange.html:29 -#: netbox/templates/ipam/ipaddress.html:28 -#: netbox/templates/ipam/iprange.html:65 netbox/templates/ipam/prefix.html:29 -#: netbox/templates/ipam/routetarget.html:17 -#: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vlangroup.html:50 -#: netbox/templates/ipam/vrf.html:20 netbox/templates/tenancy/tenant.html:17 -#: netbox/tenancy/forms/filtersets.py:55 netbox/tenancy/forms/forms.py:26 -#: netbox/tenancy/forms/forms.py:50 netbox/tenancy/forms/model_forms.py:51 -#: netbox/tenancy/tables/columns.py:50 +#: netbox/ipam/tables/ip.py:419 netbox/tenancy/forms/filtersets.py:55 +#: netbox/tenancy/forms/forms.py:26 netbox/tenancy/forms/forms.py:50 +#: netbox/tenancy/forms/model_forms.py:51 netbox/tenancy/tables/columns.py:50 #: netbox/virtualization/forms/bulk_edit.py:66 #: netbox/virtualization/forms/bulk_edit.py:126 #: netbox/virtualization/forms/bulk_import.py:67 @@ -726,8 +673,7 @@ msgstr "Forpligtelseshastighed (Kbps)" #: netbox/circuits/forms/bulk_edit.py:159 #: netbox/circuits/forms/filtersets.py:217 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/templates/circuits/circuit.html:38 +#: netbox/circuits/forms/model_forms.py:165 #: netbox/wireless/forms/bulk_edit.py:121 #: netbox/wireless/forms/filtersets.py:137 #: netbox/wireless/forms/model_forms.py:166 @@ -746,7 +692,7 @@ msgid "Distance unit" msgstr "Afstandsenhed" #: netbox/circuits/forms/bulk_edit.py:173 -#: netbox/circuits/forms/model_forms.py:141 +#: netbox/circuits/forms/model_forms.py:170 msgid "Service Parameters" msgstr "Serviceparametre" @@ -772,7 +718,7 @@ msgstr "Serviceparametre" #: netbox/dcim/forms/filtersets.py:1864 netbox/dcim/forms/filtersets.py:1879 #: netbox/dcim/forms/filtersets.py:1890 netbox/dcim/forms/filtersets.py:1936 #: netbox/dcim/forms/filtersets.py:1972 netbox/dcim/tables/modules.py:25 -#: netbox/dcim/views.py:1679 netbox/extras/forms/bulk_edit.py:94 +#: netbox/dcim/views.py:1681 netbox/extras/forms/bulk_edit.py:94 #: netbox/extras/forms/filtersets.py:48 netbox/extras/forms/filtersets.py:147 #: netbox/extras/forms/filtersets.py:226 netbox/extras/forms/filtersets.py:243 #: netbox/extras/forms/filtersets.py:275 netbox/extras/forms/filtersets.py:306 @@ -795,12 +741,12 @@ msgstr "Attributter" #: netbox/circuits/forms/bulk_edit.py:175 #: netbox/circuits/forms/bulk_edit.py:317 -#: netbox/circuits/forms/model_forms.py:142 -#: netbox/circuits/forms/model_forms.py:238 -#: netbox/circuits/forms/model_forms.py:340 -#: netbox/dcim/forms/model_forms.py:157 netbox/dcim/forms/model_forms.py:198 -#: netbox/dcim/forms/model_forms.py:285 netbox/dcim/forms/model_forms.py:342 -#: netbox/dcim/forms/model_forms.py:883 netbox/dcim/forms/model_forms.py:1897 +#: netbox/circuits/forms/model_forms.py:171 +#: netbox/circuits/forms/model_forms.py:267 +#: netbox/circuits/forms/model_forms.py:369 +#: netbox/dcim/forms/model_forms.py:168 netbox/dcim/forms/model_forms.py:224 +#: netbox/dcim/forms/model_forms.py:311 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/forms/model_forms.py:909 netbox/dcim/forms/model_forms.py:1923 #: netbox/ipam/forms/bulk_edit.py:383 netbox/ipam/forms/model_forms.py:70 #: netbox/ipam/forms/model_forms.py:87 netbox/ipam/forms/model_forms.py:118 #: netbox/ipam/forms/model_forms.py:139 netbox/ipam/forms/model_forms.py:163 @@ -835,34 +781,9 @@ msgstr "Forpagtning" #: netbox/extras/tables/tables.py:97 netbox/ipam/tables/vlans.py:214 #: netbox/ipam/tables/vlans.py:241 netbox/netbox/forms/bulk_edit.py:79 #: netbox/netbox/forms/bulk_edit.py:91 netbox/netbox/forms/bulk_edit.py:103 -#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 -#: netbox/templates/circuits/circuit.html:69 -#: netbox/templates/circuits/circuitgroup.html:32 -#: netbox/templates/circuits/circuittype.html:26 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:83 -#: netbox/templates/circuits/provider.html:33 -#: netbox/templates/circuits/provideraccount.html:32 -#: netbox/templates/circuits/providernetwork.html:32 -#: netbox/templates/circuits/virtualcircuit.html:56 -#: netbox/templates/circuits/virtualcircuittermination.html:68 -#: netbox/templates/circuits/virtualcircuittype.html:26 -#: netbox/templates/core/datasource.html:58 -#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:40 -#: netbox/templates/dcim/consoleport.html:44 -#: netbox/templates/dcim/consoleserverport.html:44 -#: netbox/templates/dcim/devicebay.html:32 -#: netbox/templates/dcim/frontport.html:54 -#: netbox/templates/dcim/interface.html:69 -#: netbox/templates/dcim/inventoryitem.html:64 -#: netbox/templates/dcim/inventoryitemrole.html:22 -#: netbox/templates/dcim/macaddress.html:21 -#: netbox/templates/dcim/modulebay.html:42 -#: netbox/templates/dcim/powerfeed.html:40 -#: netbox/templates/dcim/poweroutlet.html:44 -#: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 -#: netbox/templates/dcim/rearport.html:54 -#: netbox/templates/dcim/virtualchassis.html:21 +#: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:85 +#: netbox/templates/core/plugin.html:80 #: netbox/templates/extras/configcontext.html:25 #: netbox/templates/extras/configcontextprofile.html:17 #: netbox/templates/extras/configtemplate.html:17 @@ -877,23 +798,6 @@ msgstr "Forpagtning" #: netbox/templates/extras/tableconfig.html:17 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:151 -#: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 -#: netbox/templates/ipam/asnrange.html:38 -#: netbox/templates/ipam/fhrpgroup.html:34 -#: netbox/templates/ipam/ipaddress.html:55 -#: netbox/templates/ipam/iprange.html:74 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/rir.html:26 netbox/templates/ipam/role.html:26 -#: netbox/templates/ipam/routetarget.html:21 -#: netbox/templates/ipam/service.html:52 -#: netbox/templates/ipam/servicetemplate.html:27 -#: netbox/templates/ipam/vlan.html:62 netbox/templates/ipam/vlangroup.html:34 -#: netbox/templates/ipam/vlantranslationpolicy.html:18 -#: netbox/templates/ipam/vlantranslationrule.html:26 -#: netbox/templates/ipam/vrf.html:33 netbox/templates/tenancy/contact.html:77 -#: netbox/templates/tenancy/contactgroup.html:25 -#: netbox/templates/tenancy/contactrole.html:22 -#: netbox/templates/tenancy/tenant.html:24 -#: netbox/templates/tenancy/tenantgroup.html:33 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:12 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:12 #: netbox/users/forms/bulk_edit.py:62 netbox/users/forms/bulk_edit.py:80 @@ -905,7 +809,7 @@ msgid "Description" msgstr "Beskrivelse" #: netbox/circuits/forms/bulk_edit.py:192 -#: netbox/circuits/forms/model_forms.py:170 +#: netbox/circuits/forms/model_forms.py:199 #: netbox/dcim/forms/bulk_import.py:1419 netbox/dcim/forms/bulk_import.py:1444 msgid "Termination type" msgstr "Afslutningstype" @@ -913,9 +817,9 @@ msgstr "Afslutningstype" #: netbox/circuits/forms/bulk_edit.py:195 #: netbox/circuits/forms/bulk_import.py:133 #: netbox/circuits/forms/filtersets.py:234 -#: netbox/circuits/forms/model_forms.py:173 +#: netbox/circuits/forms/model_forms.py:202 netbox/circuits/ui/panels.py:14 #: netbox/templates/circuits/inc/circuit_termination.html:6 -#: netbox/templates/dcim/cable.html:72 netbox/templates/dcim/cable.html:76 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:6 #: netbox/vpn/forms/bulk_import.py:99 netbox/vpn/forms/filtersets.py:87 msgid "Termination" msgstr "Opsigelse" @@ -937,26 +841,23 @@ msgid "Mark connected" msgstr "Marker tilsluttet" #: netbox/circuits/forms/bulk_edit.py:220 -#: netbox/circuits/forms/model_forms.py:184 +#: netbox/circuits/forms/model_forms.py:213 netbox/circuits/views.py:513 +#: netbox/dcim/views.py:3465 netbox/dcim/views.py:3566 #: netbox/templates/circuits/inc/circuit_termination_fields.html:55 -#: netbox/templates/dcim/frontport.html:118 -#: netbox/templates/dcim/interface.html:268 -#: netbox/templates/dcim/rearport.html:112 +#: netbox/templates/dcim/panels/interface_connection.html:92 msgid "Circuit Termination" msgstr "Kredsløbsafslutning" #: netbox/circuits/forms/bulk_edit.py:222 -#: netbox/circuits/forms/model_forms.py:186 +#: netbox/circuits/forms/model_forms.py:215 msgid "Termination Details" msgstr "Oplysninger om opsigelse" #: netbox/circuits/forms/bulk_edit.py:261 #: netbox/circuits/forms/bulk_import.py:188 #: netbox/circuits/forms/filtersets.py:314 -#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:666 -#: netbox/templates/circuits/circuitgroupassignment.html:34 +#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:692 #: netbox/templates/dcim/panels/virtual_chassis_members.html:11 -#: netbox/templates/dcim/virtualchassis.html:58 #: netbox/templates/dcim/virtualchassis_edit.html:68 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 #: netbox/templates/ipam/panels/fhrp_groups.html:12 @@ -971,7 +872,7 @@ msgstr "Prioritet" #: netbox/circuits/forms/filtersets.py:272 #: netbox/circuits/forms/filtersets.py:365 #: netbox/circuits/forms/filtersets.py:403 -#: netbox/circuits/forms/model_forms.py:321 +#: netbox/circuits/forms/model_forms.py:350 #: netbox/circuits/tables/virtual_circuits.py:51 #: netbox/circuits/tables/virtual_circuits.py:95 msgid "Provider network" @@ -980,13 +881,13 @@ msgstr "Leverandørnetværk" #: netbox/circuits/forms/bulk_edit.py:326 #: netbox/circuits/forms/bulk_import.py:253 #: netbox/circuits/forms/filtersets.py:393 -#: netbox/circuits/forms/model_forms.py:360 netbox/dcim/forms/bulk_edit.py:351 +#: netbox/circuits/forms/model_forms.py:389 netbox/dcim/forms/bulk_edit.py:351 #: netbox/dcim/forms/bulk_edit.py:1245 netbox/dcim/forms/bulk_edit.py:1681 #: netbox/dcim/forms/bulk_import.py:270 netbox/dcim/forms/bulk_import.py:1199 #: netbox/dcim/forms/filtersets.py:404 netbox/dcim/forms/filtersets.py:879 #: netbox/dcim/forms/filtersets.py:1902 netbox/dcim/forms/filtersets.py:1942 -#: netbox/dcim/forms/model_forms.py:267 netbox/dcim/forms/model_forms.py:1234 -#: netbox/dcim/forms/model_forms.py:1717 +#: netbox/dcim/forms/model_forms.py:293 netbox/dcim/forms/model_forms.py:1260 +#: netbox/dcim/forms/model_forms.py:1743 #: netbox/dcim/forms/object_import.py:182 netbox/dcim/tables/devices.py:173 #: netbox/dcim/tables/devices.py:1032 netbox/dcim/tables/devicetypes.py:318 #: netbox/dcim/tables/racks.py:118 netbox/extras/filtersets.py:734 @@ -1000,14 +901,10 @@ msgstr "Leverandørnetværk" #: netbox/ipam/forms/model_forms.py:253 netbox/ipam/forms/model_forms.py:678 #: netbox/ipam/tables/ip.py:208 netbox/ipam/tables/ip.py:265 #: netbox/ipam/tables/ip.py:318 netbox/ipam/tables/vlans.py:102 -#: netbox/templates/circuits/virtualcircuittermination.html:42 #: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:196 -#: netbox/templates/dcim/interface.html:298 -#: netbox/templates/dcim/inventoryitem.html:40 -#: netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:57 netbox/templates/ipam/prefix.html:73 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/dcim/panels/component_inventory_items.html:10 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:19 +#: netbox/templates/dcim/panels/interface_wireless.html:17 #: netbox/templates/wireless/panels/wirelesslink_interface.html:20 #: netbox/tenancy/forms/bulk_edit.py:136 #: netbox/tenancy/forms/filtersets.py:136 @@ -1103,22 +1000,19 @@ msgid "Operational role" msgstr "Operationel rolle" #: netbox/circuits/forms/bulk_import.py:258 -#: netbox/circuits/forms/model_forms.py:363 +#: netbox/circuits/forms/model_forms.py:392 #: netbox/circuits/tables/virtual_circuits.py:108 -#: netbox/dcim/forms/bulk_import.py:1330 netbox/dcim/forms/model_forms.py:1308 -#: netbox/dcim/forms/model_forms.py:1577 netbox/dcim/forms/model_forms.py:1758 -#: netbox/dcim/forms/model_forms.py:1793 netbox/dcim/forms/model_forms.py:1918 -#: netbox/dcim/tables/connections.py:66 netbox/dcim/tables/devices.py:1199 -#: netbox/ipam/forms/bulk_import.py:323 netbox/ipam/forms/model_forms.py:283 -#: netbox/ipam/forms/model_forms.py:292 netbox/ipam/tables/fhrp.py:61 -#: netbox/ipam/tables/ip.py:323 netbox/ipam/tables/vlans.py:145 +#: netbox/circuits/ui/panels.py:134 netbox/dcim/forms/bulk_import.py:1330 +#: netbox/dcim/forms/model_forms.py:1334 netbox/dcim/forms/model_forms.py:1603 +#: netbox/dcim/forms/model_forms.py:1784 netbox/dcim/forms/model_forms.py:1819 +#: netbox/dcim/forms/model_forms.py:1944 netbox/dcim/tables/connections.py:66 +#: netbox/dcim/tables/devices.py:1199 netbox/dcim/views.py:3457 +#: netbox/dcim/views.py:3560 netbox/ipam/forms/bulk_import.py:323 +#: netbox/ipam/forms/model_forms.py:283 netbox/ipam/forms/model_forms.py:292 +#: netbox/ipam/tables/fhrp.py:61 netbox/ipam/tables/ip.py:323 +#: netbox/ipam/tables/vlans.py:145 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 -#: netbox/templates/circuits/virtualcircuittermination.html:53 -#: netbox/templates/circuits/virtualcircuittermination.html:60 -#: netbox/templates/dcim/frontport.html:103 -#: netbox/templates/dcim/interface.html:27 -#: netbox/templates/dcim/interface.html:259 -#: netbox/templates/dcim/rearport.html:103 +#: netbox/templates/dcim/panels/interface_connection.html:83 #: netbox/templates/wireless/panels/wirelesslink_interface.html:12 #: netbox/virtualization/forms/model_forms.py:368 #: netbox/vpn/forms/bulk_import.py:302 netbox/vpn/forms/model_forms.py:434 @@ -1150,8 +1044,8 @@ msgstr "Grænseflade" #: netbox/dcim/forms/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1746 #: netbox/dcim/forms/filtersets.py:1790 netbox/dcim/forms/filtersets.py:1833 #: netbox/dcim/forms/filtersets.py:1865 netbox/dcim/forms/filtersets.py:1892 -#: netbox/dcim/forms/model_forms.py:197 netbox/dcim/forms/model_forms.py:259 -#: netbox/dcim/forms/model_forms.py:575 netbox/dcim/forms/model_forms.py:844 +#: netbox/dcim/forms/model_forms.py:223 netbox/dcim/forms/model_forms.py:285 +#: netbox/dcim/forms/model_forms.py:601 netbox/dcim/forms/model_forms.py:870 #: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:30 #: netbox/dcim/tables/racks.py:107 netbox/dcim/tables/racks.py:199 #: netbox/extras/filtersets.py:718 netbox/extras/forms/filtersets.py:404 @@ -1159,7 +1053,6 @@ msgstr "Grænseflade" #: netbox/ipam/forms/filtersets.py:481 netbox/ipam/forms/filtersets.py:549 #: netbox/templates/dcim/device_edit.html:32 #: netbox/templates/dcim/inc/cable_termination.html:12 -#: netbox/templates/dcim/powerpanel.html:26 #: netbox/virtualization/forms/filtersets.py:87 #: netbox/virtualization/forms/filtersets.py:113 #: netbox/wireless/forms/filtersets.py:99 @@ -1270,7 +1163,7 @@ msgstr "Kontakter" #: netbox/dcim/tables/devices.py:147 netbox/dcim/tables/sites.py:65 #: netbox/extras/filtersets.py:685 netbox/ipam/forms/bulk_edit.py:404 #: netbox/ipam/forms/filtersets.py:241 netbox/ipam/forms/filtersets.py:466 -#: netbox/ipam/forms/filtersets.py:559 netbox/templates/ipam/vlan.html:16 +#: netbox/ipam/forms/filtersets.py:559 netbox/ipam/ui/panels.py:195 #: netbox/virtualization/forms/filtersets.py:67 #: netbox/virtualization/forms/filtersets.py:147 #: netbox/virtualization/forms/model_forms.py:86 @@ -1302,8 +1195,6 @@ msgstr "Områdegruppe" #: netbox/circuits/tables/providers.py:61 #: netbox/circuits/tables/virtual_circuits.py:55 #: netbox/circuits/tables/virtual_circuits.py:99 -#: netbox/templates/circuits/circuit.html:22 -#: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Konto" @@ -1314,9 +1205,7 @@ msgstr "Termside" #: netbox/circuits/forms/filtersets.py:296 netbox/dcim/forms/bulk_edit.py:1540 #: netbox/extras/forms/model_forms.py:706 netbox/ipam/forms/filtersets.py:154 #: netbox/ipam/forms/filtersets.py:642 netbox/ipam/forms/model_forms.py:329 -#: netbox/templates/dcim/macaddress.html:25 -#: netbox/templates/extras/configcontext.html:36 -#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/ipam/ui/panels.py:121 netbox/templates/extras/configcontext.html:36 #: netbox/templates/ipam/vlan_edit.html:42 #: netbox/tenancy/forms/filtersets.py:116 #: netbox/users/forms/model_forms.py:375 @@ -1324,18 +1213,16 @@ msgid "Assignment" msgstr "Opgave" #: netbox/circuits/forms/filtersets.py:311 -#: netbox/circuits/forms/model_forms.py:250 +#: netbox/circuits/forms/model_forms.py:279 #: netbox/circuits/tables/circuits.py:187 netbox/dcim/forms/bulk_edit.py:118 #: netbox/dcim/forms/bulk_import.py:115 netbox/dcim/forms/model_forms.py:135 #: netbox/dcim/tables/sites.py:69 netbox/extras/forms/filtersets.py:600 #: netbox/ipam/filtersets.py:1034 netbox/ipam/forms/bulk_edit.py:423 #: netbox/ipam/forms/bulk_import.py:515 netbox/ipam/forms/model_forms.py:561 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/vlans.py:94 -#: netbox/templates/circuits/circuitgroupassignment.html:22 -#: netbox/templates/dcim/interface.html:359 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:8 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 #: netbox/templates/ipam/panels/fhrp_groups.html:9 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/tenant.html:20 #: netbox/tenancy/forms/bulk_edit.py:44 netbox/tenancy/forms/bulk_import.py:46 #: netbox/tenancy/forms/filtersets.py:63 #: netbox/tenancy/forms/filtersets.py:126 @@ -1361,23 +1248,38 @@ msgstr "Opgave" msgid "Group" msgstr "Gruppe" -#: netbox/circuits/forms/model_forms.py:237 -#: netbox/templates/circuits/circuitgroup.html:25 +#: netbox/circuits/forms/model_forms.py:53 +#: netbox/dcim/forms/model_forms.py:147 +msgid "Add ASNs" +msgstr "Tilføj ASN'er" + +#: netbox/circuits/forms/model_forms.py:58 +#: netbox/dcim/forms/model_forms.py:152 +msgid "Remove ASNs" +msgstr "Fjern ASN'er" + +#: netbox/circuits/forms/model_forms.py:79 +#: netbox/dcim/forms/model_forms.py:198 +#, python-brace-format +msgid "{count} ASNs currently assigned" +msgstr "{count} ASN'er, der i øjeblikket er tildelt" + +#: netbox/circuits/forms/model_forms.py:266 msgid "Circuit Group" msgstr "Kredsløbsgruppe" -#: netbox/circuits/forms/model_forms.py:257 +#: netbox/circuits/forms/model_forms.py:286 msgid "Circuit type" msgstr "Kredsløbstype" -#: netbox/circuits/forms/model_forms.py:268 +#: netbox/circuits/forms/model_forms.py:297 msgid "Group Assignment" msgstr "Gruppeopgave" #: netbox/circuits/models/base.py:18 netbox/dcim/models/cables.py:81 -#: netbox/dcim/models/device_component_templates.py:353 -#: netbox/dcim/models/device_component_templates.py:588 -#: netbox/dcim/models/device_component_templates.py:661 +#: netbox/dcim/models/device_component_templates.py:343 +#: netbox/dcim/models/device_component_templates.py:578 +#: netbox/dcim/models/device_component_templates.py:651 #: netbox/dcim/models/device_components.py:573 #: netbox/dcim/models/device_components.py:1156 #: netbox/dcim/models/device_components.py:1204 @@ -1414,8 +1316,8 @@ msgstr "Unikt kredsløbs-ID" #: netbox/dcim/models/modules.py:219 netbox/dcim/models/power.py:95 #: netbox/dcim/models/racks.py:301 netbox/dcim/models/racks.py:685 #: netbox/dcim/models/sites.py:163 netbox/dcim/models/sites.py:287 -#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:528 -#: netbox/ipam/models/ip.py:757 netbox/ipam/models/vlans.py:228 +#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:538 +#: netbox/ipam/models/ip.py:767 netbox/ipam/models/vlans.py:228 #: netbox/virtualization/models/clusters.py:70 #: netbox/virtualization/models/virtualmachines.py:80 #: netbox/vpn/models/l2vpn.py:36 netbox/vpn/models/tunnels.py:38 @@ -1535,7 +1437,7 @@ msgstr "kredsløbsafslutning" msgid "circuit terminations" msgstr "kredsløbsafslutninger" -#: netbox/circuits/models/circuits.py:360 +#: netbox/circuits/models/circuits.py:367 msgid "A circuit termination must attach to a terminating object." msgstr "En kredsløbsafslutning skal fastgøres til et afsluttende objekt." @@ -1639,7 +1541,7 @@ msgid "virtual circuits" msgstr "virtuelle kredsløb" #: netbox/circuits/models/virtual_circuits.py:135 netbox/ipam/models/ip.py:201 -#: netbox/ipam/models/ip.py:764 netbox/vpn/models/tunnels.py:109 +#: netbox/ipam/models/ip.py:774 netbox/vpn/models/tunnels.py:109 msgid "role" msgstr "rolle" @@ -1687,30 +1589,13 @@ msgstr "virtuelle kredsløbsafslutninger" #: netbox/ipam/tables/vlans.py:33 netbox/ipam/tables/vlans.py:86 #: netbox/ipam/tables/vlans.py:205 netbox/ipam/tables/vrfs.py:26 #: netbox/ipam/tables/vrfs.py:65 netbox/netbox/tables/tables.py:325 -#: netbox/netbox/ui/panels.py:198 netbox/netbox/ui/panels.py:207 -#: netbox/templates/circuits/circuitgroup.html:28 -#: netbox/templates/circuits/circuittype.html:22 -#: netbox/templates/circuits/provideraccount.html:28 -#: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/circuits/virtualcircuittype.html:22 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:17 +#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 #: netbox/templates/core/plugin.html:54 #: netbox/templates/core/rq_worker.html:43 -#: netbox/templates/dcim/consoleport.html:28 -#: netbox/templates/dcim/consoleserverport.html:28 -#: netbox/templates/dcim/devicebay.html:24 -#: netbox/templates/dcim/frontport.html:28 #: netbox/templates/dcim/inc/interface_vlans_table.html:5 #: netbox/templates/dcim/inc/panels/inventory_items.html:18 -#: netbox/templates/dcim/interface.html:38 -#: netbox/templates/dcim/interface.html:240 -#: netbox/templates/dcim/inventoryitem.html:28 -#: netbox/templates/dcim/inventoryitemrole.html:18 -#: netbox/templates/dcim/modulebay.html:30 -#: netbox/templates/dcim/poweroutlet.html:28 -#: netbox/templates/dcim/powerport.html:28 -#: netbox/templates/dcim/rearport.html:28 -#: netbox/templates/dcim/virtualdevicecontext.html:18 +#: netbox/templates/dcim/panels/component_inventory_items.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:64 #: netbox/templates/extras/configcontext.html:13 #: netbox/templates/extras/configcontextprofile.html:13 #: netbox/templates/extras/configtemplate.html:13 @@ -1724,18 +1609,6 @@ msgstr "virtuelle kredsløbsafslutninger" #: netbox/templates/extras/savedfilter.html:13 #: netbox/templates/extras/tableconfig.html:13 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 -#: netbox/templates/ipam/asnrange.html:15 -#: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 -#: netbox/templates/ipam/role.html:22 -#: netbox/templates/ipam/routetarget.html:13 -#: netbox/templates/ipam/service.html:26 -#: netbox/templates/ipam/servicetemplate.html:15 -#: netbox/templates/ipam/vlan.html:35 netbox/templates/ipam/vlangroup.html:30 -#: netbox/templates/ipam/vlantranslationpolicy.html:14 -#: netbox/templates/tenancy/contact.html:35 -#: netbox/templates/tenancy/contactgroup.html:21 -#: netbox/templates/tenancy/contactrole.html:18 -#: netbox/templates/tenancy/tenantgroup.html:29 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:8 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:8 #: netbox/tenancy/tables/contacts.py:38 netbox/tenancy/tables/contacts.py:53 @@ -1765,17 +1638,13 @@ msgstr "Navn" #: netbox/circuits/tables/virtual_circuits.py:27 #: netbox/netbox/navigation/menu.py:278 netbox/netbox/navigation/menu.py:282 #: netbox/netbox/navigation/menu.py:284 -#: netbox/templates/circuits/provider.html:57 -#: netbox/templates/circuits/provideraccount.html:48 -#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Kredsløb" #: netbox/circuits/tables/circuits.py:53 #: netbox/circuits/tables/virtual_circuits.py:42 -#: netbox/templates/circuits/circuit.html:26 -#: netbox/templates/circuits/virtualcircuit.html:35 -#: netbox/templates/dcim/interface.html:192 +#: netbox/circuits/ui/panels.py:75 netbox/circuits/ui/panels.py:118 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:15 msgid "Circuit ID" msgstr "Kredsløbs ID" @@ -1789,13 +1658,11 @@ msgid "Side Z" msgstr "Side Z" #: netbox/circuits/tables/circuits.py:78 -#: netbox/templates/circuits/circuit.html:65 msgid "Commit Rate" msgstr "Forpligtelsesrate" #: netbox/circuits/tables/circuits.py:85 netbox/dcim/forms/filtersets.py:1973 -#: netbox/templates/tenancy/contact.html:94 -#: netbox/tenancy/tables/contacts.py:67 +#: netbox/tenancy/tables/contacts.py:67 netbox/tenancy/views.py:416 msgid "Assignments" msgstr "Opgaver" @@ -1817,10 +1684,7 @@ msgid "Site Group" msgstr "Områdegruppe" #: netbox/circuits/tables/circuits.py:145 -#: netbox/templates/circuits/providernetwork.html:17 -#: netbox/templates/circuits/virtualcircuit.html:27 -#: netbox/templates/circuits/virtualcircuittermination.html:30 -#: netbox/templates/dcim/interface.html:188 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:11 msgid "Provider Network" msgstr "Leverandørnetværk" @@ -1836,8 +1700,7 @@ msgstr "Kontoantal" msgid "ASN Count" msgstr "ASN antal" -#: netbox/circuits/tables/virtual_circuits.py:64 -#: netbox/templates/circuits/virtualcircuit.html:87 +#: netbox/circuits/tables/virtual_circuits.py:64 netbox/circuits/views.py:802 #: netbox/vpn/tables/tunnels.py:59 netbox/vpn/views.py:139 #: netbox/vpn/views.py:685 msgid "Terminations" @@ -1866,9 +1729,9 @@ msgstr "Opsigelser" #: netbox/dcim/forms/filtersets.py:1868 netbox/dcim/forms/filtersets.py:1880 #: netbox/dcim/forms/filtersets.py:1895 netbox/dcim/forms/filtersets.py:1937 #: netbox/dcim/forms/filtersets.py:2032 netbox/dcim/forms/filtersets.py:2056 -#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:748 -#: netbox/dcim/forms/model_forms.py:963 netbox/dcim/forms/model_forms.py:1375 -#: netbox/dcim/forms/model_forms.py:1869 netbox/dcim/forms/model_forms.py:1942 +#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:774 +#: netbox/dcim/forms/model_forms.py:989 netbox/dcim/forms/model_forms.py:1401 +#: netbox/dcim/forms/model_forms.py:1895 netbox/dcim/forms/model_forms.py:1968 #: netbox/dcim/forms/object_create.py:207 netbox/dcim/tables/connections.py:23 #: netbox/dcim/tables/connections.py:42 netbox/dcim/tables/connections.py:61 #: netbox/dcim/tables/devices.py:293 netbox/dcim/tables/devices.py:388 @@ -1880,24 +1743,11 @@ msgstr "Opsigelser" #: netbox/dcim/tables/modules.py:82 netbox/extras/forms/filtersets.py:405 #: netbox/ipam/forms/bulk_import.py:309 netbox/ipam/forms/filtersets.py:649 #: netbox/ipam/forms/model_forms.py:325 netbox/ipam/tables/vlans.py:156 -#: netbox/templates/circuits/virtualcircuittermination.html:56 -#: netbox/templates/dcim/consoleport.html:20 -#: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device_edit.html:12 -#: netbox/templates/dcim/devicebay.html:20 -#: netbox/templates/dcim/devicebay.html:48 -#: netbox/templates/dcim/frontport.html:20 -#: netbox/templates/dcim/interface.html:30 -#: netbox/templates/dcim/interface.html:236 -#: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/modulebay.html:20 +#: netbox/templates/dcim/panels/installed_device.html:9 +#: netbox/templates/dcim/panels/interface_connection.html:60 #: netbox/templates/dcim/panels/virtual_chassis_members.html:8 -#: netbox/templates/dcim/poweroutlet.html:20 -#: netbox/templates/dcim/powerport.html:20 -#: netbox/templates/dcim/rearport.html:20 -#: netbox/templates/dcim/virtualchassis.html:55 #: netbox/templates/dcim/virtualchassis_edit.html:63 -#: netbox/templates/dcim/virtualdevicecontext.html:22 #: netbox/templates/wireless/panels/wirelesslink_interface.html:8 #: netbox/virtualization/filtersets.py:160 #: netbox/virtualization/forms/bulk_edit.py:108 @@ -1915,6 +1765,15 @@ msgstr "Opsigelser" msgid "Device" msgstr "Enhed" +#: netbox/circuits/ui/panels.py:37 netbox/netbox/navigation/menu.py:301 +msgid "Group Assignments" +msgstr "Gruppeopgaver" + +#: netbox/circuits/ui/panels.py:46 netbox/ipam/ui/panels.py:36 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Tildel gruppe" + #: netbox/core/api/views.py:51 msgid "This user does not have permission to synchronize this data source." msgstr "Denne bruger har ikke tilladelse til at synkronisere denne datakilde." @@ -1961,14 +1820,14 @@ msgid "Syncing" msgstr "Synkroniserer" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:43 netbox/templates/core/job.html:59 +#: netbox/core/tables/jobs.py:43 msgid "Completed" msgstr "Afsluttet" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35 #: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259 -#: netbox/dcim/choices.py:1992 netbox/dcim/choices.py:2082 +#: netbox/dcim/choices.py:2013 netbox/dcim/choices.py:2103 #: netbox/virtualization/choices.py:48 msgid "Failed" msgstr "Mislykkedes" @@ -1992,7 +1851,6 @@ msgstr "Afventer" #: netbox/core/choices.py:55 netbox/core/constants.py:24 #: netbox/core/tables/jobs.py:34 netbox/core/tables/tasks.py:39 -#: netbox/templates/core/job.html:46 msgid "Scheduled" msgstr "Planlagt" @@ -2031,10 +1889,9 @@ msgstr "30 dage" #: netbox/core/choices.py:102 netbox/core/tables/jobs.py:31 #: netbox/core/tables/tasks.py:80 netbox/extras/tables/tables.py:436 #: netbox/extras/tables/tables.py:742 -#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision.html:23 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:42 netbox/templates/core/rq_task.html:16 -#: netbox/templates/core/rq_task.html:73 +#: netbox/templates/core/rq_task.html:16 netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 #: netbox/templates/extras/journalentry.html:22 @@ -2056,7 +1913,6 @@ msgid "Finished" msgstr "Færdig" #: netbox/core/constants.py:22 netbox/core/tables/jobs.py:40 -#: netbox/templates/core/job.html:55 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Startet" @@ -2088,13 +1944,12 @@ msgid "Warning" msgstr "Advarsel" #: netbox/core/constants.py:33 netbox/netbox/tables/columns.py:589 -#: netbox/templates/core/job.html:26 msgid "Error" msgstr "Fejl" #: netbox/core/data_backends.py:46 netbox/core/tables/plugins.py:54 #: netbox/templates/core/plugin.html:88 -#: netbox/templates/dcim/interface.html:291 +#: netbox/templates/dcim/panels/interface_wireless.html:10 msgid "Local" msgstr "Lokalt" @@ -2153,7 +2008,7 @@ msgid "User name" msgstr "Brugernavn" #: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47 -#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2040 +#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2061 #: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386 #: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712 #: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233 @@ -2164,8 +2019,6 @@ msgstr "Brugernavn" #: netbox/extras/tables/tables.py:188 netbox/extras/tables/tables.py:319 #: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:520 #: netbox/netbox/preferences.py:46 netbox/netbox/preferences.py:71 -#: netbox/templates/core/datasource.html:42 -#: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 #: netbox/templates/extras/eventrule.html:17 #: netbox/templates/extras/savedfilter.html:25 @@ -2179,7 +2032,7 @@ msgid "Enabled" msgstr "Aktiveret" #: netbox/core/forms/bulk_edit.py:30 netbox/core/forms/filtersets.py:54 -#: netbox/core/tables/data.py:31 netbox/templates/core/datasource.html:50 +#: netbox/core/tables/data.py:31 netbox/core/ui/panels.py:12 msgid "Sync interval" msgstr "Synkroniseringsinterval" @@ -2193,17 +2046,17 @@ msgstr "Synkroniseringsinterval" msgid "Parameters" msgstr "Parametre" -#: netbox/core/forms/bulk_edit.py:37 netbox/templates/core/datasource.html:72 +#: netbox/core/forms/bulk_edit.py:37 netbox/core/ui/panels.py:22 msgid "Ignore rules" msgstr "Ignorer regler" #: netbox/core/forms/filtersets.py:33 netbox/core/forms/model_forms.py:100 -#: netbox/extras/forms/model_forms.py:280 +#: netbox/core/ui/panels.py:7 netbox/extras/forms/model_forms.py:280 #: netbox/extras/forms/model_forms.py:613 #: netbox/extras/forms/model_forms.py:702 #: netbox/extras/forms/model_forms.py:755 netbox/extras/tables/tables.py:230 #: netbox/extras/tables/tables.py:600 netbox/extras/tables/tables.py:630 -#: netbox/extras/tables/tables.py:672 netbox/templates/core/datasource.html:31 +#: netbox/extras/tables/tables.py:672 #: netbox/templates/core/inc/datafile_panel.html:7 #: netbox/templates/extras/configtemplate.html:37 #: netbox/templates/extras/object_render_config.html:19 @@ -2230,15 +2083,14 @@ msgstr "Skabelse" #: netbox/extras/forms/filtersets.py:580 netbox/extras/tables/tables.py:283 #: netbox/extras/tables/tables.py:350 netbox/extras/tables/tables.py:376 #: netbox/extras/tables/tables.py:395 netbox/extras/tables/tables.py:427 -#: netbox/extras/tables/tables.py:747 netbox/templates/core/job.html:11 -#: netbox/templates/core/objectchange.html:52 +#: netbox/extras/tables/tables.py:747 #: netbox/templates/extras/tableconfig.html:21 #: netbox/tenancy/tables/contacts.py:84 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Objekttype" #: netbox/core/forms/filtersets.py:95 netbox/core/tables/jobs.py:46 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:61 +#: netbox/core/ui/panels.py:65 netbox/templates/core/rq_task.html:61 msgid "Queue" msgstr "Kø" @@ -2275,11 +2127,10 @@ msgid "Completed before" msgstr "Færdiggjort før" #: netbox/core/forms/filtersets.py:141 netbox/core/forms/filtersets.py:170 -#: netbox/dcim/forms/bulk_edit.py:458 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/model_forms.py:336 netbox/extras/forms/filtersets.py:575 -#: netbox/extras/forms/filtersets.py:595 netbox/extras/tables/tables.py:403 -#: netbox/extras/tables/tables.py:443 -#: netbox/templates/core/objectchange.html:36 +#: netbox/core/ui/panels.py:73 netbox/dcim/forms/bulk_edit.py:458 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:362 +#: netbox/extras/forms/filtersets.py:575 netbox/extras/forms/filtersets.py:595 +#: netbox/extras/tables/tables.py:403 netbox/extras/tables/tables.py:443 #: netbox/templates/extras/savedfilter.html:21 #: netbox/templates/extras/tableconfig.html:29 #: netbox/templates/inc/user_menu.html:31 netbox/users/filtersets.py:135 @@ -2292,7 +2143,6 @@ msgstr "Bruger" #: netbox/core/forms/filtersets.py:149 netbox/core/tables/change_logging.py:16 #: netbox/core/tables/jobs.py:72 netbox/extras/tables/tables.py:785 #: netbox/extras/tables/tables.py:840 -#: netbox/templates/core/objectchange.html:32 msgid "Time" msgstr "Tid" @@ -2306,21 +2156,19 @@ msgstr "Før" #: netbox/core/forms/filtersets.py:163 netbox/core/tables/change_logging.py:30 #: netbox/extras/forms/model_forms.py:490 -#: netbox/templates/core/objectchange.html:46 #: netbox/templates/extras/eventrule.html:71 msgid "Action" msgstr "Handling" #: netbox/core/forms/model_forms.py:55 netbox/core/tables/data.py:57 -#: netbox/templates/core/datafile.html:21 #: netbox/templates/extras/report/base.html:33 #: netbox/templates/extras/script/base.html:32 msgid "Source" msgstr "Kilde" #: netbox/core/forms/model_forms.py:57 -#: netbox/templates/core/datasource.html:14 -#: netbox/templates/core/datasource.html:20 +#: netbox/templates/core/datasource.html:10 +#: netbox/templates/core/datasource.html:16 #: netbox/utilities/templatetags/buttons.py:156 msgid "Sync" msgstr "Synkroniser" @@ -2346,7 +2194,7 @@ msgstr "Skal uploade en fil eller vælge en datafil, der skal synkroniseres" msgid "Rack Elevations" msgstr "Rackhøjder" -#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1911 +#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1932 #: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340 #: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144 #: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320 @@ -2489,13 +2337,13 @@ msgid "Config revision #{id}" msgstr "Konfigurationsrevision #{id}" #: netbox/core/models/data.py:45 netbox/dcim/models/cables.py:50 -#: netbox/dcim/models/device_component_templates.py:210 -#: netbox/dcim/models/device_component_templates.py:245 -#: netbox/dcim/models/device_component_templates.py:281 -#: netbox/dcim/models/device_component_templates.py:346 -#: netbox/dcim/models/device_component_templates.py:437 -#: netbox/dcim/models/device_component_templates.py:583 -#: netbox/dcim/models/device_component_templates.py:656 +#: netbox/dcim/models/device_component_templates.py:200 +#: netbox/dcim/models/device_component_templates.py:235 +#: netbox/dcim/models/device_component_templates.py:271 +#: netbox/dcim/models/device_component_templates.py:336 +#: netbox/dcim/models/device_component_templates.py:427 +#: netbox/dcim/models/device_component_templates.py:573 +#: netbox/dcim/models/device_component_templates.py:646 #: netbox/dcim/models/device_components.py:370 #: netbox/dcim/models/device_components.py:397 #: netbox/dcim/models/device_components.py:428 @@ -2509,15 +2357,14 @@ msgstr "Konfigurationsrevision #{id}" msgid "type" msgstr "type" -#: netbox/core/models/data.py:50 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:183 netbox/extras/tables/tables.py:850 -#: netbox/templates/core/datasource.html:62 -#: netbox/templates/core/plugin.html:66 +#: netbox/core/models/data.py:50 netbox/core/ui/panels.py:17 +#: netbox/extras/choices.py:37 netbox/extras/models/models.py:183 +#: netbox/extras/tables/tables.py:850 netbox/templates/core/plugin.html:66 msgid "URL" msgstr "URL" #: netbox/core/models/data.py:60 -#: netbox/dcim/models/device_component_templates.py:442 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:605 #: netbox/extras/models/models.py:81 netbox/extras/models/models.py:319 #: netbox/extras/models/models.py:507 netbox/extras/models/models.py:586 @@ -2592,7 +2439,7 @@ msgstr "sti" msgid "File path relative to the data source's root" msgstr "Filsti i forhold til datakildens rod" -#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:509 +#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:519 msgid "size" msgstr "størrelse" @@ -2740,27 +2587,24 @@ msgid "Full Name" msgstr "Fulde navn" #: netbox/core/tables/change_logging.py:38 netbox/core/tables/jobs.py:23 -#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:286 -#: netbox/extras/tables/tables.py:379 netbox/extras/tables/tables.py:398 -#: netbox/extras/tables/tables.py:430 netbox/extras/tables/tables.py:514 -#: netbox/extras/tables/tables.py:583 netbox/extras/tables/tables.py:752 -#: netbox/extras/tables/tables.py:793 netbox/extras/tables/tables.py:847 -#: netbox/netbox/tables/tables.py:343 -#: netbox/templates/core/objectchange.html:58 +#: netbox/core/ui/panels.py:83 netbox/extras/choices.py:41 +#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:379 +#: netbox/extras/tables/tables.py:398 netbox/extras/tables/tables.py:430 +#: netbox/extras/tables/tables.py:514 netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:752 netbox/extras/tables/tables.py:793 +#: netbox/extras/tables/tables.py:847 netbox/netbox/tables/tables.py:343 #: netbox/templates/extras/eventrule.html:78 #: netbox/templates/extras/journalentry.html:18 #: netbox/tenancy/tables/contacts.py:87 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "Objekt" -#: netbox/core/tables/change_logging.py:43 -#: netbox/templates/core/objectchange.html:74 +#: netbox/core/tables/change_logging.py:43 netbox/core/ui/panels.py:89 msgid "Request ID" msgstr "Anmodnings-ID" #: netbox/core/tables/change_logging.py:46 netbox/core/tables/jobs.py:79 #: netbox/extras/tables/tables.py:796 netbox/extras/tables/tables.py:853 -#: netbox/templates/core/objectchange.html:68 msgid "Message" msgstr "Besked" @@ -2773,11 +2617,11 @@ msgstr "Er aktiv" msgid "Last Synced" msgstr "Sidst synkroniseret" -#: netbox/core/tables/data.py:37 netbox/templates/core/datasource.html:118 +#: netbox/core/tables/data.py:37 msgid "Files" msgstr "filer" -#: netbox/core/tables/data.py:61 netbox/templates/core/datafile.html:25 +#: netbox/core/tables/data.py:61 msgid "Path" msgstr "Sti" @@ -2801,7 +2645,7 @@ msgstr "ID" msgid "Interval" msgstr "Intervaller" -#: netbox/core/tables/jobs.py:49 +#: netbox/core/tables/jobs.py:49 netbox/core/views.py:255 msgid "Log Entries" msgstr "Logindgange" @@ -2821,7 +2665,7 @@ msgstr "Ingen logposter" msgid "Version" msgstr "Udgave" -#: netbox/core/tables/plugins.py:21 netbox/templates/core/datafile.html:32 +#: netbox/core/tables/plugins.py:21 msgid "Last Updated" msgstr "Senest opdateret" @@ -2917,7 +2761,61 @@ msgstr "PID" msgid "No workers found" msgstr "Ingen arbejdere fundet" -#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:447 +#: netbox/core/ui/panels.py:13 +msgid "Last synced" +msgstr "Sidst synkroniseret" + +#: netbox/core/ui/panels.py:29 +msgid "Backend" +msgstr "Backend" + +#: netbox/core/ui/panels.py:33 netbox/extras/tables/tables.py:234 +#: netbox/extras/tables/tables.py:604 netbox/extras/tables/tables.py:634 +#: netbox/extras/tables/tables.py:676 +#: netbox/templates/core/inc/datafile_panel.html:4 +#: netbox/templates/core/inc/datafile_panel.html:17 +#: netbox/templates/extras/configtemplate.html:47 +#: netbox/templates/extras/object_render_config.html:23 +#: netbox/templates/generic/bulk_import.html:35 +msgid "Data File" +msgstr "Datafiler" + +#: netbox/core/ui/panels.py:38 +msgid "SHA256 hash" +msgstr "SHA256-hash" + +#: netbox/core/ui/panels.py:43 +msgid "Content" +msgstr "Indhold" + +#: netbox/core/ui/panels.py:47 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 +msgid "Job" +msgstr "Job" + +#: netbox/core/ui/panels.py:50 netbox/core/ui/panels.py:79 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 +#: netbox/extras/forms/filtersets.py:335 +#: netbox/extras/forms/model_forms.py:338 +#: netbox/extras/forms/model_forms.py:398 +#: netbox/extras/forms/model_forms.py:435 +#: netbox/tenancy/forms/filtersets.py:121 +msgid "Object type" +msgstr "Objekttype" + +#: netbox/core/ui/panels.py:56 +msgid "Created by" +msgstr "Oprettet af" + +#: netbox/core/ui/panels.py:60 +msgid "Scheduling" +msgstr "Planlægning" + +#: netbox/core/ui/panels.py:69 netbox/users/ui/panels.py:53 +msgid "Change" +msgstr "Ændre" + +#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Job {job_id} ikke fundet" @@ -2927,55 +2825,63 @@ msgstr "Job {job_id} ikke fundet" msgid "Job {id} not found." msgstr "Job {id} ikke fundet." -#: netbox/core/views.py:95 +#: netbox/core/views.py:125 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Jobnummer i kø{id} at synkronisere {datasource}" -#: netbox/core/views.py:199 netbox/templates/extras/htmx/script_result.html:43 +#: netbox/core/views.py:237 netbox/extras/forms/filtersets.py:179 +#: netbox/extras/forms/filtersets.py:380 netbox/extras/forms/filtersets.py:403 +#: netbox/extras/forms/filtersets.py:499 +#: netbox/extras/forms/model_forms.py:696 +#: netbox/templates/extras/eventrule.html:84 +msgid "Data" +msgstr "Data" + +#: netbox/core/views.py:248 netbox/templates/extras/htmx/script_result.html:43 msgid "Log" msgstr "Log" -#: netbox/core/views.py:383 +#: netbox/core/views.py:467 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Gendannet konfigurationsrevision #{id}" -#: netbox/core/views.py:486 +#: netbox/core/views.py:570 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Job {id} er blevet slettet." -#: netbox/core/views.py:488 +#: netbox/core/views.py:572 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Fejl ved sletning af job {id}: {error}" -#: netbox/core/views.py:497 +#: netbox/core/views.py:581 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Job {id} er blevet sat i kø igen." -#: netbox/core/views.py:506 +#: netbox/core/views.py:590 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Job {id} er blevet sat i kø." -#: netbox/core/views.py:515 +#: netbox/core/views.py:599 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Job {id} er blevet stoppet." -#: netbox/core/views.py:517 +#: netbox/core/views.py:601 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Det lykkedes ikke at stoppe jobbet {id}" -#: netbox/core/views.py:671 +#: netbox/core/views.py:755 msgid "Plugins catalog could not be loaded" msgstr "Plugin-kataloget kunne ikke indlæses" -#: netbox/core/views.py:707 +#: netbox/core/views.py:791 #, python-brace-format msgid "Plugin {name} not found" msgstr "Plugin {name} ikke fundet" @@ -2998,7 +2904,7 @@ msgstr "Interface-tilstand understøtter ikke mærkede vlans" msgid "Position (U)" msgstr "Position (U)" -#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:47 +#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:49 msgid "Facility ID" msgstr "Anlægs-id" @@ -3025,8 +2931,8 @@ msgid "Staging" msgstr "Iscenesættelse" #: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208 -#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1934 -#: netbox/dcim/choices.py:2083 netbox/virtualization/choices.py:23 +#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1955 +#: netbox/dcim/choices.py:2104 netbox/virtualization/choices.py:23 #: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282 msgid "Decommissioning" msgstr "Nedlæggelse" @@ -3092,7 +2998,7 @@ msgstr "Forældet" msgid "Millimeters" msgstr "Millimeter" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1956 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1977 msgid "Inches" msgstr "Tommer" @@ -3120,21 +3026,17 @@ msgstr "Forældet" #: netbox/dcim/forms/bulk_import.py:1211 netbox/dcim/forms/filtersets.py:265 #: netbox/dcim/forms/filtersets.py:780 netbox/dcim/forms/filtersets.py:796 #: netbox/dcim/forms/model_forms.py:93 netbox/dcim/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:188 netbox/dcim/forms/model_forms.py:514 -#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1709 +#: netbox/dcim/forms/model_forms.py:214 netbox/dcim/forms/model_forms.py:540 +#: netbox/dcim/forms/model_forms.py:561 netbox/dcim/forms/model_forms.py:1252 +#: netbox/dcim/forms/model_forms.py:1735 #: netbox/dcim/forms/object_import.py:177 netbox/dcim/tables/devices.py:702 #: netbox/dcim/tables/devices.py:737 netbox/dcim/tables/devices.py:965 #: netbox/dcim/tables/devices.py:1052 netbox/dcim/tables/devices.py:1205 #: netbox/ipam/forms/bulk_import.py:601 netbox/ipam/forms/model_forms.py:758 #: netbox/ipam/tables/fhrp.py:56 netbox/ipam/tables/ip.py:329 #: netbox/ipam/tables/services.py:42 netbox/netbox/tables/tables.py:329 -#: netbox/netbox/ui/panels.py:206 netbox/templates/dcim/interface.html:113 -#: netbox/templates/ipam/service.html:30 -#: netbox/templates/tenancy/contactgroup.html:29 -#: netbox/templates/tenancy/tenantgroup.html:37 -#: netbox/tenancy/forms/bulk_edit.py:33 netbox/tenancy/forms/bulk_edit.py:62 -#: netbox/tenancy/forms/bulk_import.py:31 +#: netbox/netbox/ui/panels.py:207 netbox/tenancy/forms/bulk_edit.py:33 +#: netbox/tenancy/forms/bulk_edit.py:62 netbox/tenancy/forms/bulk_import.py:31 #: netbox/tenancy/forms/bulk_import.py:64 #: netbox/tenancy/forms/model_forms.py:26 #: netbox/tenancy/forms/model_forms.py:67 @@ -3168,7 +3070,7 @@ msgid "Rear" msgstr "Bageste" #: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258 -#: netbox/dcim/choices.py:2081 netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:2102 netbox/virtualization/choices.py:47 msgid "Staged" msgstr "Iscenesat" @@ -3201,7 +3103,7 @@ msgid "Top to bottom" msgstr "Top til bund" #: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280 -#: netbox/dcim/choices.py:1566 +#: netbox/dcim/choices.py:1587 msgid "Passive" msgstr "Passiv" @@ -3230,8 +3132,8 @@ msgid "Proprietary" msgstr "Proprietær" #: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853 -#: netbox/dcim/choices.py:1478 netbox/dcim/choices.py:1480 -#: netbox/dcim/choices.py:1716 netbox/dcim/choices.py:1718 +#: netbox/dcim/choices.py:1499 netbox/dcim/choices.py:1501 +#: netbox/dcim/choices.py:1737 netbox/dcim/choices.py:1739 #: netbox/netbox/navigation/menu.py:212 msgid "Other" msgstr "Andet" @@ -3244,348 +3146,350 @@ msgstr "ITA/International" msgid "Physical" msgstr "Fysisk" -#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1153 +#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1162 msgid "Virtual" msgstr "Virtuel" -#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1355 +#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 -#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125 -#: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150 -#: netbox/netbox/navigation/menu.py:154 -#: netbox/templates/dcim/interface.html:285 +#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1151 +#: netbox/dcim/forms/model_forms.py:1615 netbox/dcim/ui/panels.py:546 +#: netbox/netbox/navigation/menu.py:150 netbox/netbox/navigation/menu.py:154 msgid "Wireless" msgstr "Trådløs" -#: netbox/dcim/choices.py:1151 +#: netbox/dcim/choices.py:1160 msgid "Virtual interfaces" msgstr "Virtuelle grænseflader" -#: netbox/dcim/choices.py:1154 netbox/dcim/forms/bulk_edit.py:1399 -#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107 -#: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:117 +#: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 +#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1133 +#: netbox/dcim/tables/devices.py:741 #: netbox/virtualization/forms/bulk_edit.py:177 #: netbox/virtualization/forms/bulk_import.py:171 #: netbox/virtualization/tables/virtualmachines.py:137 msgid "Bridge" msgstr "Bro" -#: netbox/dcim/choices.py:1155 +#: netbox/dcim/choices.py:1164 msgid "Link Aggregation Group (LAG)" msgstr "Link Aggregation Group (LAG)" -#: netbox/dcim/choices.py:1159 +#: netbox/dcim/choices.py:1168 msgid "FastEthernet (100 Mbps)" msgstr "Fast Ethernet (100 Mbps)" -#: netbox/dcim/choices.py:1168 +#: netbox/dcim/choices.py:1177 msgid "GigabitEthernet (1 Gbps)" msgstr "GigabitEthernet (1 Gbps)" -#: netbox/dcim/choices.py:1186 +#: netbox/dcim/choices.py:1195 msgid "2.5/5 Gbps Ethernet" msgstr "2,5/5 Gbps Ethernet" -#: netbox/dcim/choices.py:1193 +#: netbox/dcim/choices.py:1202 msgid "10 Gbps Ethernet" msgstr "10 Gbps Ethernet" -#: netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1218 msgid "25 Gbps Ethernet" msgstr "25 Gbps Ethernet" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1228 msgid "40 Gbps Ethernet" msgstr "40 Gbps Ethernet" -#: netbox/dcim/choices.py:1230 +#: netbox/dcim/choices.py:1239 msgid "50 Gbps Ethernet" msgstr "50 Gbps Ethernet" -#: netbox/dcim/choices.py:1240 +#: netbox/dcim/choices.py:1249 msgid "100 Gbps Ethernet" msgstr "100 Gbps Ethernet" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1270 msgid "200 Gbps Ethernet" msgstr "200 Gbps Ethernet" -#: netbox/dcim/choices.py:1275 +#: netbox/dcim/choices.py:1284 msgid "400 Gbps Ethernet" msgstr "400 Gbps Ethernet" -#: netbox/dcim/choices.py:1293 +#: netbox/dcim/choices.py:1302 msgid "800 Gbps Ethernet" msgstr "800 Gbps Ethernet" -#: netbox/dcim/choices.py:1302 +#: netbox/dcim/choices.py:1311 +msgid "1.6 Tbps Ethernet" +msgstr "1,6 Tbps Ethernet" + +#: netbox/dcim/choices.py:1319 msgid "Pluggable transceivers" msgstr "Pluggbare transceivere" -#: netbox/dcim/choices.py:1339 +#: netbox/dcim/choices.py:1359 msgid "Backplane Ethernet" msgstr "Ethernet-bagpanel" -#: netbox/dcim/choices.py:1371 +#: netbox/dcim/choices.py:1392 msgid "Cellular" msgstr "Cellulær" -#: netbox/dcim/choices.py:1423 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/choices.py:1444 netbox/dcim/forms/filtersets.py:425 #: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112 #: netbox/dcim/forms/filtersets.py:1910 -#: netbox/templates/dcim/inventoryitem.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:66 msgid "Serial" msgstr "Seriel" -#: netbox/dcim/choices.py:1438 +#: netbox/dcim/choices.py:1459 msgid "Coaxial" msgstr "Koaksial" -#: netbox/dcim/choices.py:1459 +#: netbox/dcim/choices.py:1480 msgid "Stacking" msgstr "Stabling" -#: netbox/dcim/choices.py:1511 +#: netbox/dcim/choices.py:1532 msgid "Half" msgstr "Halvdelen" -#: netbox/dcim/choices.py:1512 +#: netbox/dcim/choices.py:1533 msgid "Full" msgstr "Fuld" -#: netbox/dcim/choices.py:1513 netbox/netbox/preferences.py:32 +#: netbox/dcim/choices.py:1534 netbox/netbox/preferences.py:32 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Auto" -#: netbox/dcim/choices.py:1525 +#: netbox/dcim/choices.py:1546 msgid "Access" msgstr "Adgang" -#: netbox/dcim/choices.py:1526 netbox/ipam/tables/vlans.py:148 +#: netbox/dcim/choices.py:1547 netbox/ipam/tables/vlans.py:148 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Markeret" -#: netbox/dcim/choices.py:1527 +#: netbox/dcim/choices.py:1548 msgid "Tagged (All)" msgstr "Tagget (Alle)" -#: netbox/dcim/choices.py:1528 netbox/templates/ipam/vlan_edit.html:26 +#: netbox/dcim/choices.py:1549 netbox/templates/ipam/vlan_edit.html:26 msgid "Q-in-Q (802.1ad)" msgstr "Q-i-Q (802.1ad)" -#: netbox/dcim/choices.py:1557 +#: netbox/dcim/choices.py:1578 msgid "IEEE Standard" msgstr "IEEE-standard" -#: netbox/dcim/choices.py:1568 +#: netbox/dcim/choices.py:1589 msgid "Passive 24V (2-pair)" msgstr "Passiv 24V (2-par)" -#: netbox/dcim/choices.py:1569 +#: netbox/dcim/choices.py:1590 msgid "Passive 24V (4-pair)" msgstr "Passiv 24V (4-par)" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1591 msgid "Passive 48V (2-pair)" msgstr "Passiv 48V (2-par)" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1592 msgid "Passive 48V (4-pair)" msgstr "Passiv 48V (4-par)" -#: netbox/dcim/choices.py:1644 +#: netbox/dcim/choices.py:1665 msgid "Copper" msgstr "Kobber" -#: netbox/dcim/choices.py:1667 +#: netbox/dcim/choices.py:1688 msgid "Fiber Optic" msgstr "Fiberoptisk" -#: netbox/dcim/choices.py:1703 netbox/dcim/choices.py:1917 +#: netbox/dcim/choices.py:1724 netbox/dcim/choices.py:1938 msgid "USB" msgstr "USB" -#: netbox/dcim/choices.py:1759 +#: netbox/dcim/choices.py:1780 msgid "Single" msgstr "Enkelt" -#: netbox/dcim/choices.py:1761 +#: netbox/dcim/choices.py:1782 msgid "1C1P" msgstr "1C1P" -#: netbox/dcim/choices.py:1762 +#: netbox/dcim/choices.py:1783 msgid "1C2P" msgstr "1C2P" -#: netbox/dcim/choices.py:1763 +#: netbox/dcim/choices.py:1784 msgid "1C4P" msgstr "1C4P" -#: netbox/dcim/choices.py:1764 +#: netbox/dcim/choices.py:1785 msgid "1C6P" msgstr "1C6P" -#: netbox/dcim/choices.py:1765 +#: netbox/dcim/choices.py:1786 msgid "1C8P" msgstr "1C8P" -#: netbox/dcim/choices.py:1766 +#: netbox/dcim/choices.py:1787 msgid "1C12P" msgstr "1C12P" -#: netbox/dcim/choices.py:1767 +#: netbox/dcim/choices.py:1788 msgid "1C16P" msgstr "1C16P" -#: netbox/dcim/choices.py:1771 +#: netbox/dcim/choices.py:1792 msgid "Trunk" msgstr "Bagagerum" -#: netbox/dcim/choices.py:1773 +#: netbox/dcim/choices.py:1794 msgid "2C1P trunk" msgstr "2C1P bagagerum" -#: netbox/dcim/choices.py:1774 +#: netbox/dcim/choices.py:1795 msgid "2C2P trunk" msgstr "2C2P bagagerum" -#: netbox/dcim/choices.py:1775 +#: netbox/dcim/choices.py:1796 msgid "2C4P trunk" msgstr "2C4P bagagerum" -#: netbox/dcim/choices.py:1776 +#: netbox/dcim/choices.py:1797 msgid "2C4P trunk (shuffle)" msgstr "2C4P bagagerum (shuffle)" -#: netbox/dcim/choices.py:1777 +#: netbox/dcim/choices.py:1798 msgid "2C6P trunk" msgstr "2C6P bagagerum" -#: netbox/dcim/choices.py:1778 +#: netbox/dcim/choices.py:1799 msgid "2C8P trunk" msgstr "2C8P bagagerum" -#: netbox/dcim/choices.py:1779 +#: netbox/dcim/choices.py:1800 msgid "2C12P trunk" msgstr "2C12P bagagerum" -#: netbox/dcim/choices.py:1780 +#: netbox/dcim/choices.py:1801 msgid "4C1P trunk" msgstr "4C1P bagagerum" -#: netbox/dcim/choices.py:1781 +#: netbox/dcim/choices.py:1802 msgid "4C2P trunk" msgstr "4C2P bagagerum" -#: netbox/dcim/choices.py:1782 +#: netbox/dcim/choices.py:1803 msgid "4C4P trunk" msgstr "4C4P bagagerum" -#: netbox/dcim/choices.py:1783 +#: netbox/dcim/choices.py:1804 msgid "4C4P trunk (shuffle)" msgstr "4C4P bagagerum (shuffle)" -#: netbox/dcim/choices.py:1784 +#: netbox/dcim/choices.py:1805 msgid "4C6P trunk" msgstr "4C6P bagagerum" -#: netbox/dcim/choices.py:1785 +#: netbox/dcim/choices.py:1806 msgid "4C8P trunk" msgstr "4C8P bagagerum" -#: netbox/dcim/choices.py:1786 +#: netbox/dcim/choices.py:1807 msgid "8C4P trunk" msgstr "8C4P bagagerum" -#: netbox/dcim/choices.py:1790 +#: netbox/dcim/choices.py:1811 msgid "Breakout" msgstr "Udbrud" -#: netbox/dcim/choices.py:1792 +#: netbox/dcim/choices.py:1813 msgid "1C4P:4C1P breakout" msgstr "1C4P: 4C1P udbrud" -#: netbox/dcim/choices.py:1793 +#: netbox/dcim/choices.py:1814 msgid "1C6P:6C1P breakout" msgstr "1C6P: 6C1P udbrud" -#: netbox/dcim/choices.py:1794 +#: netbox/dcim/choices.py:1815 msgid "2C4P:8C1P breakout (shuffle)" msgstr "2C4P: 8C1P breakout (blanding)" -#: netbox/dcim/choices.py:1852 +#: netbox/dcim/choices.py:1873 msgid "Copper - Twisted Pair (UTP/STP)" msgstr "Kobber - snoet par (UTP/STP)" -#: netbox/dcim/choices.py:1866 +#: netbox/dcim/choices.py:1887 msgid "Copper - Twinax (DAC)" msgstr "Kobber - Twinax (DAC)" -#: netbox/dcim/choices.py:1873 +#: netbox/dcim/choices.py:1894 msgid "Copper - Coaxial" msgstr "Kobber - Koaksial" -#: netbox/dcim/choices.py:1888 +#: netbox/dcim/choices.py:1909 msgid "Fiber - Multimode" msgstr "Fiber - Multimode" -#: netbox/dcim/choices.py:1899 +#: netbox/dcim/choices.py:1920 msgid "Fiber - Single-mode" msgstr "Fiber - Single-mode" -#: netbox/dcim/choices.py:1907 +#: netbox/dcim/choices.py:1928 msgid "Fiber - Other" msgstr "Fiber - Andet" -#: netbox/dcim/choices.py:1932 netbox/dcim/forms/filtersets.py:1402 +#: netbox/dcim/choices.py:1953 netbox/dcim/forms/filtersets.py:1402 msgid "Connected" msgstr "Tilsluttet" -#: netbox/dcim/choices.py:1951 netbox/netbox/choices.py:177 +#: netbox/dcim/choices.py:1972 netbox/netbox/choices.py:177 msgid "Kilometers" msgstr "Kilometer" -#: netbox/dcim/choices.py:1952 netbox/netbox/choices.py:178 +#: netbox/dcim/choices.py:1973 netbox/netbox/choices.py:178 #: netbox/templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Meter" -#: netbox/dcim/choices.py:1953 +#: netbox/dcim/choices.py:1974 msgid "Centimeters" msgstr "Centimeter" -#: netbox/dcim/choices.py:1954 netbox/netbox/choices.py:179 +#: netbox/dcim/choices.py:1975 netbox/netbox/choices.py:179 msgid "Miles" msgstr "Mil" -#: netbox/dcim/choices.py:1955 netbox/netbox/choices.py:180 +#: netbox/dcim/choices.py:1976 netbox/netbox/choices.py:180 #: netbox/templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Fod" -#: netbox/dcim/choices.py:2003 +#: netbox/dcim/choices.py:2024 msgid "Redundant" msgstr "Redundant" -#: netbox/dcim/choices.py:2024 +#: netbox/dcim/choices.py:2045 msgid "Single phase" msgstr "Enkeltfase" -#: netbox/dcim/choices.py:2025 +#: netbox/dcim/choices.py:2046 msgid "Three-phase" msgstr "Trefaset" -#: netbox/dcim/choices.py:2041 netbox/extras/choices.py:53 +#: netbox/dcim/choices.py:2062 netbox/extras/choices.py:53 #: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70 #: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Handicappede" -#: netbox/dcim/choices.py:2042 +#: netbox/dcim/choices.py:2063 msgid "Faulty" msgstr "Defekt" @@ -3867,8 +3771,9 @@ msgstr "Er fuld dybde" #: netbox/dcim/filtersets.py:1323 netbox/dcim/forms/filtersets.py:920 #: netbox/dcim/forms/filtersets.py:1634 netbox/dcim/forms/filtersets.py:1979 -#: netbox/dcim/forms/model_forms.py:1915 netbox/dcim/models/devices.py:1313 -#: netbox/dcim/models/devices.py:1336 netbox/virtualization/filtersets.py:230 +#: netbox/dcim/forms/model_forms.py:1941 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1336 netbox/dcim/ui/panels.py:366 +#: netbox/dcim/ui/panels.py:504 netbox/virtualization/filtersets.py:230 #: netbox/virtualization/filtersets.py:318 #: netbox/virtualization/forms/filtersets.py:191 #: netbox/virtualization/forms/filtersets.py:245 @@ -3956,7 +3861,6 @@ msgstr "Virtuelt kabinet (ID)" #: netbox/dcim/forms/object_create.py:329 netbox/dcim/tables/devices.py:215 #: netbox/netbox/navigation/menu.py:82 #: netbox/templates/dcim/device_edit.html:95 -#: netbox/templates/dcim/virtualchassis.html:10 #: netbox/templates/dcim/virtualchassis_edit.html:28 msgid "Virtual Chassis" msgstr "Virtuelt kabinet" @@ -4016,7 +3920,7 @@ msgstr "Er tildelt" msgid "Is primary" msgstr "Er primær" -#: netbox/dcim/filtersets.py:2060 netbox/templates/dcim/interface.html:81 +#: netbox/dcim/filtersets.py:2060 #: netbox/virtualization/forms/model_forms.py:386 #: netbox/virtualization/ui/panels.py:62 msgid "802.1Q Mode" @@ -4033,27 +3937,25 @@ msgstr "Tildelt VID" #: netbox/dcim/filtersets.py:2074 netbox/dcim/forms/bulk_edit.py:1512 #: netbox/dcim/forms/bulk_import.py:1034 netbox/dcim/forms/filtersets.py:1687 -#: netbox/dcim/forms/model_forms.py:1555 +#: netbox/dcim/forms/model_forms.py:1581 #: netbox/dcim/models/device_components.py:867 -#: netbox/dcim/tables/devices.py:667 netbox/ipam/filtersets.py:360 -#: netbox/ipam/filtersets.py:372 netbox/ipam/filtersets.py:511 -#: netbox/ipam/filtersets.py:618 netbox/ipam/filtersets.py:630 -#: netbox/ipam/forms/bulk_edit.py:190 netbox/ipam/forms/bulk_edit.py:240 -#: netbox/ipam/forms/bulk_edit.py:281 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:248 netbox/ipam/forms/bulk_import.py:284 -#: netbox/ipam/forms/filtersets.py:70 netbox/ipam/forms/filtersets.py:194 -#: netbox/ipam/forms/filtersets.py:348 netbox/ipam/forms/model_forms.py:68 -#: netbox/ipam/forms/model_forms.py:203 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:303 netbox/ipam/forms/model_forms.py:466 -#: netbox/ipam/forms/model_forms.py:480 netbox/ipam/forms/model_forms.py:494 -#: netbox/ipam/models/ip.py:224 netbox/ipam/models/ip.py:518 -#: netbox/ipam/models/ip.py:747 netbox/ipam/models/vrfs.py:61 -#: netbox/ipam/tables/ip.py:187 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:311 netbox/ipam/tables/ip.py:413 -#: netbox/templates/dcim/interface.html:170 -#: netbox/templates/ipam/ipaddress.html:18 -#: netbox/templates/ipam/iprange.html:47 netbox/templates/ipam/prefix.html:19 -#: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 +#: netbox/dcim/tables/devices.py:667 netbox/dcim/ui/panels.py:507 +#: netbox/ipam/filtersets.py:360 netbox/ipam/filtersets.py:372 +#: netbox/ipam/filtersets.py:511 netbox/ipam/filtersets.py:618 +#: netbox/ipam/filtersets.py:630 netbox/ipam/forms/bulk_edit.py:190 +#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:281 +#: netbox/ipam/forms/bulk_import.py:163 netbox/ipam/forms/bulk_import.py:248 +#: netbox/ipam/forms/bulk_import.py:284 netbox/ipam/forms/filtersets.py:70 +#: netbox/ipam/forms/filtersets.py:194 netbox/ipam/forms/filtersets.py:348 +#: netbox/ipam/forms/model_forms.py:68 netbox/ipam/forms/model_forms.py:203 +#: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:303 +#: netbox/ipam/forms/model_forms.py:466 netbox/ipam/forms/model_forms.py:480 +#: netbox/ipam/forms/model_forms.py:494 netbox/ipam/models/ip.py:224 +#: netbox/ipam/models/ip.py:528 netbox/ipam/models/ip.py:757 +#: netbox/ipam/models/vrfs.py:61 netbox/ipam/tables/ip.py:187 +#: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:311 +#: netbox/ipam/tables/ip.py:413 netbox/ipam/ui/panels.py:102 +#: netbox/ipam/ui/panels.py:111 netbox/ipam/ui/panels.py:139 #: netbox/virtualization/forms/bulk_edit.py:226 #: netbox/virtualization/forms/bulk_import.py:218 #: netbox/virtualization/forms/filtersets.py:250 @@ -4076,9 +3978,9 @@ msgid "L2VPN (ID)" msgstr "L2VPN (ID)" #: netbox/dcim/filtersets.py:2092 netbox/dcim/forms/filtersets.py:1692 -#: netbox/dcim/tables/devices.py:607 netbox/ipam/filtersets.py:1087 -#: netbox/ipam/forms/filtersets.py:613 netbox/ipam/tables/vlans.py:116 -#: netbox/templates/dcim/interface.html:104 netbox/templates/ipam/vlan.html:82 +#: netbox/dcim/tables/devices.py:607 netbox/dcim/ui/panels.py:487 +#: netbox/ipam/filtersets.py:1087 netbox/ipam/forms/filtersets.py:613 +#: netbox/ipam/tables/vlans.py:116 netbox/ipam/ui/panels.py:206 #: netbox/virtualization/forms/filtersets.py:255 #: netbox/vpn/forms/bulk_import.py:285 netbox/vpn/forms/filtersets.py:268 #: netbox/vpn/forms/model_forms.py:407 netbox/vpn/forms/model_forms.py:425 @@ -4092,10 +3994,9 @@ msgid "VLAN Translation Policy (ID)" msgstr "VLAN-oversættelsespolitik (ID)" #: netbox/dcim/filtersets.py:2105 netbox/dcim/forms/filtersets.py:1658 -#: netbox/dcim/forms/model_forms.py:1572 +#: netbox/dcim/forms/model_forms.py:1598 #: netbox/dcim/models/device_components.py:668 #: netbox/ipam/forms/filtersets.py:531 netbox/ipam/forms/model_forms.py:703 -#: netbox/templates/ipam/vlantranslationpolicy.html:11 #: netbox/virtualization/forms/bulk_edit.py:231 #: netbox/virtualization/forms/filtersets.py:265 #: netbox/virtualization/forms/model_forms.py:364 @@ -4135,9 +4036,6 @@ msgid "LAG interface (ID)" msgstr "LAG-grænseflade (ID)" #: netbox/dcim/filtersets.py:2185 netbox/dcim/tables/devices.py:1194 -#: netbox/templates/dcim/interface.html:149 -#: netbox/templates/dcim/macaddress.html:11 -#: netbox/templates/dcim/macaddress.html:14 #: netbox/virtualization/ui/panels.py:71 msgid "MAC Address" msgstr "MAC-adresse" @@ -4146,15 +4044,14 @@ msgstr "MAC-adresse" msgid "Primary MAC address (ID)" msgstr "Primær MAC-adresse (ID)" -#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1559 +#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1585 #: netbox/virtualization/filtersets.py:331 #: netbox/virtualization/forms/model_forms.py:302 msgid "Primary MAC address" msgstr "Primær MAC-adresse" #: netbox/dcim/filtersets.py:2225 netbox/dcim/filtersets.py:2237 -#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1895 -#: netbox/templates/dcim/virtualdevicecontext.html:15 +#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1921 msgid "Virtual Device Context" msgstr "Virtuel enhedskontekst" @@ -4213,6 +4110,7 @@ msgstr "Strømpanel (ID)" #: netbox/netbox/forms/bulk_import.py:27 netbox/netbox/forms/mixins.py:131 #: netbox/netbox/tables/columns.py:495 #: netbox/templates/circuits/inc/circuit_termination.html:29 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:29 #: netbox/templates/generic/bulk_edit.html:78 #: netbox/templates/inc/panels/tags.html:5 #: netbox/utilities/forms/fields/fields.py:101 @@ -4220,14 +4118,12 @@ msgid "Tags" msgstr "Mærker" #: netbox/dcim/forms/bulk_create.py:116 netbox/dcim/forms/filtersets.py:1842 -#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:595 -#: netbox/dcim/forms/model_forms.py:661 netbox/dcim/forms/object_create.py:155 +#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:621 +#: netbox/dcim/forms/model_forms.py:687 netbox/dcim/forms/object_create.py:155 #: netbox/dcim/forms/object_create.py:256 netbox/dcim/tables/devices.py:169 -#: netbox/templates/dcim/frontport.html:132 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/panels/front_port_mappings.html:9 +#: netbox/templates/dcim/panels/rear_port_mappings.html:9 #: netbox/templates/dcim/panels/virtual_chassis_members.html:9 -#: netbox/templates/dcim/rearport.html:126 -#: netbox/templates/dcim/virtualchassis.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:67 msgid "Position" msgstr "Position" @@ -4258,7 +4154,7 @@ msgid "Contact E-mail" msgstr "Kontakt E-mail" #: netbox/dcim/forms/bulk_edit.py:152 netbox/dcim/forms/bulk_import.py:138 -#: netbox/dcim/forms/model_forms.py:147 +#: netbox/dcim/forms/model_forms.py:157 msgid "Time zone" msgstr "Tidszone" @@ -4273,17 +4169,16 @@ msgstr "Tidszone" #: netbox/dcim/forms/filtersets.py:546 netbox/dcim/forms/filtersets.py:695 #: netbox/dcim/forms/filtersets.py:801 netbox/dcim/forms/filtersets.py:884 #: netbox/dcim/forms/filtersets.py:1096 netbox/dcim/forms/filtersets.py:1907 -#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:223 -#: netbox/dcim/forms/model_forms.py:354 netbox/dcim/forms/model_forms.py:366 -#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:540 -#: netbox/dcim/forms/model_forms.py:1239 netbox/dcim/forms/model_forms.py:1722 +#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:249 +#: netbox/dcim/forms/model_forms.py:380 netbox/dcim/forms/model_forms.py:392 +#: netbox/dcim/forms/model_forms.py:462 netbox/dcim/forms/model_forms.py:566 +#: netbox/dcim/forms/model_forms.py:1265 netbox/dcim/forms/model_forms.py:1748 #: netbox/dcim/forms/object_import.py:188 netbox/dcim/tables/devices.py:101 #: netbox/dcim/tables/devices.py:176 netbox/dcim/tables/devices.py:1035 #: netbox/dcim/tables/devicetypes.py:87 netbox/dcim/tables/devicetypes.py:322 #: netbox/dcim/tables/modules.py:47 netbox/dcim/tables/modules.py:90 #: netbox/dcim/tables/racks.py:51 netbox/dcim/tables/racks.py:121 -#: netbox/templates/dcim/inventoryitem.html:48 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/panels/installed_module.html:13 #: netbox/templates/dcim/panels/module_type.html:7 msgid "Manufacturer" msgstr "Producent" @@ -4308,7 +4203,7 @@ msgid "Height (U)" msgstr "Højde (U)" #: netbox/dcim/forms/bulk_edit.py:244 netbox/dcim/forms/bulk_edit.py:387 -#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:39 +#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:41 msgid "Descending units" msgstr "Faldende enheder" @@ -4342,10 +4237,10 @@ msgstr "Monteringsdybde" #: netbox/dcim/forms/filtersets.py:362 netbox/dcim/forms/filtersets.py:441 #: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:651 #: netbox/dcim/forms/filtersets.py:683 netbox/dcim/forms/filtersets.py:755 -#: netbox/dcim/forms/model_forms.py:237 netbox/dcim/forms/model_forms.py:318 +#: netbox/dcim/forms/model_forms.py:263 netbox/dcim/forms/model_forms.py:344 #: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:55 #: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:162 -#: netbox/dcim/views.py:891 netbox/dcim/views.py:1019 +#: netbox/dcim/views.py:893 netbox/dcim/views.py:1021 #: netbox/extras/forms/bulk_edit.py:57 netbox/extras/forms/bulk_edit.py:137 #: netbox/extras/forms/bulk_edit.py:191 netbox/extras/forms/bulk_edit.py:219 #: netbox/extras/forms/bulk_edit.py:315 netbox/extras/forms/bulk_edit.py:341 @@ -4356,7 +4251,7 @@ msgstr "Monteringsdybde" #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 #: netbox/templates/extras/tableconfig.html:41 -#: netbox/templates/extras/tag.html:32 netbox/templates/ipam/role.html:30 +#: netbox/templates/extras/tag.html:32 msgid "Weight" msgstr "Vægt" @@ -4375,18 +4270,18 @@ msgid "Weight unit" msgstr "Vægtenhed" #: netbox/dcim/forms/bulk_edit.py:290 netbox/dcim/forms/filtersets.py:335 -#: netbox/dcim/forms/model_forms.py:233 netbox/dcim/forms/model_forms.py:272 +#: netbox/dcim/forms/model_forms.py:259 netbox/dcim/forms/model_forms.py:298 msgid "Rack Type" msgstr "Racktype" #: netbox/dcim/forms/bulk_edit.py:292 netbox/dcim/forms/bulk_edit.py:440 -#: netbox/dcim/forms/model_forms.py:236 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/model_forms.py:262 netbox/dcim/forms/model_forms.py:343 msgid "Outer Dimensions" msgstr "Udvendige mål" -#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:238 -#: netbox/dcim/forms/model_forms.py:319 netbox/dcim/ui/panels.py:135 -#: netbox/dcim/views.py:885 netbox/dcim/views.py:1017 +#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:345 netbox/dcim/ui/panels.py:137 +#: netbox/dcim/views.py:887 netbox/dcim/views.py:1019 #: netbox/extras/tables/tables.py:278 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 #: netbox/templates/extras/imageattachment.html:40 @@ -4394,8 +4289,8 @@ msgid "Dimensions" msgstr "Dimensioner" #: netbox/dcim/forms/bulk_edit.py:297 netbox/dcim/forms/filtersets.py:336 -#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:240 -#: netbox/dcim/views.py:890 netbox/dcim/views.py:1018 +#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:266 +#: netbox/dcim/views.py:892 netbox/dcim/views.py:1020 #: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "Nummerering" @@ -4406,13 +4301,14 @@ msgid "Rack type" msgstr "Racktype" #: netbox/dcim/forms/bulk_edit.py:363 netbox/dcim/forms/bulk_edit.py:708 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/templates/dcim/modulebay.html:70 +#: netbox/dcim/forms/bulk_edit.py:763 msgid "Serial Number" msgstr "Serienummer" #: netbox/dcim/forms/bulk_edit.py:366 netbox/dcim/forms/filtersets.py:429 #: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1116 #: netbox/dcim/forms/filtersets.py:1914 +#: netbox/templates/dcim/panels/installed_module.html:25 msgid "Asset tag" msgstr "Aktivemærke" @@ -4433,13 +4329,12 @@ msgstr "Luftstrøm" #: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/filtersets.py:501 #: netbox/dcim/forms/filtersets.py:874 netbox/dcim/forms/filtersets.py:1086 #: netbox/dcim/forms/filtersets.py:1186 netbox/dcim/forms/filtersets.py:1325 -#: netbox/dcim/forms/model_forms.py:282 netbox/dcim/forms/model_forms.py:326 -#: netbox/dcim/forms/model_forms.py:586 netbox/dcim/forms/model_forms.py:871 +#: netbox/dcim/forms/model_forms.py:308 netbox/dcim/forms/model_forms.py:352 +#: netbox/dcim/forms/model_forms.py:612 netbox/dcim/forms/model_forms.py:897 #: netbox/dcim/forms/object_create.py:303 netbox/dcim/tables/devices.py:165 #: netbox/dcim/tables/power.py:67 netbox/dcim/tables/racks.py:204 #: netbox/ipam/forms/filtersets.py:486 #: netbox/templates/dcim/inc/cable_termination.html:16 -#: netbox/templates/dcim/powerfeed.html:28 #: netbox/templates/dcim/rack/base.html:4 #: netbox/virtualization/forms/model_forms.py:107 msgid "Rack" @@ -4449,14 +4344,14 @@ msgstr "Rack" #: netbox/dcim/forms/filtersets.py:360 netbox/dcim/forms/filtersets.py:440 #: netbox/dcim/forms/filtersets.py:532 netbox/dcim/forms/filtersets.py:677 #: netbox/dcim/forms/filtersets.py:822 netbox/dcim/forms/filtersets.py:1043 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:787 -#: netbox/dcim/forms/model_forms.py:1790 +#: netbox/dcim/forms/model_forms.py:470 netbox/dcim/forms/model_forms.py:813 +#: netbox/dcim/forms/model_forms.py:1816 #: netbox/templates/dcim/device_edit.html:22 msgid "Hardware" msgstr "Hardware" #: netbox/dcim/forms/bulk_edit.py:490 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:397 msgid "Default platform" msgstr "Standardplatform" @@ -4473,29 +4368,29 @@ msgstr "U højde" msgid "Exclude from utilization" msgstr "Ekskluder fra udnyttelse" -#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:385 -#: netbox/dcim/forms/model_forms.py:1022 netbox/dcim/forms/model_forms.py:1064 -#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1119 -#: netbox/dcim/forms/model_forms.py:1140 netbox/dcim/forms/model_forms.py:1180 -#: netbox/dcim/forms/model_forms.py:1198 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:411 +#: netbox/dcim/forms/model_forms.py:1048 netbox/dcim/forms/model_forms.py:1090 +#: netbox/dcim/forms/model_forms.py:1117 netbox/dcim/forms/model_forms.py:1145 +#: netbox/dcim/forms/model_forms.py:1166 netbox/dcim/forms/model_forms.py:1206 +#: netbox/dcim/forms/model_forms.py:1224 #: netbox/dcim/forms/object_create.py:119 netbox/dcim/tables/devicetypes.py:84 -#: netbox/dcim/ui/panels.py:125 netbox/templates/dcim/devicebay.html:52 +#: netbox/dcim/ui/panels.py:127 msgid "Device Type" msgstr "Enhedstype" -#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:412 -#: netbox/dcim/views.py:1590 netbox/extras/forms/model_forms.py:601 +#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:438 +#: netbox/dcim/views.py:1592 netbox/extras/forms/model_forms.py:601 msgid "Schema" msgstr "Skema" #: netbox/dcim/forms/bulk_edit.py:549 netbox/dcim/forms/bulk_edit.py:556 #: netbox/dcim/forms/bulk_edit.py:787 netbox/dcim/forms/bulk_import.py:460 #: netbox/dcim/forms/bulk_import.py:1459 netbox/dcim/forms/filtersets.py:690 -#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:418 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/tables/modules.py:43 +#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:444 +#: netbox/dcim/forms/model_forms.py:457 netbox/dcim/tables/modules.py:43 #: netbox/extras/forms/filtersets.py:413 #: netbox/extras/forms/model_forms.py:626 netbox/extras/tables/tables.py:627 -#: netbox/templates/account/base.html:7 netbox/templates/dcim/cable.html:23 +#: netbox/templates/account/base.html:7 #: netbox/templates/extras/configcontext.html:21 #: netbox/templates/inc/user_menu.html:38 netbox/vpn/forms/bulk_edit.py:213 #: netbox/vpn/forms/filtersets.py:203 netbox/vpn/forms/model_forms.py:378 @@ -4503,22 +4398,21 @@ msgid "Profile" msgstr "Profil" #: netbox/dcim/forms/bulk_edit.py:588 netbox/dcim/forms/filtersets.py:1379 -#: netbox/dcim/forms/model_forms.py:443 netbox/dcim/forms/model_forms.py:1023 -#: netbox/dcim/forms/model_forms.py:1065 netbox/dcim/forms/model_forms.py:1092 -#: netbox/dcim/forms/model_forms.py:1120 netbox/dcim/forms/model_forms.py:1141 -#: netbox/dcim/forms/model_forms.py:1181 netbox/dcim/forms/model_forms.py:1199 +#: netbox/dcim/forms/model_forms.py:469 netbox/dcim/forms/model_forms.py:1049 +#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1118 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1167 +#: netbox/dcim/forms/model_forms.py:1207 netbox/dcim/forms/model_forms.py:1225 #: netbox/dcim/forms/object_create.py:120 netbox/dcim/tables/modules.py:52 -#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2848 -#: netbox/templates/dcim/modulebay.html:66 +#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2851 msgid "Module Type" msgstr "Modultype" -#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:388 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:414 msgid "Chassis" msgstr "Chassis" #: netbox/dcim/forms/bulk_edit.py:611 netbox/dcim/models/devices.py:390 -#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:142 +#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:144 msgid "VM role" msgstr "VM-rolle" @@ -4528,8 +4422,8 @@ msgstr "VM-rolle" #: netbox/dcim/forms/bulk_import.py:561 netbox/dcim/forms/bulk_import.py:686 #: netbox/dcim/forms/bulk_import.py:690 netbox/dcim/forms/filtersets.py:775 #: netbox/dcim/forms/filtersets.py:806 netbox/dcim/forms/filtersets.py:925 -#: netbox/dcim/forms/model_forms.py:509 netbox/dcim/forms/model_forms.py:546 -#: netbox/dcim/forms/model_forms.py:670 +#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:572 +#: netbox/dcim/forms/model_forms.py:696 #: netbox/virtualization/forms/bulk_import.py:145 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/filtersets.py:207 @@ -4539,20 +4433,21 @@ msgstr "Konfigurationsskabelon" #: netbox/dcim/forms/bulk_edit.py:657 netbox/dcim/forms/bulk_edit.py:1040 #: netbox/dcim/forms/bulk_import.py:592 netbox/dcim/forms/filtersets.py:133 -#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:616 -#: netbox/dcim/forms/model_forms.py:986 netbox/dcim/forms/model_forms.py:1003 +#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:642 +#: netbox/dcim/forms/model_forms.py:1012 netbox/dcim/forms/model_forms.py:1029 #: netbox/extras/filtersets.py:729 +#: netbox/templates/dcim/panels/installed_device.html:13 msgid "Device type" msgstr "Enhedstype" #: netbox/dcim/forms/bulk_edit.py:668 netbox/dcim/forms/bulk_import.py:573 -#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:624 +#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:650 msgid "Device role" msgstr "Enhedsrolle" #: netbox/dcim/forms/bulk_edit.py:691 netbox/dcim/forms/bulk_import.py:598 #: netbox/dcim/forms/filtersets.py:789 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/model_forms.py:557 netbox/dcim/forms/model_forms.py:629 +#: netbox/dcim/forms/model_forms.py:583 netbox/dcim/forms/model_forms.py:655 #: netbox/dcim/tables/devices.py:191 netbox/extras/filtersets.py:745 #: netbox/virtualization/forms/bulk_edit.py:131 #: netbox/virtualization/forms/bulk_import.py:135 @@ -4564,7 +4459,7 @@ msgstr "Platformen" #: netbox/dcim/forms/bulk_edit.py:716 netbox/dcim/forms/bulk_import.py:617 #: netbox/dcim/forms/filtersets.py:830 netbox/dcim/forms/filtersets.py:1000 -#: netbox/dcim/forms/model_forms.py:638 netbox/dcim/tables/devices.py:211 +#: netbox/dcim/forms/model_forms.py:664 netbox/dcim/tables/devices.py:211 #: netbox/extras/filtersets.py:778 netbox/extras/forms/filtersets.py:406 #: netbox/ipam/forms/filtersets.py:457 netbox/ipam/forms/filtersets.py:491 #: netbox/virtualization/filtersets.py:148 @@ -4593,7 +4488,8 @@ msgid "Virtualization" msgstr "Virtualisering" #: netbox/dcim/forms/bulk_edit.py:744 netbox/dcim/forms/bulk_import.py:759 -#: netbox/dcim/forms/model_forms.py:765 netbox/dcim/forms/model_forms.py:1011 +#: netbox/dcim/forms/model_forms.py:791 netbox/dcim/forms/model_forms.py:1037 +#: netbox/templates/dcim/panels/installed_module.html:17 msgid "Module type" msgstr "Modultype" @@ -4603,25 +4499,15 @@ msgstr "Modultype" #: netbox/dcim/forms/bulk_edit.py:1146 netbox/dcim/forms/bulk_edit.py:1173 #: netbox/dcim/forms/bulk_edit.py:1200 netbox/dcim/forms/bulk_edit.py:1218 #: netbox/dcim/forms/bulk_edit.py:1236 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/object_create.py:48 netbox/templates/dcim/cable.html:36 -#: netbox/templates/dcim/consoleport.html:32 -#: netbox/templates/dcim/consoleserverport.html:32 -#: netbox/templates/dcim/devicebay.html:28 -#: netbox/templates/dcim/frontport.html:32 +#: netbox/dcim/forms/object_create.py:48 #: netbox/templates/dcim/inc/panels/inventory_items.html:19 -#: netbox/templates/dcim/interface.html:42 -#: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:34 -#: netbox/templates/dcim/poweroutlet.html:32 -#: netbox/templates/dcim/powerport.html:32 -#: netbox/templates/dcim/rearport.html:32 +#: netbox/templates/dcim/panels/component_inventory_items.html:9 #: netbox/templates/extras/customfield.html:26 #: netbox/templates/generic/bulk_import.html:193 msgid "Label" msgstr "Mærke" #: netbox/dcim/forms/bulk_edit.py:807 netbox/dcim/forms/filtersets.py:1224 -#: netbox/templates/dcim/cable.html:54 msgid "Length" msgstr "Længde" @@ -4631,34 +4517,29 @@ msgid "Length unit" msgstr "Længdeenhed" #: netbox/dcim/forms/bulk_edit.py:830 -#: netbox/templates/dcim/virtualchassis.html:13 msgid "Domain" msgstr "domæne" #: netbox/dcim/forms/bulk_edit.py:886 netbox/dcim/forms/bulk_import.py:1646 -#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:865 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:891 msgid "Power panel" msgstr "Strømpanel" #: netbox/dcim/forms/bulk_edit.py:908 netbox/dcim/forms/bulk_import.py:1682 #: netbox/dcim/forms/filtersets.py:1338 -#: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Forsyning" #: netbox/dcim/forms/bulk_edit.py:914 netbox/dcim/forms/bulk_import.py:1687 #: netbox/dcim/forms/filtersets.py:1343 -#: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Fase" #: netbox/dcim/forms/bulk_edit.py:920 netbox/dcim/forms/filtersets.py:1348 -#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Spænding" #: netbox/dcim/forms/bulk_edit.py:924 netbox/dcim/forms/filtersets.py:1352 -#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Strømstyrke" @@ -4671,7 +4552,7 @@ msgid "Maximum draw" msgstr "Maksimal trækning" #: netbox/dcim/forms/bulk_edit.py:1018 -#: netbox/dcim/models/device_component_templates.py:292 +#: netbox/dcim/models/device_component_templates.py:282 #: netbox/dcim/models/device_components.py:440 msgid "Maximum power draw (watts)" msgstr "Maksimal forbrug (watt)" @@ -4681,14 +4562,14 @@ msgid "Allocated draw" msgstr "Tildelt lodtrækning" #: netbox/dcim/forms/bulk_edit.py:1024 -#: netbox/dcim/models/device_component_templates.py:299 +#: netbox/dcim/models/device_component_templates.py:289 #: netbox/dcim/models/device_components.py:447 msgid "Allocated power draw (watts)" msgstr "Allokeret forbrug (watt)" #: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_import.py:892 -#: netbox/dcim/forms/model_forms.py:1080 netbox/dcim/forms/model_forms.py:1445 -#: netbox/dcim/forms/model_forms.py:1774 netbox/dcim/forms/object_import.py:56 +#: netbox/dcim/forms/model_forms.py:1106 netbox/dcim/forms/model_forms.py:1471 +#: netbox/dcim/forms/model_forms.py:1800 netbox/dcim/forms/object_import.py:56 msgid "Power port" msgstr "Strømstik" @@ -4697,23 +4578,23 @@ msgid "Feed leg" msgstr "Foderben" #: netbox/dcim/forms/bulk_edit.py:1112 netbox/dcim/forms/bulk_edit.py:1433 -#: netbox/dcim/forms/filtersets.py:1719 +#: netbox/dcim/forms/filtersets.py:1719 netbox/dcim/ui/panels.py:478 msgid "Management only" msgstr "Kun ledelse" #: netbox/dcim/forms/bulk_edit.py:1122 netbox/dcim/forms/bulk_edit.py:1439 #: netbox/dcim/forms/bulk_import.py:985 netbox/dcim/forms/filtersets.py:1643 #: netbox/dcim/forms/filtersets.py:1728 netbox/dcim/forms/object_import.py:91 -#: netbox/dcim/models/device_component_templates.py:462 -#: netbox/dcim/models/device_components.py:839 +#: netbox/dcim/models/device_component_templates.py:452 +#: netbox/dcim/models/device_components.py:839 netbox/dcim/ui/panels.py:480 msgid "PoE mode" msgstr "PoE-tilstand" #: netbox/dcim/forms/bulk_edit.py:1128 netbox/dcim/forms/bulk_edit.py:1445 #: netbox/dcim/forms/bulk_import.py:991 netbox/dcim/forms/filtersets.py:1648 #: netbox/dcim/forms/filtersets.py:1733 netbox/dcim/forms/object_import.py:96 -#: netbox/dcim/models/device_component_templates.py:469 -#: netbox/dcim/models/device_components.py:846 +#: netbox/dcim/models/device_component_templates.py:459 +#: netbox/dcim/models/device_components.py:846 netbox/dcim/ui/panels.py:481 msgid "PoE type" msgstr "PoE-type" @@ -4722,36 +4603,26 @@ msgstr "PoE-type" msgid "Wireless role" msgstr "Trådløs rolle" -#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:786 -#: netbox/dcim/forms/model_forms.py:1390 netbox/dcim/tables/devices.py:330 -#: netbox/templates/dcim/consoleport.html:24 -#: netbox/templates/dcim/consoleserverport.html:24 -#: netbox/templates/dcim/frontport.html:24 -#: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/modulebay.html:26 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/poweroutlet.html:24 -#: netbox/templates/dcim/powerport.html:24 -#: netbox/templates/dcim/rearport.html:24 +#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:812 +#: netbox/dcim/forms/model_forms.py:1416 netbox/dcim/tables/devices.py:330 +#: netbox/templates/dcim/panels/installed_module.html:9 msgid "Module" msgstr "Modul" #: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/tables/devices.py:746 -#: netbox/templates/dcim/interface.html:134 +#: netbox/dcim/ui/panels.py:495 msgid "LAG" msgstr "FORSINKELSE" -#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1472 +#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1498 msgid "Virtual device contexts" msgstr "Virtuelle enhedskontekster" #: netbox/dcim/forms/bulk_edit.py:1424 netbox/dcim/forms/bulk_import.py:819 #: netbox/dcim/forms/bulk_import.py:845 netbox/dcim/forms/filtersets.py:1429 #: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1607 -#: netbox/dcim/tables/devices.py:651 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 -#: netbox/templates/dcim/consoleport.html:40 -#: netbox/templates/dcim/consoleserverport.html:40 +#: netbox/dcim/tables/devices.py:651 netbox/dcim/ui/panels.py:474 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:64 msgid "Speed" msgstr "Hastighed" @@ -4768,7 +4639,7 @@ msgid "Mode" msgstr "Tilstand" #: netbox/dcim/forms/bulk_edit.py:1461 netbox/dcim/forms/bulk_import.py:1000 -#: netbox/dcim/forms/model_forms.py:1521 netbox/ipam/forms/bulk_import.py:177 +#: netbox/dcim/forms/model_forms.py:1547 netbox/ipam/forms/bulk_import.py:177 #: netbox/ipam/forms/filtersets.py:582 netbox/ipam/models/vlans.py:93 #: netbox/virtualization/forms/bulk_edit.py:205 #: netbox/virtualization/forms/bulk_import.py:184 @@ -4777,16 +4648,15 @@ msgid "VLAN group" msgstr "VLAN-gruppe" #: netbox/dcim/forms/bulk_edit.py:1470 netbox/dcim/forms/bulk_import.py:1007 -#: netbox/dcim/forms/model_forms.py:1527 netbox/dcim/tables/devices.py:616 -#: netbox/templates/dcim/interface.html:91 -#: netbox/virtualization/forms/bulk_edit.py:213 +#: netbox/dcim/forms/model_forms.py:1553 netbox/dcim/tables/devices.py:616 +#: netbox/dcim/ui/panels.py:484 netbox/virtualization/forms/bulk_edit.py:213 #: netbox/virtualization/forms/bulk_import.py:191 #: netbox/virtualization/forms/model_forms.py:331 msgid "Untagged VLAN" msgstr "Umærket VLAN" #: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/bulk_import.py:1014 -#: netbox/dcim/forms/model_forms.py:1536 netbox/dcim/tables/devices.py:622 +#: netbox/dcim/forms/model_forms.py:1562 netbox/dcim/tables/devices.py:622 #: netbox/virtualization/forms/bulk_edit.py:221 #: netbox/virtualization/forms/bulk_import.py:198 #: netbox/virtualization/forms/model_forms.py:340 @@ -4802,30 +4672,29 @@ msgid "Remove tagged VLANs" msgstr "Fjern mærkede VLAN'er" #: netbox/dcim/forms/bulk_edit.py:1502 netbox/dcim/forms/bulk_import.py:1027 -#: netbox/dcim/forms/model_forms.py:1545 +#: netbox/dcim/forms/model_forms.py:1571 #: netbox/virtualization/forms/bulk_import.py:211 #: netbox/virtualization/forms/model_forms.py:349 msgid "Q-in-Q Service VLAN" msgstr "Q-in-Q-service-VLAN" -#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1508 +#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1534 #: netbox/wireless/forms/filtersets.py:26 msgid "Wireless LAN group" msgstr "Trådløs LAN-gruppe" -#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1513 -#: netbox/dcim/tables/devices.py:660 netbox/netbox/navigation/menu.py:156 -#: netbox/templates/dcim/interface.html:355 +#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1539 +#: netbox/dcim/tables/devices.py:660 netbox/dcim/ui/panels.py:561 +#: netbox/netbox/navigation/menu.py:156 #: netbox/wireless/tables/wirelesslan.py:20 msgid "Wireless LANs" msgstr "Trådløse LAN" #: netbox/dcim/forms/bulk_edit.py:1531 netbox/dcim/forms/filtersets.py:1574 -#: netbox/dcim/forms/model_forms.py:1579 netbox/ipam/forms/bulk_edit.py:227 -#: netbox/ipam/forms/bulk_edit.py:313 netbox/ipam/forms/filtersets.py:191 -#: netbox/netbox/navigation/menu.py:112 -#: netbox/templates/dcim/interface.html:146 -#: netbox/templates/ipam/prefix.html:91 +#: netbox/dcim/forms/model_forms.py:1605 netbox/dcim/ui/panels.py:499 +#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:313 +#: netbox/ipam/forms/filtersets.py:191 netbox/netbox/navigation/menu.py:112 +#: netbox/templates/ipam/panels/prefix_addressing.html:4 #: netbox/virtualization/forms/filtersets.py:218 #: netbox/virtualization/forms/model_forms.py:369 #: netbox/virtualization/ui/panels.py:68 @@ -4833,26 +4702,25 @@ msgid "Addressing" msgstr "Adressering" #: netbox/dcim/forms/bulk_edit.py:1532 netbox/dcim/forms/filtersets.py:821 -#: netbox/dcim/forms/model_forms.py:1580 +#: netbox/dcim/forms/model_forms.py:1606 #: netbox/virtualization/forms/model_forms.py:370 msgid "Operation" msgstr "Betjening" #: netbox/dcim/forms/bulk_edit.py:1533 netbox/dcim/forms/filtersets.py:1575 -#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1124 -#: netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1150 +#: netbox/dcim/forms/model_forms.py:1608 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1581 -#: netbox/templates/dcim/interface.html:110 -#: netbox/virtualization/forms/bulk_edit.py:237 +#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1607 +#: netbox/dcim/ui/panels.py:491 netbox/virtualization/forms/bulk_edit.py:237 #: netbox/virtualization/forms/model_forms.py:371 msgid "Related Interfaces" msgstr "Relaterede grænseflader" #: netbox/dcim/forms/bulk_edit.py:1536 netbox/dcim/forms/filtersets.py:1576 -#: netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1611 #: netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/filtersets.py:219 #: netbox/virtualization/forms/model_forms.py:374 @@ -4960,7 +4828,7 @@ msgstr "Overordnet område" msgid "Rack's location (if any)" msgstr "Rackets placering (hvis nogen)" -#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:331 +#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:357 #: netbox/dcim/tables/racks.py:209 #: netbox/templates/dcim/rackreservation.html:7 msgid "Units" @@ -5041,7 +4909,7 @@ msgid "Assigned platform" msgstr "Tildelt platform" #: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/bulk_import.py:614 -#: netbox/dcim/forms/model_forms.py:651 +#: netbox/dcim/forms/model_forms.py:677 msgid "Virtual chassis" msgstr "Virtuelt kabinet" @@ -5057,7 +4925,7 @@ msgstr "Tildelt placering (hvis nogen)" msgid "Assigned rack (if any)" msgstr "Tildelt rack (hvis et sådant findes)" -#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:634 msgid "Face" msgstr "Ansigt" @@ -5081,7 +4949,7 @@ msgstr "Enhedsplads, hvor denne enhed er installeret (til børneenheder)" msgid "The device in which this module is installed" msgstr "Enheden, hvor dette modul er installeret" -#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:755 +#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:781 msgid "Module bay" msgstr "Modulplads" @@ -5093,7 +4961,7 @@ msgstr "Modulrummet, hvor dette modul er installeret" msgid "The type of module" msgstr "Typen af modul" -#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:773 +#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:799 msgid "Replicate components" msgstr "Replikerer komponenter" @@ -5105,11 +4973,11 @@ msgstr "" "Udfyld automatisk komponenter, der er knyttet til denne modultype (aktiveret" " som standard)" -#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:779 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:805 msgid "Adopt components" msgstr "Vedtage komponenter" -#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:782 +#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:808 msgid "Adopt already existing components" msgstr "Vedtage allerede eksisterende komponenter" @@ -5134,13 +5002,13 @@ msgstr "Lokalt strømstik, der forsyner dette strømudtag" msgid "Electrical phase (for three-phase circuits)" msgstr "Elektrisk fase (til trefasede kredsløb)" -#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1483 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1509 #: netbox/virtualization/forms/bulk_import.py:168 #: netbox/virtualization/forms/model_forms.py:310 msgid "Parent interface" msgstr "Forældregrænseflade" -#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1491 +#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1517 #: netbox/virtualization/forms/bulk_import.py:175 #: netbox/virtualization/forms/model_forms.py:318 msgid "Bridged interface" @@ -5367,6 +5235,7 @@ msgid "Side B name" msgstr "Side B navn" #: netbox/dcim/forms/bulk_import.py:1456 +#: netbox/templates/dcim/panels/connection.html:60 #: netbox/wireless/forms/bulk_import.py:133 msgid "Connection status" msgstr "Forbindelsesstatus" @@ -5399,11 +5268,9 @@ msgstr "" "{color} matchede ikke noget brugt farvenavn og var længere end seks tegn: " "ugyldig hex." -#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:900 +#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:926 #: netbox/dcim/tables/devices.py:1124 #: netbox/templates/dcim/panels/virtual_chassis_members.html:10 -#: netbox/templates/dcim/virtualchassis.html:17 -#: netbox/templates/dcim/virtualchassis.html:57 msgid "Master" msgstr "Mester" @@ -5431,9 +5298,8 @@ msgstr "Forsyningstype (AC/DC)" msgid "Single or three-phase" msgstr "Enkelt- eller trefaset" -#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1875 -#: netbox/dcim/ui/panels.py:108 -#: netbox/templates/dcim/virtualdevicecontext.html:30 +#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1901 +#: netbox/dcim/ui/panels.py:110 netbox/dcim/ui/panels.py:354 #: netbox/virtualization/ui/panels.py:28 msgid "Primary IPv4" msgstr "Primær IPv4" @@ -5442,9 +5308,8 @@ msgstr "Primær IPv4" msgid "IPv4 address with mask, e.g. 1.2.3.4/24" msgstr "IP-adresse med maske, fx 1.2.3.4/24" -#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1884 -#: netbox/dcim/ui/panels.py:113 -#: netbox/templates/dcim/virtualdevicecontext.html:41 +#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1910 +#: netbox/dcim/ui/panels.py:115 netbox/dcim/ui/panels.py:359 #: netbox/virtualization/ui/panels.py:33 msgid "Primary IPv6" msgstr "Primær IPv6" @@ -5454,8 +5319,7 @@ msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64" msgstr "IPv6-adresse med præfix-længde, fx 2001:db8::1/64" #: netbox/dcim/forms/common.py:19 netbox/dcim/models/device_components.py:615 -#: netbox/templates/dcim/interface.html:57 -#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/dcim/ui/panels.py:476 netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/ui/panels.py:61 msgid "MTU" msgstr "MTU" @@ -5496,18 +5360,15 @@ msgstr "Kan ikke adoptere {model} {name} da det allerede hører til et modul" msgid "A {model} named {name} already exists" msgstr "EN {model} som hedder {name} findes allerede" -#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:853 +#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:879 #: netbox/dcim/tables/power.py:63 #: netbox/templates/dcim/inc/cable_termination.html:40 -#: netbox/templates/dcim/powerfeed.html:24 -#: netbox/templates/dcim/powerpanel.html:19 #: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "Strømpanel" -#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:880 -#: netbox/templates/dcim/powerfeed.html:21 -#: netbox/templates/dcim/powerport.html:80 +#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:906 +#: netbox/dcim/views.py:3106 msgid "Power Feed" msgstr "Strømforsyning" @@ -5535,12 +5396,12 @@ msgstr "Antal stativer" msgid "Function" msgstr "Funktion" -#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:341 -#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1164 +#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:367 +#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1166 msgid "Reservation" msgstr "Reservation" -#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:390 +#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:416 #: netbox/netbox/views/generic/feature_views.py:97 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" @@ -5563,7 +5424,7 @@ msgstr "Underenhedsrolle" msgid "Module count" msgstr "Modulantal" -#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:548 msgid "Device Role" msgstr "Enhedsrolle" @@ -5601,16 +5462,9 @@ msgstr "Besat" #: netbox/dcim/forms/filtersets.py:1420 netbox/dcim/forms/filtersets.py:1460 #: netbox/dcim/forms/filtersets.py:1500 netbox/dcim/forms/filtersets.py:1535 #: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/tables/devices.py:381 -#: netbox/dcim/tables/devices.py:682 netbox/ipam/tables/vlans.py:174 +#: netbox/dcim/tables/devices.py:682 netbox/dcim/ui/panels.py:377 +#: netbox/dcim/ui/panels.py:516 netbox/ipam/tables/vlans.py:174 #: netbox/templates/circuits/inc/circuit_termination_fields.html:16 -#: netbox/templates/dcim/consoleport.html:55 -#: netbox/templates/dcim/consoleserverport.html:55 -#: netbox/templates/dcim/frontport.html:66 -#: netbox/templates/dcim/interface.html:215 -#: netbox/templates/dcim/powerfeed.html:110 -#: netbox/templates/dcim/poweroutlet.html:73 -#: netbox/templates/dcim/powerport.html:59 -#: netbox/templates/dcim/rearport.html:66 msgid "Connection" msgstr "Forbindelse" @@ -5626,13 +5480,12 @@ msgstr "Venlig" msgid "Mgmt only" msgstr "Kun Mgmt" -#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1567 -#: netbox/dcim/models/device_components.py:792 -#: netbox/templates/dcim/interface.html:160 +#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1593 +#: netbox/dcim/models/device_components.py:792 netbox/dcim/ui/panels.py:506 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1653 +#: netbox/dcim/forms/filtersets.py:1653 netbox/dcim/ui/panels.py:482 #: netbox/virtualization/forms/filtersets.py:260 msgid "802.1Q mode" msgstr "802.1Q-tilstand" @@ -5649,18 +5502,17 @@ msgstr "Kanalfrekvens (MHz)" msgid "Channel width (MHz)" msgstr "Kanalbredde (MHz)" -#: netbox/dcim/forms/filtersets.py:1680 -#: netbox/templates/dcim/interface.html:96 +#: netbox/dcim/forms/filtersets.py:1680 netbox/dcim/ui/panels.py:485 msgid "Transmit power (dBm)" msgstr "Sendeeffekt (dBm)" #: netbox/dcim/forms/filtersets.py:1751 netbox/dcim/forms/filtersets.py:1795 -#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable.html:12 -#: netbox/templates/dcim/cable_trace.html:46 -#: netbox/templates/dcim/frontport.html:74 +#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/htmx/cable_edit.html:53 #: netbox/templates/dcim/inc/connection_endpoints.html:4 -#: netbox/templates/dcim/rearport.html:74 +#: netbox/templates/dcim/panels/connection.html:14 +#: netbox/templates/dcim/panels/connection.html:51 +#: netbox/templates/dcim/panels/interface_connection.html:13 #: netbox/templates/dcim/trace/cable.html:7 msgid "Cable" msgstr "Kabel" @@ -5700,9 +5552,7 @@ msgstr "Områdetype" #: netbox/ipam/forms/bulk_edit.py:382 netbox/ipam/forms/filtersets.py:195 #: netbox/ipam/forms/model_forms.py:225 netbox/ipam/forms/model_forms.py:603 #: netbox/ipam/forms/model_forms.py:613 netbox/ipam/tables/ip.py:193 -#: netbox/ipam/tables/vlans.py:40 netbox/templates/ipam/prefix.html:48 -#: netbox/templates/ipam/vlangroup.html:38 -#: netbox/virtualization/forms/bulk_edit.py:74 +#: netbox/ipam/tables/vlans.py:40 netbox/virtualization/forms/bulk_edit.py:74 #: netbox/virtualization/forms/filtersets.py:53 #: netbox/virtualization/forms/model_forms.py:73 #: netbox/virtualization/tables/clusters.py:81 @@ -5725,28 +5575,28 @@ msgstr "Omfangstype (app og model)" #: netbox/dcim/forms/mixins.py:126 msgid "Scope name" -msgstr "" +msgstr "Områdenavn" #: netbox/dcim/forms/mixins.py:127 msgid "Name of the assigned scope object (if not using ID)" -msgstr "" +msgstr "Navnet på det tildelte omfangsobjekt (hvis der ikke bruges ID)" #: netbox/dcim/forms/mixins.py:139 msgid "scope_name and scope_id are mutually exclusive." -msgstr "" +msgstr "scope_name og scope_id udelukker hinanden." #: netbox/dcim/forms/mixins.py:143 msgid "scope_type must be specified when using scope_name" -msgstr "" +msgstr "scope_type skal angives, når du bruger scope_name" #: netbox/dcim/forms/mixins.py:145 msgid "scope_type must be specified when using scope_id" -msgstr "" +msgstr "scope_type skal specificeres, når du bruger scope_id" #: netbox/dcim/forms/mixins.py:154 #, python-brace-format msgid "{scope_type} \"{name}\" not found." -msgstr "" +msgstr "{scope_type} „{name}„Ikke fundet." #: netbox/dcim/forms/mixins.py:162 #, python-brace-format @@ -5754,6 +5604,8 @@ msgid "" "Multiple {scope_type} objects match \"{name}\". Use scope_id to specify the " "intended object." msgstr "" +"Flere {scope_type} objekter matcher“{name}„. Brug scope_id til at angive det" +" tilsigtede objekt." #: netbox/dcim/forms/mixins.py:180 netbox/dcim/tables/devices.py:260 msgid "Rear ports" @@ -5768,30 +5620,30 @@ msgstr "" "Det samlede antal frontportpositioner ({frontport_count}) skal matche det " "valgte antal bageste portpositioner ({rearport_count})." -#: netbox/dcim/forms/model_forms.py:158 +#: netbox/dcim/forms/model_forms.py:169 msgid "Contact Info" msgstr "Kontaktoplysninger" -#: netbox/dcim/forms/model_forms.py:211 +#: netbox/dcim/forms/model_forms.py:237 msgid "Rack Role" msgstr "Rackrolle" -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:380 -#: netbox/dcim/forms/model_forms.py:551 +#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:406 +#: netbox/dcim/forms/model_forms.py:577 #: netbox/utilities/forms/fields/fields.py:58 msgid "Slug" msgstr "Slug" -#: netbox/dcim/forms/model_forms.py:276 +#: netbox/dcim/forms/model_forms.py:302 msgid "Select a pre-defined rack type, or set physical characteristics below." msgstr "" "Vælg en foruddefineret racktype, eller angiv fysiske egenskaber nedenfor." -#: netbox/dcim/forms/model_forms.py:284 +#: netbox/dcim/forms/model_forms.py:310 msgid "Inventory Control" msgstr "Lagerstyring" -#: netbox/dcim/forms/model_forms.py:333 +#: netbox/dcim/forms/model_forms.py:359 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -5799,37 +5651,37 @@ msgstr "" "Kommasepareret liste over numeriske enheds-id'er. Et interval kan angives " "ved hjælp af en bindestreg." -#: netbox/dcim/forms/model_forms.py:414 netbox/extras/forms/model_forms.py:603 +#: netbox/dcim/forms/model_forms.py:440 netbox/extras/forms/model_forms.py:603 msgid "Enter a valid JSON schema to define supported attributes." msgstr "" "Angiv et gyldigt JSON-skema for at definere understøttede attributter." -#: netbox/dcim/forms/model_forms.py:445 +#: netbox/dcim/forms/model_forms.py:471 msgid "Profile & Attributes" msgstr "Profil og attributter" -#: netbox/dcim/forms/model_forms.py:597 netbox/dcim/models/devices.py:579 +#: netbox/dcim/forms/model_forms.py:623 netbox/dcim/models/devices.py:579 msgid "The lowest-numbered unit occupied by the device" msgstr "Den lavest nummererede enhed, der er besat af enheden" -#: netbox/dcim/forms/model_forms.py:662 +#: netbox/dcim/forms/model_forms.py:688 msgid "The position in the virtual chassis this device is identified by" msgstr "" "Placeringen i det virtuelle chassis, som denne enhed identificeres ved" -#: netbox/dcim/forms/model_forms.py:667 +#: netbox/dcim/forms/model_forms.py:693 msgid "The priority of the device in the virtual chassis" msgstr "Enhedens prioritet i det virtuelle chassis" -#: netbox/dcim/forms/model_forms.py:776 +#: netbox/dcim/forms/model_forms.py:802 msgid "Automatically populate components associated with this module type" msgstr "Udfyld automatisk komponenter, der er knyttet til denne modultype" -#: netbox/dcim/forms/model_forms.py:882 +#: netbox/dcim/forms/model_forms.py:908 msgid "Characteristics" msgstr "Karakteristika" -#: netbox/dcim/forms/model_forms.py:1038 +#: netbox/dcim/forms/model_forms.py:1064 #, python-brace-format msgid "" "Alphanumeric ranges are supported for bulk creation. Mixed cases and types " @@ -5844,107 +5696,95 @@ msgstr "" "stede, erstattes automatisk med positionsværdien, når du opretter et nyt " "modul." -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "Konsolportskabelon" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "Konsolserverportskabelon" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "Frontportskabelon" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "Grænsefladeskabelon" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "Skabelon til strømudtag" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "Strømstikskabelon" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "Bagport skabelon" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "Konsolport" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "Konsolserverport" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "Frontport" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "Bageste port" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "Strømstik" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "Strømudtag" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "Komponenttildeling" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "En InventoryItem kan kun tildeles til en enkelt komponent." -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "LAG-grænseflade" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "Filtrer VLAN'er, der er tilgængelige til tildeling efter gruppe." -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "Børneenhed" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -5952,43 +5792,41 @@ msgstr "" "Underordnede enheder skal først oprettes og tildeles til den overordnede " "enheds område og rack." -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "Konsolport" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "Konsolserverport" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "Frontport" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "Strømudtag" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "Bageste port" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "Lagergenstand" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "Lagervarrolle" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "VM-grænseflade" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -6002,7 +5840,7 @@ msgstr "VM-grænseflade" msgid "Virtual Machine" msgstr "Virtuel maskine" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "En MAC-adresse kan kun tildeles et enkelt objekt." @@ -6026,9 +5864,9 @@ msgstr "" "{pattern_count} forventes." #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "Medlemmer" @@ -6228,41 +6066,41 @@ msgstr "" "En komponentskabelon skal være tilknyttet enten en enhedstype eller en " "modultype." -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "skabelon til konsolport" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "konsolportskabeloner" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "skabelon til konsolserverport" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "skabeloner til konsolserverportskabeloner" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "maksimal trækning" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "tildelt lodtrækning" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "strømstikskabelon" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "strømstikskabeloner" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." @@ -6270,88 +6108,88 @@ msgstr "" "Tildelt lodtrækning kan ikke overstige den maksimale trækning " "({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "foderben" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "Fase (til trefasefoedninger)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "Strømudtag skabelon" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "strømudtagsskabeloner" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "Hovedstrømstik ({power_port}) skal tilhøre samme enhedstype" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "Hovedstrømstik ({power_port}) skal tilhøre samme modultype" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "Kun ledelse" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "brogrænseflade" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "trådløs rolle" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "grænseflade skabelon" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "interface skabeloner" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "Brogrænseflade ({bridge}) skal tilhøre samme enhedstype" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Brogrænseflade ({bridge}) skal tilhøre samme modultype" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "Bageste port ({rear_port}) skal tilhøre samme enhedstype" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "positioner" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "skabelon til frontport" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "frontportskabeloner" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " @@ -6360,15 +6198,15 @@ msgstr "" "Antallet af positioner kan ikke være mindre end antallet af kortlagte " "bageste portskabeloner ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "bagport skabelon" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "bageste portskabeloner" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " @@ -6377,34 +6215,34 @@ msgstr "" "Antallet af positioner kan ikke være mindre end antallet af kortlagte " "frontportskabeloner ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "position" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "" "Identifikator, der skal refereres til, når installerede komponenter omdøbes" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "modulbugtsskabelon" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "modulbugtsskabeloner" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "skabelon til enhedsplads" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "skabeloner til enhedsplads" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -6413,21 +6251,21 @@ msgstr "" "Underenhedsrolle for enhedstypen ({device_type}) skal indstilles til " "„forælder“ for at tillade enhedspladser." -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "del-ID" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "Producenttildelt artikel-id" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "lagervareskabelon" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "lagervareskabeloner" @@ -6556,10 +6394,10 @@ msgid "tagged VLANs" msgstr "mærkede VLAN'er" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "Q-i-Q SVLAN" @@ -7699,11 +7537,11 @@ msgstr "Tilføj komponenter" msgid "Disconnect Selected" msgstr "Afbryd markeret" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "Opsigelse A" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "Opsigelse B" @@ -7748,6 +7586,8 @@ msgstr "Farvenavn" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "Tilgængelig" @@ -7784,7 +7624,7 @@ msgstr "U Højde" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "IP adresse" @@ -7833,16 +7673,14 @@ msgid "Power outlets" msgstr "Strømudtag" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7875,18 +7713,17 @@ msgid "Device Site" msgstr "Enhedswebsted" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Modulbugt" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "Lagervarer" @@ -7910,13 +7747,13 @@ msgstr "Maksimal trækkraft (W)" msgid "Allocated draw (W)" msgstr "Tildelt lodtrækning (W)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "IP-adresser" @@ -7924,18 +7761,18 @@ msgstr "IP-adresser" msgid "Primary MAC" msgstr "Primær MAC" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "MAC-adresser" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP Grupper" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -7944,7 +7781,6 @@ msgid "Tunnel" msgstr "Tunnel" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Kun ledelse" @@ -7952,7 +7788,7 @@ msgstr "Kun ledelse" msgid "VDCs" msgstr "VDC'er" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "Virtuelt kredsløb" @@ -7961,7 +7797,7 @@ msgstr "Virtuelt kredsløb" msgid "Mappings" msgstr "Kortlægninger" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "Installeret enhed" @@ -7985,7 +7821,7 @@ msgstr "Installeret Seriel" msgid "Installed Asset Tag" msgstr "Installeret aktivmærke" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "Installeret modul" @@ -8002,7 +7838,6 @@ msgid "Module Status" msgstr "Modulstatus" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "Komponent" @@ -8020,7 +7855,7 @@ msgstr "Racktyper" msgid "Device Types" msgstr "Enhedstyper" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "Modultyper" @@ -8043,8 +7878,8 @@ msgstr "Fuld dybde" msgid "Device Count" msgstr "Antal enheder" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -8054,8 +7889,8 @@ msgstr "Antal enheder" msgid "Console Ports" msgstr "Konsolporte" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -8065,8 +7900,8 @@ msgstr "Konsolporte" msgid "Console Server Ports" msgstr "Konsolserverporte" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -8076,8 +7911,8 @@ msgstr "Konsolserverporte" msgid "Power Ports" msgstr "Strømstik" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -8087,8 +7922,8 @@ msgstr "Strømstik" msgid "Power Outlets" msgstr "Strømudtag" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -8097,8 +7932,8 @@ msgstr "Strømudtag" msgid "Front Ports" msgstr "Frontporte" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -8108,16 +7943,16 @@ msgstr "Frontporte" msgid "Rear Ports" msgstr "Bageste porte" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Enhedsbugter" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8132,11 +7967,10 @@ msgid "Module Count" msgstr "Modulantal" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Strømforsyninger" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "Maksimal udnyttelse" @@ -8151,7 +7985,7 @@ msgid "Racks" msgstr "Racker" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Højde" @@ -8199,85 +8033,123 @@ msgstr "VLAN Grupper" msgid "Test case must set peer_termination_type" msgstr "Testcase skal indstille peer_termination_type" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} millimeter" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "Serienummer" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "Maksimal vægt" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "Ledelse" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "IP uden for båndet" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "Forælder/barn" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "Modelnavn" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "Overordnet element" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "Artikel-ID" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "Tilsluttet enhed" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "Udnyttelse (allokeret)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "Elektriske egenskaber" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{} V" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{} A" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "Primær til grænseflade" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "Virtuelle chassismedlemmer" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "Strømforbrug" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "VLAN oversættelse" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "Afbrudt {count} {type}" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "Børneregioner" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "Børnegrupper" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "Enheder uden rack" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "Børneplaceringer" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "Reservationer" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "Underordnede enhedsroller" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "Børneplatforme" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "Applikationstjenester" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8285,41 +8157,69 @@ msgstr "Applikationstjenester" msgid "Config Context" msgstr "Konfigurationskontekst" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "Gengivelseskonfiguration" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "Virtuelle maskiner" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "Virtuelle enhedskontekster" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "VLAN'er" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "LAG-medlemmer" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "VLAN-oversættelse" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "Brobaserede grænseflader" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "Børnegrænseflader" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Installeret enhed {device} i bugten {device_bay}." -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Fjernet enhed {device} fra bugten {device_bay}." -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "Børn" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "Tilføjet medlem {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "Kan ikke fjerne masterenheden {device} fra det virtuelle chassis." -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Fjernet {device} fra virtuelt chassis {chassis}" @@ -8415,10 +8315,9 @@ msgstr "Ja" msgid "No" msgstr "Nej" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "Forbindelse" @@ -8872,15 +8771,6 @@ msgstr "En eller flere tildelte objekttyper" msgid "Field data type (e.g. text, integer, etc.)" msgstr "Feltdatatype (f.eks. tekst, heltal osv.)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "Objekttype" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "Objekttype (for objekt- eller flerobjektfelter)" @@ -8984,7 +8874,7 @@ msgstr "Klassificering af indrejse" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -9010,15 +8900,14 @@ msgstr "Brugernavne adskilt af kommaer, indkapslet med dobbelte anførselstegn" #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "Grupper" @@ -9044,13 +8933,6 @@ msgstr "Felttype" msgid "Choices" msgstr "Valg" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "Data" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10340,17 +10222,6 @@ msgstr "Filendelse" msgid "As Attachment" msgstr "Som vedhæftet fil" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "Datafiler" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10366,9 +10237,8 @@ msgstr "Billede" msgid "Filename" msgstr "Filnavn" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "Størrelse" @@ -10421,6 +10291,7 @@ msgid "Please try reconfiguring the widget, or remove it from your dashboard." msgstr "Prøv at omkonfigurere widgeten, eller fjern den fra dit dashboard." #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10563,7 +10434,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "Almindelig tekst" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "Serviceydelse" @@ -10626,7 +10497,6 @@ msgstr "Eksport af L2VPN (identifikator)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "Præfiks" @@ -10676,7 +10546,6 @@ msgstr "VLAN-nummer (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "Adresse" @@ -10733,7 +10602,7 @@ msgstr "FHRP-gruppen (ID)" msgid "IP address (ID)" msgstr "IP-adresse (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "IP adresse" @@ -10800,8 +10669,8 @@ msgstr "Er privat" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "RIR" @@ -10812,15 +10681,13 @@ msgstr "Dato tilføjet" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN-gruppen" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10835,7 +10702,7 @@ msgid "Prefix length" msgstr "Præfikslængde" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "Er en pool" @@ -10854,23 +10721,21 @@ msgstr "VLAN-tildeling" msgid "Treat as populated" msgstr "Behandl som befolket" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "DNS-navn" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "protokol" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "Gruppe-ID" @@ -10891,9 +10756,8 @@ msgid "Authentication key" msgstr "Autentificeringsnøgle" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -10922,23 +10786,22 @@ msgstr "Område & Gruppe" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "Politik" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "Havne" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "Importer rutemål" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "Eksporter rutemål" @@ -10968,7 +10831,6 @@ msgstr "Område-id" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "FHRP-gruppen" @@ -11076,7 +10938,7 @@ msgid "Exported by VRF" msgstr "Eksporteret af VRF" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "Privat" @@ -11085,7 +10947,7 @@ msgstr "Privat" msgid "Address family" msgstr "Adressefamilie" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "Rækkevidde" @@ -11113,18 +10975,10 @@ msgstr "Enhed/VM" msgid "Parent Prefix" msgstr "Forældrepræfiks" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "DNS-navn" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLAN'er" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "Indeholder VLAN ID" @@ -11142,26 +10996,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Q-i-Q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "VLAN-ID" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "Rutemål" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "Aggregeret" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "ASN-rækkevidde" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "IP-rækkevidde" @@ -11214,8 +11066,7 @@ msgstr "Virtuel IP-adresse" msgid "Assignment already exists" msgstr "Opgaven findes allerede" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "VLAN-id'er" @@ -11234,7 +11085,6 @@ msgstr "" "formål." #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "VLAN-oversættelsesregel" @@ -11247,7 +11097,6 @@ msgstr "" "ved hjælp af en bindestreg." #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "Applikationstjenesteskabelon" @@ -11422,7 +11271,7 @@ msgstr "er en pool" msgid "All IP addresses within this prefix are considered usable" msgstr "Alle IP-adresser inden for dette præfiks betragtes som brugbare" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "brugt mærke" @@ -11434,12 +11283,12 @@ msgstr "præfikser" msgid "Cannot create prefix with /0 mask." msgstr "Kan ikke oprette præfiks med /0-maske." -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "global tabel" @@ -11448,130 +11297,130 @@ msgstr "global tabel" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Duplikat præfiks fundet i {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "startadresse" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "IPv4- eller IPv6-adresse (med maske)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "slutadresse" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "Driftsstatus for denne rækkevidde" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "Den primære funktion af dette interval" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "mærke befolket" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "Forhindre oprettelse af IP-adresser inden for dette interval" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "Rapportplads som fuldt udnyttet" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "IP-rækkevidde" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "IP-intervaller" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "Startende og afsluttende IP-adresseversioner skal matche" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "Startende og afsluttende IP-adressemasker skal matche" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "Slutadressen skal være større end startadressen ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Definerede adresser overlapper med rækkevidde {overlapping_range} i VRF " "{vrf}" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "Defineret interval overstiger den maksimale understøttede størrelse " "({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "adresse" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "Den operationelle status for denne IP" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "Den funktionelle rolle af denne IP" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (indvendigt)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "Den IP, som denne adresse er den „eksterne“ IP for" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Værtsnavn eller FQDN (skelner ikke mellem store og små bogstaver)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "IP-adresser" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "Kan ikke oprette IP-adresse med /0-maske." -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip} er et netværks-id, som muligvis ikke tildeles en grænseflade." -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "" "{ip} er en udsendelsesadresse, som muligvis ikke tildeles en grænseflade." -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Duplikat IP-adresse fundet i {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "Kan ikke oprette IP-adresse {ip} inden for rækkevidde {range}." -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -11579,7 +11428,7 @@ msgstr "" "Kan ikke omtildele IP-adresse, mens den er angivet som den primære IP for " "det overordnede objekt" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" @@ -11587,7 +11436,7 @@ msgstr "" "Kan ikke omtildele IP-adresse, mens den er angivet som OOB-IP for det " "overordnede objekt" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Kun IPv6-adresser kan tildeles SLAAC-status" @@ -11786,17 +11635,17 @@ msgid "Added" msgstr "Tilføjet" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "Præfikser" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "Udnyttelse" @@ -11823,7 +11672,7 @@ msgid "Pool" msgstr "Svømmebassin" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "Markeret Udnyttet" @@ -11831,7 +11680,7 @@ msgstr "Markeret Udnyttet" msgid "Start address" msgstr "Startadresse" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "Markeret befolket" @@ -11861,17 +11710,14 @@ msgid "VID" msgstr "VIDEO" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "Regler" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "Lokal VID" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "Fjernbetjening VID" @@ -11891,16 +11737,71 @@ msgstr "Importmål" msgid "Export Targets" msgstr "Eksportmål" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "Opret gruppe" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Tildel gruppe" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "Ruteadskillelse" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "Unik IP-plads" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "AS-nummer" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Familie" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "Dato tilføjet" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "Startadresse" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "Slutadresse" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (udenfor)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "Primær IP" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "OOB IP" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "Autentificeringstype" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "Autentificeringsnøgle" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Q-in-Q-rolle" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "Kunde-VLAN'er" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "Tilføj et VLAN" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -11938,26 +11839,79 @@ msgstr "" "Kun alfanumeriske tegn, stjerner, bindestreger, punktum og understregninger " "er tilladt i DNS-navne" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "Enhedsgrænseflader" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "VM-grænseflader" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "Importere VRF'er" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "Eksport af VRF'er" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "Import af L2VPN'er" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "Eksport af L2VPN'er" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "Duplicerede præfikser" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "Forældrepræfikser" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "Børnepræfikser" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "Børneområder" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "Duplikater IP'er" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "Applikationstjenester" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "Relaterede IP'er" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "VLAN-oversættelsesregler" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "Tilføj regel" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "Virtuelle IP-adresser" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "Tilføj IP-adresse" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "Tilføj et præfiks" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "Dette felt må ikke være tomt." @@ -12462,7 +12416,6 @@ msgid "Contact Groups" msgstr "Kontaktgrupper" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Kontaktroller" @@ -12482,11 +12435,6 @@ msgstr "Forhøjninger" msgid "Modules" msgstr "Moduler" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "Virtuelle enhedskontekster" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "Modultypeprofiler" @@ -12500,12 +12448,11 @@ msgid "Device Components" msgstr "Enhedskomponenter" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Lagervareroller" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "Forbindelser" @@ -12546,7 +12493,6 @@ msgid "VLAN Translation Policies" msgstr "VLAN-oversættelsespolitikker" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "VLAN-oversættelsesregler" @@ -12625,7 +12571,6 @@ msgid "Circuit Terminations" msgstr "Kredsløbsafslutninger" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "Virtuelle kredsløb" @@ -12641,18 +12586,11 @@ msgstr "Virtuelle kredsløbsafslutninger" msgid "Circuit Groups" msgstr "Kredsløbsgrupper" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "Gruppeopgaver" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "Leverandøre" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Leverandørkonti" @@ -12748,7 +12686,7 @@ msgid "Journal Entries" msgstr "Journalposter" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Ændringslog" @@ -12801,6 +12739,7 @@ msgstr "Baggrundsopgaver" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12819,8 +12758,9 @@ msgstr "Klon" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -12832,8 +12772,9 @@ msgstr "Rediger" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -13105,7 +13046,7 @@ msgstr "Dummy-plugin" msgid "Copy" msgstr "Kopier" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -13113,11 +13054,19 @@ msgstr "" "Ugyldig afkodningsindstilling: {decoding}! Skal være en af " "{image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" +"Ugyldig max_items-værdi: {max_items}! Skal være et positivt heltal eller " +"ingen." + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "GPS-koordinater" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "Relaterede objekter" @@ -13391,8 +13340,7 @@ msgid "Account Details" msgstr "Kontooplysninger" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "E-mail" @@ -13414,16 +13362,15 @@ msgid "Assigned Groups" msgstr "Tildelte grupper" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13498,55 +13445,21 @@ msgstr "Kildekode" msgid "Community" msgstr "Fællesskab" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "Installationsdato" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "Opsigelsesdato" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "Udskiftningskredsløbsafslutninger" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "Byt disse afslutninger til kredsløb %(circuit)s?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "En side" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Z-siden" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "Tildel kredsløb" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "Kredsløbsgruppetildeling" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "Tilføj kredsløb" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "Kredsløbstype" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "Afslutningspunkt" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "Markeret som tilsluttet" @@ -13556,13 +13469,14 @@ msgstr "til" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "Spor" @@ -13576,37 +13490,30 @@ msgstr "Fjern kablet" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "Afbryd forbindelsen" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "Forbind" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "Nedstrøms" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "Opstrøms" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "Krydsforbindelse" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "Patchpanel/port" @@ -13614,39 +13521,10 @@ msgstr "Patchpanel/port" msgid "Add circuit" msgstr "Tilføj kredsløb" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "Leverandørkonto" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "Tilføj et virtuelt kredsløb" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "Tilføj opsigelse" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "Virtuel kredsløbsafslutning" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "Tilføj virtuelt kredsløb" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "Virtuel kredsløbstype" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "Konfigurationsdata" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "Kommentar" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13669,31 +13547,11 @@ msgstr "Ny værdi" msgid "Changed" msgstr "Ændret" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "bytes" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "SHA256 Hash" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "Indhold" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "Sidst synkroniseret" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "Backend" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "Ingen parametre defineret" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "Rackhøjder" @@ -13752,71 +13610,11 @@ msgstr "Datafilen, der er knyttet til dette objekt, er blevet slettet" msgid "Data Synced" msgstr "Data synkroniseret" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "Job" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "Oprettet af" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "Planlægning" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "hver %(interval)s minutter" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "Ændre" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "Forskel" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "Tidligere" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "Næste" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "Objekt oprettet" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "Objekt slettet" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "Ingen ændringer" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "Data før ændring" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Advarsel: Sammenligning af ikke-atomær ændring med tidligere ændringsrekord" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "Data efter ændring" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Se alle %(count)s Ændringer" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -13832,6 +13630,60 @@ msgstr "dage" msgid "Indefinite" msgstr "Ubestemt" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "Kommentar" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "Konfigurationsdata" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "Ingen parametre defineret" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "Forskel" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "Tidligere" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "Næste" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "Objekt oprettet" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "Objekt slettet" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "Ingen ændringer" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "Data efter ændring" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "Data før ændring" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Advarsel: Sammenligning af ikke-atomær ændring med tidligere ændringsrekord" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Se alle %(count)s Ændringer" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "Ikke installeret" @@ -14120,22 +13972,13 @@ msgstr "Segmenter" msgid "Incomplete" msgstr "Ufuldstændig" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "Ikke tilsluttet" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT til" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "NATTO" @@ -14143,7 +13986,7 @@ msgstr "NATTO" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "Kopier til udklipsholder" @@ -14193,10 +14036,6 @@ msgstr "Fjern" msgid "Local Config Context Data" msgstr "Lokale konfigurationskontekstdata" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "Enhedsplads" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -14224,34 +14063,6 @@ msgstr "Bugt" msgid "Add Device" msgstr "Tilføj enhed" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "Positioner" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "Markeret som tilsluttet" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "Forbindelsesstatus" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "Havnekortlægninger" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "Der er ikke defineret nogen kortlægninger" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "En side" @@ -14277,6 +14088,8 @@ msgid "Path Status" msgstr "Stistatus" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "Ikke tilgængelig" @@ -14285,8 +14098,6 @@ msgid "Path Endpoints" msgstr "Stiendepunkter" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "Ikke tilsluttet" @@ -14332,94 +14143,10 @@ msgstr "Rackhøjde" msgid "Loading..." msgstr "Indlæser..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "Tilføj underordnet grænseflade" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "Hastighed/Duplex" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "PoE-tilstand" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "PoE-type" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "Brobaserede grænseflader" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "VLAN-oversættelse" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "Trådløs forbindelse" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "Kanal" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "Kanalfrekvens" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "MHz" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "Kanalbredde" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "Tilføj IP-adresse" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "Tilføj MAC-adresse" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "Overordnet element" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "Artikel-ID" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "Aktivemærke" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "Primær til grænseflade" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "Tilføj enhedstype" @@ -14428,6 +14155,64 @@ msgstr "Tilføj enhedstype" msgid "Add Module Type" msgstr "Tilføj modultype" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "Stistatus" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "Stien endepunkter" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "Ikke tilsluttet" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "Havnekortlægninger" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "Der er ikke defineret nogen kortlægninger" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "Trådløs forbindelse" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "Kanal" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "Kanalfrekvens" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "MHz" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "Kanalbredde" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "Ingen profil tildelt" @@ -14447,7 +14232,7 @@ msgstr "Allokeret" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "VA" @@ -14471,44 +14256,6 @@ msgstr "Kun billeder" msgid "Labels only" msgstr "Kun etiketter" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "Tilsluttet enhed" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "Udnyttelse (allokeret" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "Elektriske egenskaber" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "EN" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "Foderben" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "Tilføj strømforsyninger" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "Maksimal lodtrækning" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "Tildelt lodtrækning" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "Tilføj reservation" @@ -14548,10 +14295,6 @@ msgstr "Tilføj område" msgid "Attachment" msgstr "Vedhæftet fil" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "Tilføj medlem" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14603,10 +14346,6 @@ msgstr "" "Er du sikker på, at du vil fjerne %(device)s fra virtuelt " "chassis %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "Identifikator" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -14943,6 +14682,10 @@ msgstr "" msgid "Journal Entry" msgstr "Journalindtastning" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "Oprettet af" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "Meddelelsesgruppe" @@ -15435,37 +15178,15 @@ msgstr "Log ud" msgid "Log In" msgstr "Log ind" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Familie" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "Dato tilføjet" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "Tilføj præfiks" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "AS-nummer" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "Autentificeringstype" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "Autentificeringsnøgle" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "Virtuelle IP-adresser" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "Globalt" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15500,15 +15221,6 @@ msgstr "Vis tilgængelig" msgid "Show All" msgstr "Vis alle" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "Globalt" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (udenfor)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "Tildel en IP-adresse" @@ -15525,51 +15237,43 @@ msgstr "Søgeresultater" msgid "Bulk Add IP Addresses" msgstr "Massetilføjelse af IP-adresser" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "Startadresse" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "Slutadresse" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "Adresseringsoplysninger" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "Markeret fuldt udnyttet" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "Børne-IP'er" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "Tilgængelige IP'er" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "Første tilgængelige IP" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "Præfiksdetaljer" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "Netværksadresse" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "Netværksmaske" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "Jokertegnmaske" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "Broadcast-adresse" @@ -15581,58 +15285,14 @@ msgstr "Tilføj IP-rækkevidde" msgid "Hide Depth Indicators" msgstr "Skjul dybdeindikatorer" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "Tilføj aggregat" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "Importere VRF'er" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "Eksport af VRF'er" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "Import af L2VPN'er" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "Eksport af L2VPN'er" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Q-in-Q-rolle" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "Tilføj et præfiks" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "Kunde-VLAN'er" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "Tilføj et VLAN" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "Tilføj VLAN" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "Tilføj regel" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "Ruteadskillelse" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "Unik IP-plads" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15700,61 +15360,14 @@ msgid "Click here to attempt loading NetBox again." msgstr "" "Klik her for at forsøge at indlæse NetBox igen." -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "Kontakt" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "Titel" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "Telefonen" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "Kontaktgruppe" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "Tilføj kontaktgruppe" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "Kontaktrolle" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "Tilføj en kontakt" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "Tilføj lejer" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "Lejergruppe" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "Tilføj lejergruppe" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -15865,16 +15478,28 @@ msgstr "IPsec-politik" msgid "PFS Group" msgstr "PFS-gruppen" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "Tilføj opsigelse" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "Tilføj tunnel" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "Kanalfrekvens" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "MHz" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "Kanalbredde" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "Tilføj trådløst LAN" @@ -15909,6 +15534,20 @@ msgstr "Kontaktrolle (ID)" msgid "Contact role (slug)" msgstr "Kontaktrolle (slug)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "Kontakt" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "Kontaktrolle" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "Kontaktgruppe" @@ -15941,6 +15580,15 @@ msgstr "Tilføj grupper" msgid "Remove groups" msgstr "Fjern grupper" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "Titel" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "Telefonen" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -15953,6 +15601,17 @@ msgstr "" msgid "Assigned contact" msgstr "Tildelt kontakt" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "Lejergruppe" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "Kontaktgruppe" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "kontaktgruppe" @@ -16054,6 +15713,14 @@ msgstr "Kontakt Link" msgid "Contact Description" msgstr "Kontakt Beskrivelse" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "Tilføj lejergruppe" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "Tilføj kontaktgruppe" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -17328,10 +16995,6 @@ msgstr "Tilføjet {count} enheder til klynge {cluster}" msgid "Assigned VLANs" msgstr "Tildelte VLAN'er" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "Børnegrænseflader" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPsec - Transport" diff --git a/netbox/translations/de/LC_MESSAGES/django.mo b/netbox/translations/de/LC_MESSAGES/django.mo index 6f382be6f12fbe0aa9bd530f79dcb49aab274bcc..35b9ab0d2f6a08bc677669fe5067f1411b17e75d 100644 GIT binary patch delta 76096 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⁢(ZA96v)&c9X+gA|%IG$2g6^7*sWSVoKNof| z0$;$1NOhw4r0|ET%dj2g-=huh4u3T9FgB+CV|0J#yC*&MZz8Y8R+I-}H(ZUkV*0(| z@6p_b4^iHU{p_gIed&prxE5WEby<|1@FBE=!_lIXL&G=Y80ufZu6WIqu;@mi9k0bU zcpm#>)2Zo+oA5boglW^lfSO>kBNcPGXn{xZdd!?2{&aUBwx|3mx>^(Whd+L9hpj0t z#=3YST5Lx6TV}nmJN3_?yXsH0-Qo{~qr4xQv7ryJ|2^C9pu!Vx61uG>V-B2-PR(p| zu|0v#;d8OPE|#~Vt9&>5WA{f`3{Ro$<(wJX%Z;v$0%&{XW|CSvszrqX+<;eLGjyN# zKsy{9%VW?_!zt03==Pk89?474_g16rzKP9oC)$3l2SdkKpo_3*k_%UHWh{$L(Gd(s zSM3b+LuOH|e-$0UhvD*F3|g=k>OSGlmk^Jql5 zW`ztC!Bk*q!%fjo$DU{dW6}5Kpzkfi;`l1s;r@94k9hx*hr>V$qU}{d+DRswa$&>$ z&<-b|Bb$q6Vg+X6+p&Bynl?K$bPf8OlPYKctMW&!Ka_6)WQobV`56 z)X)Ey&I^m;a&$LbgOjjyEH90&LSK9hUF{#DyWS{vSp~-Y3#i|8I}?psD&1&BU*0O8-Gm!t76m5w%7Sm<8y; z@&h)-(u+dix1rBJh#p{j&?znaRQxW9es8$tDfYi7(M~Gd_j}Pra}-@nXVFX)TpY@E z(C2zbhoSrYUNqnt=>DIFPT>+Xu&bXA1MG(*DSwDQUqAUwn8W7LPUww3=r$XS9x#)m z^U#xPDZ02`M%TbjH02+oQ}|shr!NWh1)}BAslEYiKiQoNSNR?2ws{4e2BkTrAH)531$pn%EcaClklwjSJ{Gkhv__1l{-j z&^f#x9pPu_2u`BU|BFu9)z5|zRmF;w+hR$ah<3Ob9mrbr`R(|C`~LtJsfd?{lWQDa z#{-X`Q?UGb2=ET{xx3L5a2k5_&O|$W9G#*Uu?4=4rurh9nS85)h0sh~ zyDAwXu0(~AHAeSyt61)g%_;Xn_wh4m>W`xb(|_n9yzHg)LDn%&F~A!cw-~l;BIsz2e35$h-EPE%i&k1bmQm#q#K#!8ek z(T=;Jfel8dJUJ}hxDzW-@c_EL)?;nljWsZBP1uIDur=jr=+x{*8$5uf{3~=Vlv*1y zSr_fNF&bDGbO1MpaxyW33mck*&fRqEiu2G{yp(CzpuHgo^CS|9$R{cNnujXn4N3+4FG#<^Rw%FyQqN z$n!YfdYpvg-w5Sju?OW_H-xi(E8a-C;>M7{2e1?6&#?vlCo(sM2uDPhVd??w;Qh_v zXT$MmwZfJ`8qxVOkQ!xRZf>~G!7o%%tJElJW3%(g%D2}e?3fLZ7 zqI3Hgx?P?^J6MG_ydk;=+fqJ?W~jo}unR^-r(kR9A3+283f*PDY-Rsf=HeU`o@|+K zg%LGG7fBm*G4{d|I4YJGpu6Nn^vmX(=s|TDJ$lcg@8#VVKD5e28=^;jPjqn)-oaUbQ}mixoZd+n`f$6Z%bQ zEV|8RpqI2mwEbb|dsAY0{)g;;BU?#@t9(5gz(>*V&{X{$&9XOSDmR*;47A}2 z=-f9(-|v8Cav++y@n|3qqUXf2cz?@Y_P>j3Z+!4XeDEL4pg!Ne@InoAHMd9CN3Jv8(%SF)_%17%)Tc90vLjxaz zj&w5G;DT6QiH>*^denY`9?gf)j9&Y37*Mh-7cPc+XvdAB?PL9o=*S14sUCy=WHb|P zcoljctj7lUDcWA%PeMlp(bZoZZKomnUMHl#WTH10j`UWni{rwL#Oml~bgth=pZgTu zX5Yl}IW)!DJ`LtaJ1U7jR};%(TQpPS(6u%LQ-A*dEEgV$TcU^2MRFna0RKecvyke_ zXbM|m2b_i7@eo$Ts{2DG`l9E@J!nR!q6f}gG_XBr2999rFKd0zMLHF~p>y*m`t9~# z^ua8j2QNcMdQ~i!LQ`ESmTRKBsR5d?*68!y&_y~BZGS8p;Jujo^S^0a_~INi;zj6U zT8XvrP4tD|(T2}sIn44!c&`#(N4Xw0!*Q{G6FTCZ=%W1s&D1G$trR%G{%^%aw*z5L zo<`?*6Z+!&XvYW95qur}CHgORqdw2U@a=aXdLllHPR*a_`)$4q+qM%r&|YXjgT7?{ zo8k#nxLqcr8F&KC!1GuJH>0cnIJ$VwqhBub9}0`C1N#18^hCTD{lc;ceQzt4#m~^S zbupF;BoBupvmu(&8_@`-<20OyW+MNQa3Gb&>Xcicf!>9^a0Z%*qv(KYeib@yfX;bW zbU=O4#XbfHVR8W%{@`#9jjZ<9VexfBQ{EkIa4@=kMxrU5j0QFXGjJgq&_-;9JMk{e zb2PL!6J4yc(E&b+Om#A`lnXmp6WxF|{5CpApP;MwJ2aJlpd-ooO$g{(bj?&n1HJ)$ zzeB9Q8C|p^&;Tc*?cI;5&;Lic@P(5&3eTe>7z4LZW#V>!pSp~0)s50f(373-sOIv4#g zdJ;R}GBmZnVrr40Yo)+MmAZo;ICW_WyHJKEr0bdh|Hz>It2sK?Kc{o(j9m!eu$>L#)W88u zyBlrj0W=ejqbKE$XsXYk1IYeExPLjO0z)%A8l9?X=m4JmAsJGH^3V#1BJ<$m3{hprsKV_PP%_(R7BmC~S z4I041=pz3DyI_Ss!yjVZhi&}+zmE$)y$YWV|I)V`PNaMW{aQWrudoQ8M^nBLGjSVw z#-BjH;p99Qc1Ia>k+wvi?}2XXzUUW{v6z7mVR8CTyu^j8bT9hi;aL6=T?^-9IqUhb zsPdt!y%0JzRnd&KM+51BHEDeOJLH5YQ~CocqQe2Xdq+Iqjn1V z+~ertTZ1;RE&2(%O}~xhztC-#f6C@%#U>cw;r%&|B#C`vlFv z*YW<3XeuwDfn9MSJeP?+S0maG?XWF6kUnUpZpRFK09~XnTwwn@N9(C@^=?KN-8=Dt zBWP+*#`3S|s=t7)4gSj>smwG$1MiN0Mhrz$J_UV#7Mihn=(c_qZFhH)3%^u;h8`FN z{})D56m6g!I+7Z(zG}_f&Lh zS0GcCOswa^x!8uz)oyf=d>P9>qKooxbo=B^5BE!Oa>05f?^y5KZN2bfg8dWMM3P?4li1h~*mS?~3Z62h*$QT<$|x{Q-0;|3U+~ zh|YbEtRcXw(fh?LyZ=jbVT#M6FH}R%g9hk}ZPASMjgCY!mP7-6D7pySQ(lF4;(7GB zQQ5)(CZQRcioW*%CY_6gT!AC%E1JSP&=KB=b~Gi{ zFF^-$13ZWZ^lNth&+0r-vgHUB*Py>ntBQ`iE!sh+Snh*vul})q2{xg; z3SBEdV>N1~@X_zb85eeQqf-kYr*V7tYE1=!-|u27f{q+rMZ-`7R5AW}x*| z(dU}Q`W~@-E85P)=>1rh@&fb#+JY{=qgcYv|MOh8yboEX{Q~5-^|6(j}N1yvN`W?FM{=y8*c}2Ki9+Pgj>$&iOKImE)i8g#6 zdh*Rhcf&%gg^SU}`YHMuaSR!bHOq36ZzSQBTUbG`-r)Z33$uyTI(zpJ@l z{;y2(JkmXu?PJgZ~_}($*Z!YzDo{>F2+XGA3#T3s6fbE6?6bM zB;!RV^rX54{hS_-&G1$9yM&=5cB9=h5eX$5wb_k<L;h(SeNoc=%U?$4c!0Pif2jvt<VFx{)F#a7{{NZ_x6=>k4;1In z7q2cE8qSQ?M(bOk+pSBqFS@;kVphBZeQrFOxheP+Za~+_W2HiXJ23ShYv0R-bAK$F zrF58r(&%EDh&QHj1ZRd%xe;Z;fixQ3B@adyqXSrrF1An6ZTvgB%`Yh%7Vov_LD!@# z``>Lbf(o6EruHdxByXULZworY3+NPNDHk%9ADd7viKFpW?1Klg%ERXQKfvLfd-=Q~&;NWxVkUn%dXUDcOu>WG`07!|117o*LoA zY>VwEPeVukG5X$NbP9fn_5VW$mZN6KOd%{uxqMCbzb|&6!tK=?4PYcXvTB?YK4pzMLz>-qPwF#n$dn}`-5w-{~h6IDojxl4d~(cz(O?g z<>;KQM@P6b)*p=ZKcE5rg9e_y6VQ=OMLS-AM!p2i$Qm@@w`2Jr+To9Adw-zqWUU|GzZ`w92-;5NRGIzP zfQzA2bVM82h^BIT>H&V0g3kFdG-ZFHi{}D5r`fL$mKzda#T` zGcysLvgxrrKbD_HQ@;w$^roile?RZvp~94Xh3?m1(UUG`v#_}GUo&f6dwdMto(95OFbdQB_1=Xcp~?&fzWS z+8Bdwr^)EZXQBt#!|0-0hPLx^EWeAs_fhmKGy|uT@#0T(#Q#GVO?u1FV1D$opb6`Ch*t_W5ABp9&Sj5l&-0i}M%cHBd z0S?DDXv7=P?eZDA{|mJbYo-`lu7GB&IvQwmwBzn*V7H%oCH3FWd;~o={>J85qjQ$qQ zb@#C9>!9u2gbr{R`rbWgzz?GVJdxzWkuO8H;fv^lJJ5(fLmT)S-DYRd)ts$I7+Fzt zk=8`FRVVcRNGyXh(8ad~ZFeWSRz64DPyP@u{y-PSzvw}f-ZPZ5qp8n@29k-c>N?TZ z=pyWc?)Tf!=jWiS{Ke>c^tr8QfP0X@l8JA*a0LIL2TXxp;jFKRMt);-G*+cN6FuuU zp(($JPC?<`VZ`;ZCgp+X0rmve!gsMH{)2U}$&JeXpTtEb6|Z7N{1Ol2C4EB5kE0_x zj~RI7O`+qOXvdw=-7yx;z+!BL+tC4B+Bb~2I2v$0bf7)3GyNy-;=%{_psV{hW?)*s zaAK7}=e9ojsn#3Y<6YPl-^b2)&CQ{s5$NK(A6+w#q61ik8MqTupMsb)lK;4H1SR^1 z@8xZ=9OY5yf$}6evej7o|7D#8c$7!?w|BF_-5nNp*W&J4TuXoeK>|c@Sgg2Ppje?$ zv}j=|#R^3Wlu~GcwrJ5}MN0AS{_S(}zWKl3T-R{VoH;hyaQ}4;zC@tEEN+3N;X|9}?B;x}=M$)F_&ro2mtZh_ z4;9$c-8s#vpypYj?s*}TmxnqNHQ@j_1S;;G?mlNHPY}rATc{nodpHi$L7ieR3^;^= z(+^eR2Cyn@2OGc`s6%!g>U~l$)JeEF)HQDf<);%Y1jBp`bgkw?9i}x1?q4Qg*rPcpelF(>V4q*lR;hv&!OJsnR|Hx zzpSklR3cwPIX($>dM`m8wtt`k*YE9oLed=S{o#YE*m$V*88%;F^A%7pp0$t-_*~l= zsPy03!a-Pp`41)!4s$Y11eHK0sC!)ws$$)sN;&~5;2fyZFNQh`E1)X%6;wrbnfxrQ zuKRz5L0cAb^l`4m5U5w=Y$!)xK$U7e)U*Ev>h%8r72sE!--6oN-%u5MYfRGDnP-N2 z)CFx`5e9z#w*dn=Yzy_QyF)n|0p(~S)H7XR^Yu304fWddz!3J(5k~+hma2`n|s6?7V$$OeS%H)%v z5?lfGzSs=)%nw7Il|P^tet>%8dIxg1o6$=^WjG~OV`J~>oHvO-m^h>w9Xu5N;6P=~BL)FF(93Ow273!$#%dZ=f9 zz~*O-x1j>Qg$fie!eKh7S8`scctvdPtHeN#YC>h+(%2O$k^WGJ$_JIuQd{2w~%u36wk?R7LVYtrxZRQZVq#nkzFD_4*F#6#oL{=RT|n^AC4kKz*R}XF}<(Fn$enwoVM^ z{_9Qkn=O2RdbVjtI3>>rby#viB~$_GQB{SymUW;UwSY}wci0eahk8Wspc0Hf(&M@X zGsCvfHOe`x?M89`bcz9+)$6GsE>gZTEo1s2UNhRPzikomEa~Qy(6$BJP*sj_+y<%Rtf6O zSQqN!d>50Ch6+3dHis*q{5^p>8@@#29K%#l4huppbb&=-PpDGPhbs9pr~vDs4&Mo= z&wze`MPRz|&gTa;VH4)_p$9w<`+_*2n)+4D^O84^`q;P&@4o zwW9&B5nKv&`0hfz(H=v+5erOo0#<^mTob57T0{Bk0(A)cL%k8lLM6OJa^3&+3{=v6 zP=Wt|O6VRe2;)z3c2WZBc9es`u%gYYL7kaeP&;pF4261e4S`-b7ODcPpbq&C82J9* zaR$opcc@Z5fi>V8SRGcG?Cfkb)FYS(mFPU1uYg6FZ-Uy{W#e5~n)yFal`AyGNwg%C zeT^yHf1SoA2vn+`Q1fW$g)^ZHw?G-}f_n2Eg2mw-SQciO>g=ouEXTYHR0S76J(BHE zXJHT21`a~SJ3W70*&96f|xVa^#&;Binpm;&DlYtBlLmi&eP^G;JRgo04oB%nXN|qlgfpW%1PlJAB}a6gp&QK&j~s#PHI!n|Y)3H_l!IJQdWCFW4l3cQ zP!(zpRq{o)z7i_Y^-vq!Z|ldQ9{Eo&neP8B6Fh@@Rte@fObz8A8&pE2pmtir<}IKc zb%nauQMNu4>P5C3>OHZ`_!w&E1?D;leFPKe{?}rlXVeI42koE&hCm&P$P0xpN4@Ch6N+syOuW11W?SPV9s?|cv&4RyVjLZ5bYg@GJCf`L;DRqA(8 zi6mO!%rio*=Yi5M3YAc4s14MBsz_6)v(ODH@d;3RGokdBLVcdFegXGif(HoX_!X=V zgBCg;R2o5LIu+_wdkQMCt59d+FQ`&KgI<^<#;I5lV`->FD?<6N4yE4!>NBj681BDH zG!%iJ{R^XOk@Jd80`&+|LcN$WKvk>+)Xu6yJ=2Cz_8p-d_k{YWI0{OCFVqLCQ&9K* z22^F=`55SpmUOZ6alIszL3gOYkx&&H4s{qOK?Pb0^|4?rR3$b-1>OO*!;??}Z`k}_ zC_gDbbL_K0t@{cv=*yrgRKN{T&uW_~9DsrQYP=1V`Aevs#9!i6DkoGT`HaP&0+xe~ zU@fQ@+AOF?u?eyvpKB)r8J>hPI0yBtuR>MgDb&t`mO245KqXWPYP}ZJdP`gHZR_J< zN#yfkYj_muk!4-xyf^Z}z<<_Ofq@*>gDOcon}hnRI0$8T3F`je zhuT^2a%VjmEXX_`RHDtH*1JOKhrwdH|Kl0x>x@ay~C_2z6Q`U^6%iwuD!qUPz@kJD(XvL;byA z7t9II8~=eid>OZRT-{(p*bsgN^TB_i{N?a%bux{F?GZeL17N*vp1}VM=7&=JXuIAmD!3TdgO$H^&eQ~` zjeZNmbpO-sb-rligPmEp1EXM_eV)Mo{Iv(Fgd_JmAKk7(mAcLW=WorupyuPDO1=hO za`R<5Sd;m-@0`Q;9BRke4mlNB86fxX0fV|Mlt1jesYb(A%um9RFvs`y%7wZt9{@K4{g+`; z1bUTLgSBCEsB5(VDzP0Ec1g<`ZZ5G8=4GNsl`xd zV>48ue?nFAiI0K4_7ne%^T}c^s8?=Bm;)|>s>HWYA9OB3UDu~jk0j}j&YLhjtirr0 zECQ!PosDmx^e;l)lBZBFqO@n7iugWZppWBIU<0@sD&t2c_x$8spX@O3Q4;Fi-wx_c zHXiC0Y=C-1JD~KwgL=m2VBk!^T+ClWC7$_Q;G-gc|7RcvWuP*y0=4r_us$3KWq1VY zFx`a;^cbdq@1RPV>}TiD<%XJR0@m=E>=w9xG zI<0%4O1B@X0zcS#+Fza0Wr7Nn8)}EeZC(|s^bMh&c}FNe(NHg_akf4cDv>2H@SnA; zW}s`h9qO=s5B1US2GpVX0CU5f7oDBgfjW$xp%NJk^~vWrsDO*1K8Sq@b(Yd!a{L#D zd6-v$^55+e_g|&-A&|ous06k`oq;n@Z>mR7J9`fGY~x*a9A<%fmPMiDRiON}gxXP>bG>XXvnpfZ01E5RhcId=7+cGei` z6PiIVFWdxG!E>-Ud=6E~JimJa|0!&J9|IZgfJNa&SOCWV!+G|_p%NPk^$bTrRpL{d zFN8X5%b_Z<$>w{Z5k_ql2?P-&Y%W!B9&7%Ic5uq^xn z>P>kGs-!QV4p)ZjP9jC1PJKP7iiSYFPbNYyTmyABjzamp0xRhLzht1#c1zrF-UGd$ z650i2a01Hlbyx$wfqKSOZaO6&3Z*w0s??tw*TdS(w?mcwCDhL2|LNFgg`9uB@5exg zts_(^dqF+Z(NLLAhkEvFU`zOw&E2;gM~R?rO>L+Ix>Wr+1e;CL4Ayv z235JaP!-q+by#;mC3ptvtX;hCa|RC(C{x#8&bvGw)R{;Ki^FPA4hKM;?#WOe1vkMS z@K=~0R({|-f*w$b^oQC=6x2q2P#gFZDzRk}DDWDnXSV^$UX9sJO_73rbgoE4zt?V$Yif$|e=b6+f{+QI@TgB4JLwn6RqN2nLcU8vI=?~zln zEKs+kxXo)qUB@=YzEB$&1NG=8K%IfP#^n%wpKF6D9Dpj(Y2(jO8DD~`%uSm=fO>ZS zKm|(J*q0kHYOhcbt^uF+Tc>CN4yp4&3Fj<^eVk>3ZAFV>C6Cih>Alm zYzFlP90*m3sZa?nvH2HJXW?t84IG22&;_Up{Au#Pp&sQ2W5Q?Le+g1Oa~x-e+DT!k zYgQX7k={@VOt$q^#&4lYc^<0dSD;FK&*qPz5_k=zm*BZ`2vb4HvpwhjEAv7KRH7b{?Y+W940zYA6B;1|vYb3^HufvQvu9|L9H z%oaL8m9`gD-~l!t3iT!&1N8`IL)oo_+Q25LvvB~*{ybDdzZ-8tC3YXG60e{V@Ol1m z9HxRg?YW?KUJWWhZ773gw%#6gXFeDz@MTyDK7vPRz5ICJsid$hmcmV2!aT{vqPoWYD`qxP?8B`@wLnW9SDnL;vyZTU-Xa!~03Ce#j zs9P}@X3+hg!9b4IKn2pUIr+6E~x8P(&V+E z{5FM(*HP=b|NR&!XCi~ z^?qpsr56SDYMuZC|Neh6136j%<#+{DLYtv>um|ceo`Q04!FUVG?gfOKm9_~2Wz-Jp{&s>2*bQpOeW7+X4l02ds07zS1=wNS1LgQT zTR#gG_;)CO*Nyj$&)#tVmB3pBdNv8(I*!vqW$J}GY3u^^UI>Fqbga!6 zK|Qjqur53bb;y&wb1Iq>>adpfF_7b?PziK~Is<*6N;}ln$3azQ4%CigY`z@IZZ*^! zavRh${{hPHU8tSEgsPnDy|b~DP#f{(WFUt{ph{XAD)VYkrE3k9PzR`r^oH8;FsN7c z9Hdc&i+Q1bkzjvVmK8Mo#0P*W{CI8@*E-TbRX=6<&!xm7PcZN!!KUAql zLnX4n*1v)ZxDP6!V^Ed2YezU=}y8i_kXs1>AQyJERfqM#-P)DfJ_kp_i z1EF>}6w2XLD7|@5iLQbQupR0d?}yU61Xal!P;s8XjJp4C7|0;4+fndB&5J>mxT3Ko zlwm)pfJ2NEjSHYYD6NM2pmPwaVppLm^#poh!l2;5BQFR8KmT8Xfu4B)&nZw zFsL&!!8i>n!MRW+UkKT@Ra#RZ{k&mGsL1(DIp-_)zfH4|Me+0|{r$SX?15_d>pf++DDv|3RpX2yG0zLB= zP!5BF9mRxDhbRS<<04QyuLM=0dQkVe6AYXUr~pG@1?YoS;ci$RzO?lU@f<(Zd<+!0 z5tM^=P>#DoWf%<=U^JB8T&SI|fYM(N10{#jKLC~Jai~iE3Z;JsO8;*tKd+$leevTv ziYcI;Ne-wAl!H>N43$6wC`X;440}OUVj$FxM?yWK@g|=M74S2tTd>OJ`=HL+5y+wR zxqf4ycmFe}fG?q*eQ*Nj&}4u*BL$(>i$U$U5>$W&P&;h_^^8NH5{-b`$VjM)jDzws z2P*M}fpzZRDhB%c-8x&?7+B!jaK?R56*vsF(_f(iT!BjHE>uDGwbM6H z6>=qVHjof1!K_fXqa^fs8MI)a4;~Rv4yHq$g|){0#tTpm9zZ4NPV79Y3{Vv+1htW> zP=V{&yqV40K|QLjQ2GNCbN^MM2?&(&G^l4Y8>$jZp?0<&suEkEp5-1GxX&iP4CU|^ ztOZ}eC9q18;K26@F2S0Fki~xz<0riLcLGEH(vKK$c^AV)C(h5 zs$l2q|8Ow#C9pP3ojN%1v!HFEcK8F-4pO9XO5PY&Vcr@Rfb(EIxEEG~!D)j7zm&c< z)JB&;#r6GSgV(S)g6!#>iZq2fr9S9^GmLYfn|WoPTXf)b@pWFF)vxpvJS+X4i1n;Z zfGIfcOE7-SGc8E}oH@TXFwpAoJpbVHPuCwj_}NU(%BwX!Tea4D__RSd=><1&x^^oY zT5}vN#xAWne2%OF>(6vhtfeHW@+A4z5?ycd&zO%SnacY8Tk{!IG$-R3$F>_bo=0M5 zNTfP}V{}@reN3?K1iOk}2V}KbOU5oU(~n|Pli-i&*Rj+84VR7>ZCUG&-9hvVYQwt! z6mfyU^(G+72@x6pB;zY;&qaQu|H+9WFCAy_2Iv}68& zo{I6$R3QQUmv!H3996~1G1wAzuyPe4`?0p8(yS$CP3;p0uFkeL31|AG^Qg&-vfD*C zpH07MiL7B9+lJ!nAv(1QPUGMIvzx`vBp|uZP7>I2`VmPQ8*A}1L?cVs@1G&<7A8oW#;GZfrY! z#yo>L{*8opGgs?Hz@7wXVDpVeelNMJF@b{6eMm5Vw{4)+VSTG@s=Lp2o*ji|^rskX zwny**#k4%nBjzxI;B!gr4(qjHY@5M+r~IHB+YYj+u8QX#mQxiW@DgV3jPK1w$MXgg={eM*93UNTx>CptsjN`kuk*18*RuQPhyp?y-%o}qp z*jE-0SMcz+rR`^YmGMZT@JnM|Pstz`UWcG}To0MGu8fNzSF1~Jg8T;2ma|p|uBD&H z_Nry}H4z_U6NX%^F8(qwFBJG~pN`Dc52ckj8i3MNbAE=Di{P{yeGm?7m;;%#WZa3q zgG3jak67#_K;Y+S5Ja;63&93sUlw_4^L>JNjr7yL<5_q~jS}%tKPO;if;Gip6wa@) zgLfGGL4VGePsv+_vc~{zZTt2=*{O!FV>xYR_EK z{V3zRFbbRMFt)X1_u&L>ZOKi=R}Xye!>`)cY^)aR;qi&THIAVcD-mP{j`v`61_#ZU z-^OsJB~b}uwKL53*-kX?WX>a5KTS`G?IRLPj{nPMQw^OU0x!mH5VBA= zC{_W^XCtMs&CVwBGoM5v1>o6Lv$Q1;N(E|F0d8#@wqkCS&6Fb_ug z>A8`;LANHo1^T_1U&El8ZQ>;X#$i*1N6?eCVX%-M2MOz=d<~8%e+_kwfxadv)@0C= z^(*w)_BRS+>04u+Vi?;l+jG=>f+e?^^%D5mV>^Cek3c$~+|oCuBYNs(+wOF$2D{l9B zdYxGR+}1zF*D}`l-P-?YRkWt~$59?cMqd)FBthQd;05EgI4DOl58!fSsTtp;t3AS5 zGHi}9)<^E-=%+B}-?J7UoB9NJjNK*Hvs%*SsNz}1KT^p>tozy{_?WIX1Ld_OliA8# z+k$Cr7fyH6*IAJB7H#R-uJSNEx;xiX|YJXsVnZ*Cbwy^%y>oc6@ zvIOohR(nPE@iBOfQf#|T)^lwBD?6%>uD&{V5$9?fNnS0&5}a!R=fl0WmYKk@?HK;b z>3_X1h@=iq=8$YG5!W;evCh3{1L&XYm6){_6_iL)DjrZ z{E#Iv5&0h^KMLLM=2Jz+xvZANFfIm?Ay ztuGGrwWj;5tIcEm0m=W!`bvDnwvyJGOeMoo9#9Jl3x8a|<|;@$cyUMdyD4aQ&&DdVGn& z0sj6@osFVA^#J*WsKF{ zvUbn>RMA&mT3V^5!kY9QIJiQl73m%eoQa)m#poQBdT#-LB8jO4Nyx7A;B+EuWwBok zi({*{m42V~rTF|7U;U7m!PiS{C(}>pv$Z8G48o9ain#t}J{Qiy@hIf{xIm!kKPgsA zWAj?D7tZn_Ta4{t0u)039`i_cIvkl=A^NxYI!F?Q3Al=0$~LeC8((??E=FNHM*A%5 zM;H%7X$A5i)>p`gtiQAp&W5!yUWeW^#tG2r%v|kT0-ZqqsrhPypN~lFZ{%r_eS)r+ zv9-YYbB!WUZyc2;NEpG+FfW8+QO0pwT^v`T63yWT+eI!E?qGWuc|A+w0JaB^ZNyI) zJ~N^F0-Ht1vmhI1$py~;S_JPgzJQ}Hmf1^-TJ*n}1|+}WC_aut(4T{|4y@-j-Diw9 zGuG!;LrBB}2cmxr|7r&rS7$>PNldMdd^`K+3Ry;HQ7TKu8BxkbAhqHcEu-^oLswHA zuZ2D7@sM?+tFjQPeI_uB%#)T zwNLOd6<_-K;t%MQWFFhfC$#!^vCIw`rJ!#}E+@Hmun~@?;5Z8TEu76nzLdnqpwItn z<4Vg0V%s$2Pe}GUIyvDv>Eok3!3V=xwjt?{Qc2a`nQ#Mq%Dfzg9xHohd$!3)qNN4u z4R@nAjUfE2q-zODgqWWE%|<=~A9qcEGvnBnh$K>)+}9VUB{5D)$)@AzZ+L;gi{V+E zR5hn7F}fJ*!I+Bm(j@!?^8@JDWHU?Y`S8~WUr$&|Y8(3m-Ga!r5ibco2hj^BuR{1=kQjyOFhL z?FWJtA(7Pa z(%kLDRRk{D5+VnA)RtdbU1a^3Uso;ANlO}P1?WwXrJ+8%u{n;fam-^9@CBwbEUsc9 zJHc|p)f8~OZEiJehvGSVdi~|i+CBm-qpO{t=jJc@jnSTJnqOj-oRu-8e-MwgSo;EP zWt5mTwP3iAly5UGWD)0}<3XMpKd)@-0cHO1qpRk@-zG{C#WsR*n8%U(TrJGWOt!HV zrDbN2%98qmy~nme7+=N7cW^F@fT32eJdDd?UlsiUl!YG`547`E|Dwp7A^X(i>5%`X zFRh*+P-YC`wsq_#3yDQpGJmo-h;c2e-45p07@x6uZk*4cyYbZry{^cACYf{itx3Q; z=qI)q3vFYHcUgDzCJQlSlN80DW4{U+_)6p|RR3UKJ4h!9?y6b1LRkEXd_VFpsGC}6 z*0!TR6))ZJwvlwIuwI<{tV6zw`3X{638T>o!Cvh;vWfWcBUAI!lb}QMxsD-h!6*R= z&0!@A_BpjFB^7JO2>9L}WPQfN37P}Pv27s22+;Kl$4*paot9C(@H33ldODsZD%i7|BC)QHeKjf z(9MC)D|DBWcvk!+#`nkQ+`!*`?4s#^F;}~Z%-5gYM3}>o?5Hk=u`LA-9+J#-6gMHy zVQV{4_!-?)taoGFg`k@WlmK7Pk=|ncpSY5z|++uW&q`wcqfg_BFk2V8kcOBzc(% z&BA7z*?gwwpN2^$l1Rhi&nWMM^{mvL;Z_^>Con$(@7l%sS2$7oo8*2VsM8~ zWEO-`0gQ?=R!gnj(q1ELXTdek#;#_Wj^=9FaeR+Jq1g1D=YE~Wmy5I(qj?-=AoSQc z>4jiXANdMo!FWE+mhPdO$D*`my*=LEW2bhH3_h5>ekP?i{Ur0>EyJwnJ;PpY2D|B% zi1MB_fg^VQ9LU3%ZS|7mE`2HnzoC1YAYbCp&Ac^wlX0paXqkfS4GDh9JS%#Sk)QS05I^JhkPM|J_5Zs;zf zs~sgkQxfjT`h2*K!26LWBSzYEFrIub zIIOK-tMfa;*jCCMR5!;JQ9Q{w7aVVE-{Y($iIjw&koXzw)55Cs1MDz6^PBWv39!>_ zGzk!>b!Xnz$`^_(ha+}PG~<6*A4vAQ zNHQl0&4W*nwYMELBjF9qW7|!tk{X>c2*$?>VK?-fv*s&@lY3^o1w(%P+tr_7Q6$xk zDl}rflO?o)jK5_5lj)ygr}1$T+qPS^GN3b&Ag{!H07<-YmR+M` zzririoD600oMm^G-StAA%Ce8ou5+?}AL9-L$V(yz=;6$7qvI#QFX%Ue^^l*0{n6iU z2{U!gB7xYpjB(it>~5?DXpeC{<{7OT*+}G1tdgPl&XP(PMP|tro{DbbmY)pr62IFOj;@voOEKx(DthgW6W}%4Bo|*&^msd2m(n z{ec+S;lRM}#3WD~Cf{Kkh4Mibe`DSl=W1&h55`a}6>ATXe~R7?#=GcI)TRNwKRUyh z&s8$myhHyDR7+(12HQKtDS%FYdT)Jos5VCJt-y{tpU$BeioziTA+S3Y7{J481gjG$ zIr^=r`6>7vyBlZ6`CoL^wwS*+_*R=rPh#UdB(t9lsBPEfJ%C`eW!RQ7J!Y{24muF% zI7&qc@V{*V0f)vBmd0iX`lr~P+9UiVqF=}M4}2G}gk~BGA-_Rv-)RfH9F}57MNAcwinK4CC)T2 zJ7|uhAPi;^>^q!&sU?DZMd16Cb~#i2gJM?^GCzXOXvfrb#&)ggW^_L{c{sW!=xQrT zdCDxZV3$>6;=AUc@S4SO81Vz?uHD)V+13PVnOVE+4Ec8$ zyg_V7|1eI8ekNNJf)yCq5rVg7d z@EwLdP*{L$EXpl$=Elh#f_{X9xg;^uDpm%)HrPGJ&v4eWp#MGV6J(E{kJ$ZN*2ZXK zw0PJJV*ET2e{(p`LIa%l#;BwzNU5lm_;<#82zZsQcFHmzkK>ahq}HCGPv~lYF#Z zX{ANajz6^@(CcVfry$NbWLNM}j_%8A4z{6u&J1Lf2E|f1ipJr56xEW#8U*f4Qq^#} zAKT}we~r8@@*LP~MK+jmK@v`DcI_>pglt6Z6?&gIGM{S`lN4k((rT9(!&f-35U0)~ z&{2C$u!$r&nzj0IlFiA(>xIK9*wt`U1ApdaKA9xu(i>pY1iffh`Y^6WG8uHY{z6cX z{yEBOe-cD3Bg)+|OlS|e0_;eT1IYd&_)j?4Kw=x%ZBDokyG%H~uZoyWw9)a1tyTM} zakRckS&AOR?iZ6lG){99xEQk7c8>8^tZgSq1j6TxeFt;`B>H_;3FHhBNZ;QV*&fMpkjdD*Wp%{NkfJG?WG38vwf6&<%C$Jn{Bw$&(mtBp)t_oxR-M(uF z^My(Pen1x6wz0Mly>Id9C4nW3+vxur?Z<*z2b8}>sDDNhiqbq13Fj(~WS$qQEyL;e zmPiH?Zpe5yRZ}~`I6r}Z#K%agu#5F{%wyXE{C$DE6#9Q4EDM+Er)JcG$><-PtMxTH zGd^6|pf$#7-AJZA!P3Kb7Q8vZzQgXi1x&#PF5vqvHYKf!&q*vFHiOMZzI@HeY8`@N zD3?R99Y<-Q#XXukURF!tc+Yul;TFOx`13|>&OdN^&%dJzKt$ozB07tvjZ z-3WHufO%JJ#xp+&8^O`Ydtuj~ARjDnXKXIvw>SD~VfdPZ&p`cOSn%DHcOV@fu50$Z zq&$%IOc*YQXJHw1D%m5r3zM0>bXzk1g+QYSUWuJ=qMxGIAdzu6uF85re4Ik}XZ_vk zlo@}8U@@5&$M6>d#I|=N;$z+g<8}nwVTpBOToR{^O)(2Pznia4B#?s&{D4g!xEh^j ztnVX{8|M2fY#-_VpVH0niKZ#Z(-47^R|aja!mU91wnvGxPz7Dip;f1c`Tkzd|7Q%(VK9L#)sm3eXbi%wB99rzwgQYNqE`@(g5|M|vh`I2 zOpUCB*~QvaA=sKYvQ(DDWD+{$vt10aXSf$<8Bwl`Q6&;-LK**NUV{YJna5?!8{nik z>lbnIh+ZDOo%ou9JUO-=61mR!PYZUBm>*1UWB8V7f0t)f|Nj})&+TNJ8r=>Pe8!J zB;A@AL)l1o{14FAR`Rm2$&7np@GA?k?I~+&=P`JV<1WnqFxh=%ZK%e4^ox^pN1TVE zdmkUu;n(P|MMo{8`8))Zk-&f2yph)eKmF4O2b(c`gFy`Z3}^8yP=BhE+Z@TT8IIFh zl}20QXOW*o{?43FVErt1f16!){Dn~|we75>An`H8Q472SoFRXK#AuQQE(}Xy_|}4D zU_62yjD%{p%wZGTU1EY&;4ytmBB${a!MqU(=3ssUU++wR4gR7m25x-(JLiBuS8|ls zlT~qyk1{@lVPD%}73A5`+sqD++b%!0#5!aCp1>oJr$PTUx^vC$6MWqukvSwe4gKZ# zjBRI`>;GJFy+)FXk`#fV>~0s1TB6tr*>@;a!T2YfPNuJC?IUEl(XGS0gOzw5vZBal z(beW-{{mTdcAW^HM;XsT_aan#hM!6B2Ok;6w%@F@eK1~!;b-hBE6k40A%Z=%Qpf6l z&%6g~6VPeM`p?YklXR2?k)D@8KhnQt{1Tm?;;gMEp05nXZ!!FalEo*(?Kn)$!UXy& zdW0F2BAJv5fPP(qLCvRQlLq?=_@Vh+edA;# z$#jf6vbYArto9rwSIds!uLN6b@)9^x`;476L|&5dWj5ib-(sBH65C4R+vsX_B>uo`f3+lsk(q&&WbL0;;9LxE@Jd!qFMV3+XY)YmsmV z`g?Oc3jL+54MMjd_9X(=d@4_3mq@HQn~D?9)f<0mD_Co+fAf9=N7t+hGg#=yI3>=i z;aIn$G6wtEc~2a=c^t3I+ZA+*2V8NOkk3Q653-N#nNMY06<|PN_tqhJzo9uU- zhcj=2UL*-*#cnS;wbAu3F2s5Q*3|YBYy~ z-_?bM?g;y#r1mw7OBgrBaX6VbLROgdKXFtSUA4=M6SFoBc{X%ECXp|Zsa>Zc)v^5w z`PZ-+yPgLdv2(Rh{I_R3T7O%qYo%_51GTos*%*IGk8L&4Rm({bFFJWyyJ_W>ybsC5 zwi&FIk9nAxpCWvOtOT*uCL;bBH(khi4eI-Fm54rudZrL|;r2S?4(#=@g-yq} zFJT{Ax~;JvkL?~ySEjA-zaL*}UdEYq!#~5peiVN}_zRouq%Nd zkce6#&TUpp{4<;d5x6UQVPJ&xF6>`u7z{S;&C$M<{1w zv7%*o7=DYA+B5nVl2pr&EDZst(l0STOhP{~_R~`mEHQf1kd0;SCO#hHU#%5(TafQU zHkNp)828mz=6)h@Jq&-x!9f<@(Eqp9VEuw6Hl4BBdAJ8Q!^hW_oa8UCf57}7O=t%g zpC(2NIDo2kw1helFL1)YW!H6B(6{qC(5vF06~Ve=+?TBD@ocZ6vl>}df<;p1IvA^E zV0;(H`I#3m*?xjeL@z(RH1(a9z_Oc7 z*TqaN9a=Di!@<$YLcMguZU&5UtCUr^oQ%}pLkumQ}x-Z2%E#+<<)3&txUw>#B_m*IP z?vLEj2@-{M4~YsJ5blliPp|I&-tF&D(_J$|%+&Vo+5V&*+-E#7&pNwn`fGM^KTnXV zN9f?N?xC()1H!{YyUWVozNh<@Cthd|Z?|Fo#(mtglK5{&yMIaGY0x|}X4@$DUkL|B zg!T*@8XD=JGur(mnSbhZ_lD&DYD?T@gZ*PyxVI&&7Bcjcu&B`fk>0@}{h~uFdPnq+ zm5j>iZ4wTA8Ai~>pKzOJ>|2p^4Bng^?_U{%N z5$V6X!yTG1CSv`bC8e>=)`C5!rpfz|c>kh7AlIKGUEpE=}S6fb{B zWMo*caKr&STl5wP>*)<25ao@I3=8k&ZBV zyDzx^Tci5FyEg@SL&JLv9KbdsUCl$HdXq)JuqYcwg+xV1`d?jf=Lz-~zv-Uo_8qjx#S_!HdQg*?`PG9`xg-5+st3gc$F!>xls;yB zouIky5P$l*L0uC2M>G#wpQeH;s@i!&!mR+GP`HqYP;dX}sAwDy^M(%X-j6B_4lU;T z?-PjGR@j{;`;gwD;Z~v8qW`Z>y8ll{;ruy!1g%VvLHqP}kB*244UZyH?33_+)0dpH z$9deb4><5hdJc#V?@`R(WMI%2?gS%7)o_g%)h6cgprGjF4MQVB`w#QBjEV^5Sor%! z1Woj$E}}aY7F9gXEqfdtG&qUB|Jb0T@jOlH5BFD`6qMQ>Ps#N5SDzfz)g5zsN>H@F z!_=V9-2SZ7gUZJD_nsTHAyLfc2cD$J#I8>`CK)a46_?BLCY{L1TjBMR^Bv z6Qh0#ikI9!`D##^M7n+c?RSHcyAw8#IJ{c-&%f(l(2uG7v)=?wN#)Oz%#$FVzh-Jr zxx@`4xCM3ti?$7oi2DC8V5B!REIjnT7qDJP`0(K&z596w^xzum4tgWeDCX~<)l)5b z;wE8Hz50cPvgTh~$nz>ujK7TMJOA{uo`dmyp}iw|hH&Nn&uwhRZS2c#BcsCl_vc6) z-pftK;f*m%otw#^n72)6#1Jk9>n+3ndrOOWqx*Y%ghcX=2lgb}b*%O^0reQ5lvLY>YN{Tw#k=_CX2?mp<(^F!97EIL^>DvPKc*xJpU)XJZIet8U<(aw+!=?4^GlNBCP-6)!d#2 z&HYpQdxi)3Qw{VaN|8Kp&^hEi^_CBh`RS@Bt-q+x^EhGhrn-DOJb{h)vrP63PvYM+ z&vVA(|1-vOIM}~?sb^EARBam9Xj=5}QoSHUqlQO^_loI$(bF}C|A!=p|HMVl`gk#; zu6dHgEW6@K?>~LTb2X{|>%Tl%GS+miW#EQ$Y5x0ajO^ZIRg~m z8xkEE=c>nqoCwOEGxmD_Pf7oK+XHHu;)MIZwfCR#1V2cau}0sh=+J)syn3iZ!a^fM vIeCGX-L|B`9pdGSbK~P2o#oEM>=oLREpQTIxcS-r`BDde?M`Ud-}V0h^>G|pz8ah1PuLsFR!mFu!bvy=KgG7#xKdhT zBu>XxcsyD?Gc8ez{O!?I*qHn`nQ6(yH6#jGPD?bvTd*!ZhfVQ2Y>y?Xgn`|N*O4EM z9q~h~fd#9kC7ej>=v`Qo{D$aHXuCzK1v{e=m|iUzcJo>a+|_&IgMXvttEVMeQr;ci z-HWgsevWqdH@c=(YlJ<}0CSLUj&9zLm<79|o4a>>J}^2WNx}xk#eyj@KNH>U3(z%x z1PkNycsag!Y`!FHA=p zoP##FFuEMweCyB#H=&_^7p;E=o$&?qz5mc-m%CPYuT-=ua$1s!h9sO}do&XL(UIMV zrSJ~4!$;BM^$a?*4d}Vwg4W-IzW-y)pFr#X4_*7qYKM9)(Rw{GyXSvkDv?MGkB*HM zCZfmhUbKV7vHV#yLNB2+dn5WueEvQ9-f{HU{)-N{V4X1040J-ZFm?W$l5lN1pcMzB zp&O0GaWeYCVzk5M=nP&(2et+6a2GnT@8k1d&`o#--Rgzhb^zy|hFX@&nMdpN%%S03FD3bYL%|?Y)H#;4^e7_o4&+JCU{pU=g&P%xDvQ zl6-f(GA)rfnIzGZg3FqOt93AXj9x`U_ZB+SZRnEhL@%PWrXk-Hy{hj(ujm)CD4syq zJZrP?X<8kPR9`fL58*&eE+%1!PopD0k6tKwnui%zz$?kOj`{1+533|Pz{TiA^*FkD zpTcpt7Te=hEyDMJ5!j#nM`-BFwoGmEWTIL~B(6pubd2^!mts(SJ_haJuK0WwI*^5E zgq}k;;mha*w#NK7(O;tH(D!n*QqKQXB>eEHjdm~^?RZkm&q9ym!)Sz_iO)Bpd*OZb z`0hd9KZfq|ztHoat#!y>iC)>&(Du7v0s2o2AmQ;Ci;iqTbQOBnzlE;-K6Hk;+k|>o zqPx0Qv^9EP^u^M6D>{Hh=zD9>iEN5~h{>BN*cU6bY#Tz?6Khd^GkTtvp$)G_XS^M4 za2J-tLouJVT_`V%Myee8enV`5tz&*By3`BWasCa(QVLwNHRy5Kj)rs}+R$(Dd7^zN zFOJr$9`h~Hde@+*XEeGgZ$~3EG5P>HfhW+9_2=6s(-Qqi9H+n$wdxRF=z@l7FuEjT z(1xd@UqEJ~r{-sLAScj{5*@=@7eLF)pcAYY^KH=guE9z;BpDMApy%>cw4*n0Fm6G2 zcgarSxK)f+LuXhA9cV+eUORLm-O;aZ{m}_LjMiU+w*M0PUh?&rcrQNKgEsU{%>Rg9 zEWbo6bq+Hdh3@t#=*(xMn{8>#Z$R&d_t2%>iH81rwBz4GKAAXA!Vzcd5-Q}2mOxKM zMJ$OOWBw+zLf8N9Uu@A4bprXJ{l3p=*8&Jq^D{FZi7P6WO|lhVr73D1x;x z1O4>sg_Usu`n7p8dL^I39$2(T_>dZf<;kzX+PE7%o>_Z_`=D~PE4ur~VbY4PlCZ;L zSQfA7m6o_2o1>@WRqTkD^$y<$`e9x2_hTR2jMrkpKH=wrG3bZXHgv!ju`4#}8wNHT z{m|Onm-AnZ#9tItz_R^*WWP4Nm=6n*zZ~meHT3xn=q|q*-9&ezAG34NkJV?eI(~<~ zpSypEP${(IerP)*&phbs;RrXPyYgLhCLf{~$d@sH44v6u=;rzlZ8+a`!3^}G zse!)V3>|1^G(!E+y)hge_&gkf$(1CAk;pb6d^+8X-f$0~yY~n>@>A$Q|B0p#496-r z`n)=NTIypJ9EmQ$!}0kO=zyL@2e={RlZh=PJZ_(&GdO~F^cNbU#GtTdh0qr(p$*kT zBh)%R?}xTC8vU@k58L8X=zB-dCHxcpRLwfr_BnqUB%Em-bP1Y7TcIKE5bcEya3C7O z(P#%V(3|gL^!*>v_l}_*pGG6}U(8=RButz@j=sQXLN@BG4&yY4q!T3 ze*rq9WoV>cMkDhcI-xyi$NSNN9Y!Pj3%UuNdfo@0J{TeUz{QpeCwLF1_=q%R9Y&V6_ zHAP3>1%2KZ9l$VjDJG*0&Wz6&#r)G~y>(at-$MuT8@eQaV$v7WZw|XXFFL{sXh&D0 z9dtzN^+oT48_MOYX2pg-AU9~~l40UdBdw4;{j_kbQ~yYtY9EgjAIH$=-RNXJ#^ zi>qUW4Kcqlx)p8kBlNwm(HR|#{)|TQH}tgpgH9lAOfWavesOdFrN?motym#esEN+B zNz8Y|8sz(;_3lRpumH>BaVNMw_V zw@Db96X@nj+!h8<14oi=ijMR-bdzmFf4bd=uH`vwgXy=2bKM@@6VuW6W}`D-f==*h z^xN|WY~%U=oP@i$$oRBG26m2)K|?)1x&#f~v*_k~1#R%n=uUKr_G4>2iZ^1FJ3{$F zbYRP3ekJDi{I4hBOtwTnL_6M%Hh2IH@iBCBo{#xUCxjUmN9$EWpVvhP)-sm&LYH)K z%#T6qO~Rxd%_Pwr7sLvCa2)xA=#q55GrTZ0IuBjb$I*`0VOiXS{u=I3EYC7A3?whQ z#2M(PYi;zsjuScmjCjEM1Z&{>SpFlr6elKe{%!CK1s<35$zds)qYZRG2i6-so+D%V4D?hyh#t?E(1E-f zpTC2C$b5uuzASfzpMY|qGw+WXI6O(hO?5wZ!$+_j9zh3m*_1G#j_5#pp$!a0-y4JO z{we4{-bI(-19XPR(X00~y2q;B9U@sDolvqh31>PaKDZfuaUyy{C9yqjKrfgJ=xM2O zPxzs9IQAvK5NqNuXh&BNSx-q>^g_x+2RI@|d^FN;GBKHiFWiTQYCdM*Bk1?^jaV7? zpaZ>#Hk@N>D9?-jrlT>o#R=FGH=}zi-?Vr^p?je=x(PdBY0v-lB!*IOA3A`eXsA!2 zpN9X77MLD7s(}8g=6ZA~hNAp`H#@hCuW8LHNoa&@5Gk)1}3YK zxIkh&X5Jsx@+q{zztK=to)u=;5;MrRM?*OZ9r!f#xIThT;3aeqZH&*~L1+90mcU=o zD>&P1&cAC~c6JD5^=M{aD8CF{f@0`E zN}@|v1C2;~G@{AwB&^ssRu~xbcc2YUiQX5Tk9PPdR>ddKf$u~kbO60Ee?H;Xmkr%g+zx)zOXz zpr0MrqxHsObzFw6J^!DPXiGuC2h$R>u|FE3pU_kA8`^NGhr&!V(ND9h(KYObrLjNS z@ZIQlz!%YhA3^J%Mt6PI1tH>PF!lMLNy3pfKpSj|zStq=`=EPd2pZa3mW3g71<`zS^rq{M?vdUxe;wXLelU9M zcE;z2WBylkLRl7tiR3`rD~t}X9Qr(S5$E568nK`*I`YQonzfDgLU-{HbhC{^2YxSF ze{S?q^wVwy_Qr!~1Zpo16KI0=*BWi7!(z_Ap}vj+I~)-oj7Q67qAx5&JA5=gUycrF zLv%a36noLo{)l#P7L8EOheHI)pqslkx|A)GB-|8zV}bkIsqN=z39xJKtuR+%)fx; z$iIv>ybnFT-=TXY-=pD2xkA{Cd{K0Q{jdh!f!>g-kbxu<+etWp-RMjXh6jmXV);L@ z{F28)2=k&NFNwZaGnO|+XVw*+`2e)Nk!Zc!(IuRUPH1-OIp=>733ul*wBkCnfw#~X zK0sgi9G&U6u{`&Z5TPRInqGmvpNS5nek^Z;w%p%=!h z=$d|jc5oni9F4$vwBgGh56?@W<&|T;3EEL-tbo^I22MlUU4hBek5nYAxDV^#VYH!Q zOG5}V(XUu_u{_?2b@5Sbf}f&$A=eXWiD$6@+TKR=oWF;jmYrz3`_V5TC!XN^`(lkJ z!-M*0=sTbT>w_6M9VSv+R;yIs(T3_`E$ zVM!8>d~|dYx))}m=k;;)#h0Vo&=BrH2li7e|1;(I&tg?9w<6pF zy^u|wOw1r*2p>gfz5<=$>uAV7L^tK`XtrlUM~$&8c5*wypDh(ufb5u0J9=R+h$;nn2t#$LDy4Q-y)A>SN3kY9{9;6ZGG zE!Tv#o`D|QC(u*#6*{or(4{W?0_Wdd+lGWrL2tNMum&E%)>w3H*aHL5r5TRyg^B2r z-H&##6g^EZN4H|?=0rF7x6z}q{LEU;zn^9oW5MMwhD}u#Ew6#T*cm;J*Pl2GHkMq>%t7SqHF#oTHzlw#FxL6mY9yi zuuvL5ilLu&|GpdsmRKJ;%7YH$v`8JiT)r_8|`p3+TnO~AW8K5{C!vwpF-c?f`uW<@1Ygv^uAyl={5Vc0H%$v}L?n5K7D7pgOOzY8szKPE4J#?lY z$LC+6OM56j|0yNs|2PR}dK%qa|DrFZZwWKVgLYgFok8uGAA~N^=$O9)E0DhzJ(e$^ zSMd&Pj@h?{_B)^h>4sJ4Khc{+C7c#3ynxPRJvx)O(E)8oBeg3&|2~!6%_k!iu9}g*)(C^3!Aa0kq>|=%zY{c9i?w5c(_7hRdM4 zyau{NEu%fq2oFJ*>L#?k+ur5;d&AvJfxG{0^u=B1Zas(&@C+KtOSXsS?XWTVzUZD= zh@Ce zZ@T5!9QUI23x5zI(iT0wz0rtV6U%Rm`P*ZDDmtJPb(WUE;w)ZMJz+Gs&iI2jj&WkQ(vOEdbz7aa&wrB^v&=+ow zPDV#O8?CnlJuR!y8Lvgx{$=!3yo(O_V|49*KsVj-=-!VxIdb{HD{W1Sb^e=Q^X}dW8zL;lM zXy8ipTvkE9nDj*(x(z+Y_n>RI4t?(s+R(|Ezkn`T&dR<-;j`=&#`VXT6 zT!FUtV)RXP!aI2@3k49gRfSZai9XcJxs+J z!PM`Tu?*$ou?jwh43oqQ`aq#Mzz_dRrm`_Rz;ir#1!qWQlK zA37DVA>}R60Zu_DG#C9&_%yb_H@@ZkTX3EN8_d5yM4~kMVqNsbHfX*6*bK*EYg`}w z8;w-s1HlexMEjxd--JdsiMBHbz1UV9;QX6-ivm9`_r{8+(2!oh@>ux05Q(eN-P-|e zum{@lz*v4W+TrcdS8_>=D0s0~Jd6I-{nSL-7R7Nj~foMdYK+pY)=;qvoZpyvr z01l&@@D$d<^Vk-v9txXoJX-HA^!@wMrJRdSB)N=)BU*(v^b#8SP3Vg|u^R5f`k3|m z@C~R5dOXLWo9xb*e;93VDH`f$(E-1OPGl$A{%^=HK9Y%lNw`*5{18T1Em|8rMh(!B zwnQ85h=#lu+R#vR0OQcj`C!aHgTB8l=08Sv|1W5Siu~vRIsXGmIKuJhDYzHA;8L{X zU(n<82YOEwJ{$&8JX$(hIa(*$B-$1||J|Z}(WMyZbNWwQPr^-hb9}H6o#CVCTCGH9 zxH0CxL}zvs9pE46Qk+AV@IN$CIe!YrvmknmE1{dN9`?YIn6#lyB;0K8p-b^4I^tt! z!>7=J{DpRK>Ca(r6hIrk3LS9eSl%#}w?XUojO7E-c1FegT|aaFZQy7CNw42d-yU~We!*=)^dP?g27CLH#)@y;~uuCkz9gW=N=nTBf z^FN=&3|xwS`OG*GLRkh~`zq)K)C#?TM#Segqo-m#dZ8p^eg-dn?=NF!O?#LB33qgb!MyYuf|uun!ud!RQRfqDyoKx^`30hG$_jd;~qF`_OZp z_s=kpqWBK^OmwsUg1%q#On9DbLc*DJM|b&PwBy^+4(>&d-vVro&!Io@97F4u`ztN6 z02|^&{1}~i>%T+0-Oz{(LMJc|jrc_5LoJzjii8o^jCQyaZTM?+q`zS`Jd4$_!at#* ze&|34p`VVopu2r8+Rnr1m&|9-dOxF){R_P>{=-Us{ueqM8f=Pgo;GL*hoLhW9rJgh z9VD>|&O$#kUc*-SCAP)l=fb@)1f9U$=mck@?>~Yr=~I~3^S_dWBYO?)cnf-Qe1NG< z6wA+|GfA8e_3}lFp)<}v?}2J)d$rL4G(kJ;5TAELBitKPfB%0Z2^+Wr8{xg!8s9-* z%yJ>jI0xErJ#=8r(E)dg_ChS0j@>wf!AaH2-@-Q=#2k~W=&5|t$9H-G8t&-E20ssjWs;~ zZAsYSooGW-WBz`$!H3WgE<=~*MRc>iiRE!0y6OIhzMq~Yyq5#5Uo=`KS{<#|7*l`$ zuVsADJvtyd60JBM-Mx2V8=QsC=(G5IA9~EbL+kyC4k&R+$Y(_(R{$MQ3AEjcnEL#$ zPQuXCi?%>3c8>XL(2M5=bS-a>&+kJ|#RAO0718bJKz>4Z{~zdp{y_)wZ_H=Qnx0I} zBv;ljqJn70m!ln)M;oYz&iHEd7YnViIo^Xe;1(Q$WwNEGHt7sBA}?WW+<~@p4jtHk zF@M>m$*}eXE)4^?0_~_Y`a&kUH)_OuLv&9xi*|`#haT5a===A@@_FdqS&B_?4H~gy z@%gzV2|uMS%^r4j2dqVY68cSLEgF&S=zw;ipI%?0pL)Nd9cIrFCXf#eby2ju1iIVH zq64Xq*I`?94`i-dt8ksie+IB+g zUxR+i4M!(38QtU$qVGMP%5(mgk?29eYIH^y(1y}43%flpnlFWhuv*MFK||XSo#DXf z_2`}%fez$WY>oGzSN(Q05(hB#@BfaFu;Y{H%>F`OOv@cQ&Wj$q66lPoq0d{!=iTG; zf${m+`21chN4*8njc8=QLkI9PChhPP2^+kC&L~HokS~F*btc+zV>ANY&;bpK&u@)R zi!O}MpNaX`&~H}nqmld>jnL^loPP^0P*4%G=MAB(i4LqD?!cDl=E|NgoR&uDJun4l z;_G+~Hpw4O&m(C4kI>Lxz)sk_Kscsz(f*z5+3Vwi3;u)-l3k#>G{zmjR^f*^3lAd@NZ$Y15QZzmF^FeL&Q*bOAkq46`tgsIK zMZtGy$Ayc9`=BZM2MD*I$7uoj{N0#8j?T11@$}U14ZGrC^7F7Sp1?ua`ttPDf2!db zw4HNkzsbxi(o;VQU5j2k^Dz^*VI}+xOJR``;mU1*P03HfR`^CN{}-*-{Jt%?!_Xqc>-%%Hhgwihd?sgAQZ@-jl{I$9m)|R1IHP z2H`E_@55wE5@$%b`RZ2-yLT+Qw(GGg{)MBkb@gy8*P$J4!b|XL^g{U#yx+=0Y{Y3&qfjsSJ8g)Wkg46uqdrpzjYs8y=3{ z^%KygoP!zo3|jv^%#L571OL7z=idf?rob!sIC}A%MmxTUc6?c_kS~tTv;uk~)0iUNo|Y(4{+!Z84cvCp>5$?TpT_JNCl(bbJVXz9{-s^o8g~w7u<3IR9QWpHSco z^EC}KYl809mguHwi{9Nm;`2G^fFD9TdK{hkDzyIVF~1F+>29>%VRR`@p%MD0Dd*pj zWNQ{0%!|&vIJ(I)(U7-BH_-re%_pHt^B5X|b!f*sV)^H2hexn4o<^6nL-Ww?Ahg|y zNfI{nP;?bq@ojWh??%_|D|9A5p_}V(bjFvo2<3&)3#mLh!$z2jV6<(tBRb)(Xatk} zNVu7Xq74j3XEGU$#C_36qR(M<%HKc-cnpi-NvwvKwhS|?heog~mdBBpfe&I2d>M&o zGLhaYJSd4Cqvlu(hoA#ngwE(ObjHhL`OD}`UW?`Lpfmam9njb4dw-x2JcquYt#ycS z5iIBVuS_D72R+amYzj8VH_$aYhrXDWtqB^-;Xh@pGp5iEl*qV4QP zm+lwz!{{F@d6Q@- zyqxlDu`Z5B*LF>O{ysYMz34#qqmes`9?Mhc@lEFF7CVeyiN07FU6NYp%(EJsK93Ocg4&=77z8~7L< z&_1-@w`hcZL>v4A4fX%f&}Qoqj_Kv--l>lcybl`bn=tj?|Cva_7pJ2Q&p|s}gm$nD z-Bd54$LoD`zz5KdPN7$GmY!j$3Zwb*(FW)#>WD_RKRSS+nELbou_T=7M0BmEqnl+B z8j0o6RcO7n=m1|wXTA;X@KbbPhtQ5rW9sHZJIvNAocluP`&BUMjO&xoX7NEg^o5>i z1csn99gBwWUbNxI(0VJ;2)=^0^L8wM4}E_RTK|VweiE(!Z?E|MKWp#sVlMPSL3Ac1 z&>2@pN8AvdS!=Z6PUwZyAHC7Wp`o4~U4lk*bt*UJt$VJEEIu1R9C^&?R^ro%t%X;dSVH+t3Joi4OQM+TZC|{$G-WGtS*NSOjgT zBs%g6=nDh{qY)W{Ms6BXFPV5GBoZso0j!Jp zw_^SSw8On-k3cpgM&wg~O`srY;~b|n7}x_5G18?M+4w4+AR=4iWZ(RO;^<$nGTB;iOW zq61lg?&2kw+Pzqs{3djU-=Pg0iTTrLM;FjYr1cL2%on{Jjci$T05#F~ug27W|EE0( z*QOUb;}NmK6!gVe(TCBFR-glU9&K&;hnXJL-k*{sGaO&`3-~-%FzP=AwJ(;rM(B8lmM@Z~!aO zhF(J}ZjTi{KtuisIN)3cPpohR9l!;& zqwIsjO!7rbq8(O4JE)D;Z;EclPH2aN&{h!dybu#AvK?jyLG<;FXgFep~%K7&}B?^489@{$a+I)pa@#OB3i#z%r}YocIeXdMBBM0J|Bo~(h=xHCZq2s=aX==EJ0_qJU)0H zjl?TxLvN!EZ$lgS0FBUobP0~d{NFL3Wmp(!ezg57qNUOLm5@!IOw=b~$8F<-t}#CV zeQ{VUzZo6zq*y)!jm#W$fKSBdPorzR79H>#@%cMwWr??hrJ^G| z9zBN+@X{MYd0w=GE71W~Lf@|upErr+onpQxI*=h~z2UL^cFf}WpB5k7hc>)0=9i%} zdjTE!%jm#1p&fsSHn=O6A3z8CD;lZOXoUWUwv%UgXr~}LpevF6&#%`>*kJkiplZz5 zMvqOSnD2%Tq%Yd>5OhFe(9Lxhx;N&d16hG~yaw&?CA9u)=rP_tobzvmZz!J^CBd@31l!y(#=wy%p9Zen@sbWHeTx^CE<{G({7 zzmEQeWylw}CEb6bolMjt(U^kkaD*>lbNmml$L3?h?{=Pv?n8HXj$6YF3t>z0UD1Io zKnJ)Jt6+(7p~DX7FD%BOGoOp8zyG(9gdzO_N2c)`3^bJ2-X4DUvjmOIN9Y>E1<`^0SanCicgIqv&owgZ_r{9G1j__opW~m5JJD!*yf6A=*J>bkDR#JLnh7 zZ$Jk$8uR0A=rNyx4q#C#&u&>x!aMq<=#o zx)WB!A?QSAqnr2{^s{7REZ>ExfB*Lj33vOyn27~vhZmZnL(j+R#&Iha01x zpuZFT0UhAKXuXyXgb4LVPtO=MBKKg@1|A~e2v?#Xk8h$4eTjzlcl5<9bHbm17D5M7 z4}IPTeLfQHa1z?y0<@i#XuDg{{tjRT{9_L1-x(I48$wkB%aiXI^W&m(Ff~B*=k_%TFNbJ&!`XB0HU-1EbyVHfm6>0b2t z7Ie2?ME69t2SZ1NqNUJ*RYUhgJFJFX(1=VyH}_(6lP*C|(aI!=$s}Hi1(^?p2X)XF zo1!oFMUT;SI39;%J=~AZtiXbBf3!x=^*r?budpAULOX1?FhrzBG&z!lcX$##ZcpMc z+>B+h^rEn4?eHt|1Mm>mSscm>Jsdi!god^SruIa1B>LW6IFNJP>yh-t&E(fVn(qI1 zWHNE(V`&*xI~3Vj~i+P`a97j+#5Y)IsGSojTO$I$K@h=0To{stb}fwhUg}1gElk>4f!Z^3Ga^i zrO}t7+tE|-725tuY=$|W;{1DjI*{;O_D4G&i_SQSZlVP-zZ#wKTj=+Ko#^{V(f7}y zH(u`LAzuN#(5^=J#0d2HphAt*(>Ob zK0-gFe!?=Ce?{o9E;^C+X#M_pKi-O|0k24gn=JP;;cq@vK{v|?bPtR}L%#qG^^@qu zvL2n$PtkwSf#iHPe3q0$k6jhCy&32L=A#387G1K}lOzn~UNkg+M02eS70RJ&-U_WZ z0IfGEx(K~+UPK4_3L3#J(Ie=R`_pI#>Cc5@QUZsN zFB|jsp=&-5eQ#NG0~(R{qu)e-LqA>r!@8L5`S{oHkQ+6bm_Wh`_uwSF4-MIW=m>MH z4g)EK-h?GEHtd7pSCAP(`Xs91XBlALZJsOFP=)m8{Y@YvbNqDY*NEL7#(T~qR z(DPh>O$hy6=*9FHx(Qce25v*w^hdPAGw3EfAIq(7-f+Xwfvt>gz^df8pi6ZE9oR)QqL;iF%JX8fG6fkV zJYJpA50x9RHa?CX!_Tk-mRJ{-W;oj5t!T(6pdsCiMshdW@we!}j-wMe8}r#-3hfkp ziSzH;T}eSNtc2e6cVlOKAFsuNFNeR=H3n}WzXJPUw)Np-dH_0*$FLzDLMKpsLwMc= zJ&v=nHU5B2u>32W{{|$6y^@}oi%;Sh%zQQcbo&^(2hO7dY5H3D+3qo%Og_)+AwL`Y zlK&5H!M+>APtQBh2xhzyelEBL9q1NxfZ397hD0OmPQfkM)e1Nc^K1$upNgJ}uhBL9 z5slmlG{ooP^K5U0rO1aaL0R-;ye=BC{%AWdN0XaKxSQWYNBTXww$^B`{l}Qk`c60% zCGaZBt7CEOie9xN(f95}KcpUyZb0w$o#D&9~@4enOY#6dK~R55p!bh90vT=;!-P z^!c;sv3m=R#16FIFOno|=m^^ISv2HXJ_?(q7&?P0G2a+_kne_9|W~t@s*d;HT&dC(&J<{j;!XilZHtLL*WQ9bi** z06oz5hNDX|8I8>Bn12+lw+d6A|8J47p${#i=K|s=-z3JHrOTR zuSX{`9=(F+qI=+BG_v2I6FQ8kfB$!egdJaqX8$~FlEP@k5@^V)qCX+ELL0sjy%%ml zKThYNo9tt>qdn*;IDocu9(^y@?$BSM-JE}CT8e@OSUo-%iLUh>=<})QF`6IqE78!t z5`7o#U^iOtN34kF&WzXym%1H{z&0oPQIuDR8Y<#|qn{2hh;{goZR}+0Nc{K?~+#cOTeXuUxgubvGePI<= z!u9Bj`>_!oMZZ#&-WSS8pfkQ5Jry(1NIi<~k@v7YrhgUBeI@d)(AJJ612V(P+) zJ`r7uy?OpNHpTp3ha0gw_94Fleg7DXoUmeU%S;oBQX!1(T`}y$I&%U`z}l<7rMzaa2Pg6BexQh zj_fBAZoZ3X$g>;_4HiU?PYE=n)zE>}!3=DJ4rn;KrnloHd>d`A-l4Er8>36m5?$)9 z=zs?t;{2Pqkpg$^EocXKqnl@bEPooE*~{n>y^juTKic34bl?}z_j7$8%1fY|HxnIb zU9_K;*b{qvpA0WNOTkzQUPEV6?uR%abRc)57so?r2dl9jZbHxhA7}^pehdS<65Sis zu{^dz2XYHK&`IcL#Ox#qXYwRE!?SDJ(?+bO6QCy_2j&!WZvBkIMt-W?6`txFME*7t4P}XOi{j&`>^f2{Nz; zRzsI`Dh|ilXvlxZs`wuo!Kz32eW0KJO-WRy;0d&W577=TKN><`4jo_vw4v5$BzmEn z>^U^lYtae37oUHEsev5}5w3ya(IiE7%4vU|VeQOZZ7< z7WOB<5eBT;lQH$*|4KUGHQ{fcdgl^VXFatMZXFP~yu=4Nm{CE33jPM%t zs=W=<(m4NU=pXtcJ<%M$!r55tbXb}d*n<2qbO4!uhFv`#J>MT;H!N``{HfY#^h0YS zK8~l)aQ-KfnDeehH_z+n(tL&~(mH)cz; z{w?U|`9w?|OSHW$Xy`x2c9{QS_$Ai0=)Lg@Cf^`&*?%E4JJ93wNzCWr4_qBcVRQ+~ zp&c~Bn%ELM;du01Z$(3$J1t8pGQ}`;&e5goh7N21T5n`pmhj*Iy`2I#%XD-N7oodz z1$vBLkIz3v2XYV{$e(DaFQ5%4(!+a~MKjQ2S0~yRU4n_2+QjL}EU6El#S}Qxt(XNr zM?2UX^9OJ;`R~yS>bfkUp*zvtKNUT$PoV=@iLU*6bb#CA^ABVGGjub4ktE>@-=Y`8 z5%k3~XhgDI5-f^_tRgzl+R;|ng?ulZfKQ|Kie(KGD1#25GWuQ(bSauglU?G2{^&q% zLSLAGhUzYKDQ2Lde+=FIFQN_Zi1{z0C(w&2Yqn6o3>xYN=qc%h<#1RiPbMB9VF;f@ z*Zys^qmR*0e~+H$f6)*ZzckFSB-&9XTHYR=Kv(os^he(th7Ncd+U^qcURjsQbN=2V zaXAIwpff*%hVWd>Uy?mb>UiZq%iCj1?1k=?M=%{9$KLoPI4@Dz4 z7V~)ild)iabeRt*Ux$W%GdkkkXah&lJ@OaY(4{$pMbQCPKqFBr=9|WRhnVk!zBdF@ z|Ni$@5^jnqvBGS$fyLMWm!o^(8#F>cq60XJZqjq;`#E!k0TxA{my6a%>vcdU(jQ%t zTXS*#eQ{Q-_%J%-=g^tHg^u*2SpE&#@QGOdU(DydEDWGjv>H~VUSsqE8isDZS?I_3 z(`di%UB>yZOJX+#HhgLB5W?cvnS5C+kK?ctK89`aC$xded9oxv#Rlm6+46=66+@Te zO0-@@^a`$vp8LDeuVgclB&@g$GjTOm!M*4bq~!~t%8jXzqPw_08q&`3`M{XJ1FbhR z`WSlr)?fy1j^zi@Q+$_gt|1^a4qx(Y=y3QCp1#s(akv%{j7KxoxoS<%zi}c z|AMx25^d){G!mB<2v>TcU@}pegqxuy8j}9#49BB;VRp4|8peV-IWT3O;;=09PO|xI-sHGW}Fb6iQXHJpx+DD zV-q}yjj&4L;0SC^eg*nrb{LJ|c})HP|K%tWW^x63b5+GQSRY&C-RMpBF1i^Hp}RU; z(eN>xiDk(Tz^XV6Gw>y>grB2V?s+VU8O5?BmSA&CTH#v~Zn{f~hmXsem_fc5I+O9( z3}3>^cnTfJ6_;m8{gus@X!#m+Ap6kccL6;$Wv>XQ=~f&;elxbmawRzb9*bK_gp1*I z>`DF;yar2N88+QS>`#6j4#ON*Wl8-92W~+dI)Scry^>iHH(*b6tzX9)xCVlK>H zI_#-J=;Y_v zOK=<>!0WJUrO@#jG{o;jKg2BL_n=F+4=?fj|3<Lgy2)+59L_2sE-80Xl=Y11)#NB8=B`Sx=l}7eIn~j7sY>0N;0^KY<(NDp_XhUPr zfy_WVSc2An0lmQ9M(gcB2Y3LD)am#`q9c9~ zo#Df1M^B(LUm5c+p%ZumJyu)M_b#FxT~ak%U^&nMmq+(b{i@9020K!qz0frufJWd6 z^c1W{8+;SptXr@o{($cGv}$3%xp6%C5?B!zU@hE)4)_FKiT|Me6|TeEu4;nUjgF zBpkq(=uGyb4IM=Y9FFd(bqzWHuE}u79Dv_G$PH>0r!mgo6vzxLEF0z zo!BGj`%k0qtwY<{+KBUS!7d6$;tyy89UF&G_ClWzMc4jzbigywO*9W((mmbe9i}`Ma_=bd`I)k3qOIw9qn}Kesa+rZF z&^!Nn^qbOj^uuZ;j>S*o^CqpsZ$t*79ln6Jy9r&YFVKM=#nkWr|0LliO0)?t6pL0s z*Q_3TtlFZ-r#Cv|0qDo^5OkB>fwnU><{v}fdnURbo%xpNhj@wSe>Vv?$v(8fW9WVG zzi6ShSyF$6sxo>U`=j;dpx=0wV|)A;9YC9QVQmLuC-Q622%kkGnyY=-YZWl{_y1dv zutHy~jHA$s52K-8j}B-r`tf-j{eqFBL+G$18ru3;7CWI6x)p6_I{Mx+bjjXE?}MK@ zaQ;1~zf#~@T|i&V*)fE^1p2&6%r}X4LF)~S`LXEIB+>f!qmg(FUHg|~{v-6`_Xl*s z7dvwP-L3gMg^$;(&=Jo;kI8fBX88?0_h-=;|3mjifzF}B(&&I{qmgQZPG|sn72k}u za|im~G<2W~k|b)7Sb^p7i&)`2)*_#?OZXA23A&jkq63(Tsf!1F??p5Md(nX(KnGl^ zYuKz6(dSjrO;`sVK(YymbP`>0IQGDb_y*pCKj4ixq+7Tr-p4lN6Wz0<{)R(a^e&%{ zqi_p4p-Mf%=IoEI_3LPdZ=(bG6q!&m@g)gEau^NSpXkp4={>_&t}CNgqanNwufY-6 z54WN-E!Hc9z9f1a>!C~A0-bSJv|c}SK!Y%k-~WfD65Q?Rv6>$9kD>!x74xs7AIm$? zO>`99?U(cp1FwY6umSpB2Xw&Kq64@Qo%t>3RX+h!|NZ}mNI2rc?pSKv0yJ6`mfP}{E6=B zOZoMGfJb$_|J%FS;8vWX!QI{6-CY6+5F8R*7BB7)iWZ6#FQu@!Yboxucq#4_ z3Ps-gv**e8&F??gHQY1LJUVC2+08~c1NEeO3H7Lq)7E*l%MR-@uMQi-xloQCK?N$^ z&Plj2)TIc6L2xXTzm-s1y%#FsJ1{eh+ur$X$eWLW9waTGD(L}>!I@B}_c+w)y$E$p zZ$Jfl0(CpZ?BFDjz?j)s(pVqLJ`|RPy1y>^uPX}WuQ}j1L^_v0+xec zU`<%IlXHl^gL-hBflBZa)cyPsDxrW7=k0qUsJo{W)FG`6b*6gS`WUE7w-NeZ|Bq^b z;3U*morQ9I4Jx5KP!+s{dT<1WI;S^1)H|Z8Pzi-X-S?AVR=5C`g!^H8_z^0RR-GNc zeV|vT)XPAJY7tc6=P)092lb%H+Qr$joKWk9ZC={uRc&6^=FOqDx;<1u-Jl8#H~An~ zg87&(-2YnGjX;?nfJ*2b)P4LMY70|$b+)(+R01`jE=5DAv(X&-4;j=B^)mScSb_OG z*c@JgN-Tevb9a;q^E!{n#t7uFGgKlypw7fFsKYc3D$oL({{-deSEx(0&v@E+1L_Ps zwfSc#`}o})f2pC)KsGM}IVuO`s3!E^jyCUM^Py0W&goE&*Fo*nZm9eD8r1#%8Om{r z?#^={pRqp7g}e_`feWD?eBN~ol-X6N`}uDu2hX4qiqXR{NCuTy7N|>50(OBFpl-vT zpd8_@|vdi|foKneT>^=kDRDuEci9C% zLA_juLS6GAP-kTh41(LB9<^7XcKA6|fgg;n-r6x<|6?)GH4cJGBoC|&OF?Bk-Z%rw z(E_OZeWl5NfjWGPmb2Ln}D3d%uUo41C#Uwc7a z^RYIcYg`8v_yAPE-;CFxDt!zU@RiM7eH}lspbAI@{r~?@Rt7rlg`f^q6{v)Qp%f#a z9F2mF;SA`%WKfsjHPj`D)z7)FGeYUNf+`@)=!Nn(7w(12`*HsVFbEEJDhYwQW<8-! z>sY7<&?Z~o0_Au&^gl77F40+&Ux(U}N4Eaj*55;2Vt0hIGYO2zBDnvxwP_HDd7vDY zg}T<&p&T|cd21-WP^c{*VDs@Xgn1;?>HY*&X<&axFELc&8KG|D0&py><7J?V&%to` z5Eg=M1~`x4=`aiPy-*JCK|QEmLcLFT2eZRu1D(KSpkD8*z$&l{%njGWGVm(Y?V5a$ zQ=qpN137GJg4R%(c8037Kh!lI4|SRsLOI$5E5WBw51{;m9sR~o`XR=_P-klzl->^} zKMc9FeErWrTYdxTusncD=rhzQ_6%{ZU0f(fDPTRA1J;5Ap)S!us02^K`|uWQ4v!3V z4r{t$&J!{>l%FavneP8)Cg=`zO@~8m?NnGFt~34zRax!f9@jS50WO9qM>qktLhalk zs6x&|74{J761|35VQS8t;#7eC`@aDLJ-a(XIT#8H!bwoqYB$tjdy7pKPQf zF9H>?JZu1)Lit+-br|UnV=Dv>uPk2i+R9i9!9&{8jh zoD6nDRq{8~6YnWh<}Ypj57eRg0F_9b@eb2K9kRSI2o{Ihffi7QH4G}T5yn|iJGBZ{ zgx<{zDlm8hRauemoJ&v!D$|-aZwm7=?+8`d4C4}5nE86Box2T{=mRMG_fUt?Gr?h6 z7{t6NMBnRb#z2Z~p`LVMFh86Ii^9E76}^SUV2p{*)|G)uxFyui1w);kE>M>w0;=*c zPzgms?bK>0f1CYt?*D@fl=<&aTXO-bqMODflbpj@4eALt5b6*vgwkID8^BF)5Ohs; zzCs!dC(Es=Ujxx}eorX%_hVeC&VytP-{hbnKWnL0$%iBXG z7z$;BE54Gjxr#k^_KqcA$ zs=`pH_1;j|d=S(QOtJX_s7tlcxC6@m@O18fWpoXJDt!nw{};+ptQpSzoCa#WDAW_I zD%A6#t#KYyMQ5NAx(!v>W2j5?8Y;oBQ2t}jbk1B#F9R8*hsrny)YcY*GAIKZ!m2P7 zM#7=+GaLp7&$2JopkB1H&UWtW%1{Z9gL)Fqh4Q-|%I_~wm&Ut`figN~g3G3G7s}uX zRAR57D)|bvGx6s*XCeryfJ#t$b)fWGLA^idV)M07fqk$B+z)w8@w(#7buz92^{AZ$ zmDysbEnEY&<(pv;JOOpPJ~qCBO7vf-0AHZ=W6g6a&j7Vk#h}i>7UN#%|Nj3826A{B z>PdA8YU`duRrUqy+QyD_9DED4rCFd}6-z@sxQ4(ga4D4iUr;YzZ=pUhi96rf>8w!t zMPNbQ|1BBFU@}x93!%1fIn*iL1eN(=sMm%wP&;!0Dv>{+Dt-+WFz)xxJP6892`Kxj zQ0om~ci0*FzyEihfv(*(Q+NPX@n>Vg1y1G}peo4+17S_5MCuuvK?Q6FYs2nPuW~-9 zOLGzWpD$2$uNQFt%itpdUHe!Iot;PxrI-sUV0oy7TG@JcTOVrcGi-ewEQsE2*c3j8 zx`b60InR@NP=~z(l)v7Kxc{{!BTX>RxEkv9dOOsE=qi-qW2iIo0m?y=#m@5~GgO6T zq1LOxoUlFArJZQ&-$T7WSPt{S-ChRT$|q2#{w4eqeuBl}wI$B?^%5_2Zl@M-0rG{g z11$D~#}y1Cp$^{%SQ(aE=6tC(8U``H4D-PEa30LE+~Ya~y}KAFkoQMN!3T>m{|lCf zX;wHd8m-~a%qPQKu*^!2|Ci0XK;7q8;YR7Na_)-XjB!>wA3WB8+R?sHiOz(jbpKyw zkRL(fpPVl&D#G;4M?lFJ!@TemEDHaFO1R(}=lcL*FoO9(*aH?{>+$~*+6t(7`gP8` z-pNpY_Cwva&!PY4|MISPUe(&d>@19dI<@OyeRv!;hN(6<52_xp0`rYfkK7k9BTTT- zVScDX*bsJvV_+@#H_QeLZgTv!fP;1auV>H_X8YOsBy%Jj#r!2y;C`E(HyB5u5=!}t z^R1dLa4PfDa0qO(#rcBd3T(~1|F8CgN3a6(v|F96ZwtpTUk?4h|Ceo>$F&AQ1*lW| z7_NZHe9o6zJD?JZz1{h2XA;!ydf4Vyptd&g4v%XVEDx8%^RPPXztcHWd!Pz^3&UW& zUEKd&7;N9=(JzC!f_6LCas)iU{0-C=Zr$U&`lZ_IZ1D)FFQb33`EIB!zX`9o`H|~= z&Y^s~-#L7F4>%P!gSr&gjad(Ro!hI=LFb9(gH2HI9CBVXT0lKIFG1Ztx1ny=1c#mb zJqgs4EDhA*%nbEn)Dr6X&>rg5vX9Nj!Z^(5!fSA;mw_A(KH@xrM?e`&f$`xFP|x-a zP!FIZPysGN-6hwd^gq}dZh}H3(LL z6QORa(@=>$g-YySSQo}T?i{KnQ1V4kdTVXI&E|)p0-l9A;YHXGeldB26I$o~Yr;U+ zxCIP>o#0G(99D&`esf+-etTEoKN;KUm zXD4&QG`j!GGtisK*04OB12e#jP&@G!>P02VY3IcwH`JC^g?bX!hh^b+Fb_Nebv9l@ zz1So^j5p-z8Ys2!OPy?S{)$e<>?0hMv~v(C$I8JL54bEr!+66S(4p`K*BpD^qZ~|Ne17Oxm&b7?}wG%~bUdiV5pbBjRo5E072=4MS(0%zF>a@Or%IrPV z4g_9y*6TuTT_dPN)CQ`;t~MVCwe@45uK64&KO3R$|6R6z2r7|_P>FhPFwp(`1nRJT zhI;i&bHzC{C17Uet)MC&0d*MXK_#*Y>P_e_sDS5TZ+HvpEY-j2yxR?d@;edA&nief zuWK&@UGqPoo=l&hDhaseT-&5j3Fd^lcBM^T8_H2IR7HcKc5t+Dym6APPlMXQNT?lO z1~cjYU&TO`oPat+m!MwV9zkXN36_T6UUv+e!Ys^NLEgc*yf7==2{XdmFh30V!`Zn) zup9GcP<97kUidf6L3~%TKb>n`7AmvxP}giS)K1K{`3k6OwjOFHcG~cYEF*Sf$>=h`)ax-?-h2u_4LTx+488;7B; z{Vn4=DEkDr9C<;g+p`ALS!ieTaHv8i-s1k(R!1UGrfZFRp$^%3s7L1$sMq_9x1B96 z3+1pqR3Z^jiA{&v;x$mulhZH=K7%?d3GX<5vq3#^%ir-j?@R_E&~soDR6<{%3=-dU z9Or};nOBCo=Hs9)!G0*cvrt?A(D({gVg3>7Qk1{v>_j~%`w*zZy41@+hwn$It=t5) zHAkU#;3Cvncm^B8e{5d!FUL_ssM~f5R03S8xn;-}ks)K<_vP z&lvRo+j%F{>49??*TM$K-$31#RUSG|z*{@HkXr z7j1qA;@9hX#z0&22Kw*&M^2!mP#LF(3Xl(KtII%LiY8FE-8`tB+YOc21*o074z&Ys zpw7sDPzk1Z?3}eAKe_*kFi@s7pq}M*VKLYM=7--wIrKrD?z2#@f^T66%<#ndx?wC- z!1Yj<;#a7I_CURM9ERG-Gf;(Gg8u*i`xyfz@DG&XM<@f&Q|FK*gvvY#)U{3vwUwoe z)uEn{O<+dY8S1v3VDg`!{OyGDbHwInp#SfGU$=$(P>x{~%?ZEvV+-QPF^N^c$14(x*};5Vp*Za?S#*P(lEieI4|CVk;NaB@IZUIj`o z7^>oaP=|IL)HR<2<#3V7*Fpu{0d=VkL+PD^O7t33VYj>tr1%JG%ilsdO7hY%2!fjD zfXciWRDyME9&8*4bx5ZgSDAbt)ZK9jYA2pTU1HZO=LzXe!a#?nAe2I5sMFa6>JWKh z5L^oNh}{ph6W5_CdSdf8P&*U&+DSMi)DC5Z+JPb_uLyN1>pSG{f0-Z{%5gWSN`^w+ zZgZd#*$$P!Ra<{;jQ7Ub$}CVjnGb4*h zi_J2q+j0+7#s{Hx<|NdmxCf>80V+W9x6b{Z399m(Q0pb2UW}SR6&MbsKNcn+zH24} zWxmuF)>z(rssVr2$!BB~hgz`TTDsUv!?YRmD z!2|EO|K<2D0{`hWMb~@h3yefi*Qyv)<&~fkY6O*FTd2f4Liq`Y3NReXZa&mbu7I*z z50!`y>aIBYp8H?d^acVs`Ufgd%zvG0lme=v%uo(;L9G{sa$FV4VO?8qW9(w`eo(jD zD3i~Iy7o(;;;r+V!fvRHPeX0lb*MlOjsHR&y4W9_%+o^!E(%q76)63BP-mbWlzuqW zC7lTMd|3shcNpr??7hf98C`{PbRWv`3#f#?KvfX;qjOEuLOIB4EDB{;70Rx@u^m)^ zo=`j37wVD?f~tHtMBnS0#z0%U7|P%$sQY(4)FJu>>RRoBs_Z;e0uP`Pd=C}C^Pj`G zP>CdlS`UH>oCnHZL1QUDx&JCNPy%(JcA`0yVF*;FeV|VHC@9Bsp!9zX5gE+R?ty|NsAuVIap#pc2>sbq01qZS8SeKM%Dtcc3bMVDslt zc5k7cknYdUHBSTOw**w>)uDE-0aRffp#Sy1F9SIo237eOsLZEBZQV+!gw{eCZilM) z1k|JY4%7~PgbJA8i&J4*r~>jq`7Hspb5)@9>VM(>m*aK_v~@jfVT^GWl;JX{%r`(K zum?*2G*lw@ZT&M;zyx2Ngi=DC{#?fDP&*L<<+tZouXCsdBT%K&pfa2dwWUj-GF=C? z^*f>N`~6VY@Hmvi>ri_4pb~uz6+nLpMh~QfPXLg0Gf+h%p|1G^;}WRb z?N_LPC!h>28vlSw_%76zKZmODU#JS*0ZxL6pe|W@s2$4>rB@Mh3B9gb47ByZP>wo7 zZDAj%Lp2hr(%DdnEQd;X1C;(&s7tfYcmzuSB-Hzc>rgxK5h{^yJx(FHU~J;M3Nn!6 zQc%~tDwM-UP!+d;Iz;WE91nx4d@|GyMMB-z>!JT_K-nEPo`KT84CVhWl->*I|Np<= zGtidA4|E(Qhf>T5RbeqGg9=bvTLVhJ8B{{;p?0hnl>P`P{RvQhWP>IHg>0Gj;P&@K1l%E_> z3Ffu+l2Bjbl{a~%nEd{Ou5~?AXacnZt)Q-9FQ@?hp)&SDB{T)<+An~ra1)gN5vU4( zhq5~hrGFjjFg}FZ(b%yZe~G;em%7o`$8Yz{LskANlMd{`cyg9C`~ zO8iZrs|uU|!{I5Y$|@#yG9L%E)dyi&coM48I7u8w4Pi6pGodPb2o*4MQis)He&*d_ z0k{zAQ2q|RZU&V(x&w6)X&bo~x9BOk79CjJ#M&g7gyZ~!hwI5jD?nexoWG*yZ*{m{ ze9+~(&xMU-d|6Jd=?ti~(Y2)wLaz(_nTq!C{=+Y9hNB-aOl=N7A}x!;zsRCmDv~Ng zl5TAUZKDI%5@e%ErV_yyzzXJLBIBs`$j0B3*hLblP7;fCzgm1(bDVY~*xx9&LR_20 zWK@}v{yRps2>yo7hh(n)%+nC09c%rtJA!_Gt9UG9AMzf|*Q1}9|M;`*TsYuE`i2$Kf#ozs12Qvdc+7 zOixTO4y!Ah1^a}qTSwU12Igw*tcax+^dUPm+Jde&8DFjY+u!)Q=C=6hSsYKFOc1rI z=G=o)8>)3%fQ2Np6^8*NcoW^;=zYa*E`g$2A>?nFb9=jfCfKixlj0)}J~mr2&5@VK zcO(7&-B%N)L-+`#*chzDTVou*v%u2{7@J^2aMXge*YuQ(|6sS`Lp?$RsJ<#bPT{W= zY;U_&#C8QOS1Hz#v8L9Z?ytY2RXZIgsS%#kDy=ZpF2#8y{edO2Ucs#WMWV0JsZDZf z?I~uNjWvIvUBIW>MS2<=YktB>!s|*;Mx{|y+iaQkwjf1d1Oe3Q(fI<$RRAY>(EE+~ zc9MEZl@l$w+4y;ezmlwFL3ba00P_eEOT)OK75X3Zbbi0oe~*m!AyDf{z+MEXZ}ZK@ zE65uXC>FY}6x0%|&H8q$s+(1wh4setf6)KMEiVtdhpIWBg%MS4ZL7= z#{ba$*Pm|zxMosCL941b3yJ7=$uf;Oy@bktWpYL!{eF+S9Q`u`2W|DP%0!*`DQvCyi z9_S3f$pXfUsARWQmw|aadUNLgSW*?bAEx83o0Oe5DsgY1DUj9+=;%OM89XAE84ysB)~WVs0~5>2jk(`mqDJ| ze4iy=eSPO<5({71ql8@56$GqEu%;M{!})!7BLMk*j6N_NsvDzGz^3w0%a4g1y z(OZj7Z4CFaUY_jv+}2fsb+zf(*>(26Umn6vhSSyZVfQBT2bLfO*}5sN>>?%E%VeHd;zYN04f zt1ZHw*kGE1z5C9So2 z_)F*iAB>ssSKIxq4vK@wvYHu4_%qHzaP+Mim$03whis8!=KpsQg_OiL3q@o@GL=LM zT5?vaE!Y0IMQ5@_h8%$UFq9fqrvrdouqU z`=(aJ7XpkWU==Pw57x#qFUU9seiC6{jT6EbVXiUI+YrU-3_9cBFJ)ov0}9{Kx0%zg z(UQ7t*HNnDt+H*b7sby(tN4{&g3)j_K4K~c2?W}?NKfLW;yU-CYZ41SGtiUa4UTuw zN1(jg9FD@l0TPO8O>ml@>aN)CbYh;#bQfEKyGX7v<7{;P4!+BS54G$B?}V&7pWyo2 zbTi;1U{?@EMM+{U1~p&}WGz@P17Eo}MsqqFoTvmf-gma3MToYe58#YA5km4j(xX)WOGW67LU}qqE5h z$jbUYdVl?GgZ((l$Yejxc47Pj;7i|h#$ zNY$wrpQo6T1l)yPU+lxsSw*1Q5@(ASrBUWA2McQ9IMl~jFHlfh!1_x9U1WVF zPNG^#^w#10vgwtyUC3YxOYohLwFD-wX>n$mehZTG-x)tJAYp&oLXaRvmz}BWGntNL z@eao0aCDst2UB4exXK()Vf+_*Z|MBJcGpu9`-J{N0wqV**mmwSz6T)h3hyJY?f=^r z1Uh3GRc9fpt+s3R3FrLBVXl)HZYN+E4Q`^qtuM zg|CYAcqFKn-v7OA23Odsm@KGWCW)Cii$~SD2soLwQaD%xiw)7*5kM*Jub3PwstC9;4Haj z;&d{>w=o}qqb4S=Zb{s=ps^_6IYA%LD=;2SF+ZZS6koT9Gu4u8iT!jE@z*~N<-sVI zKrs*Frzkc<@jS+Ad2rr__39+B6r;oFs3pZ|FZ3!|66aYTM$dxIC<^$SaYNG$#C|+_ z#nA7I-AKnbzguC|?`QEhs;@{_3&2?IojFK`(?&Q^t4l(ia54*LquGsEI4jOPs+B=k zEyNN#Zj@{kdaFpT4Xm&K+j=U>16X*5vw18m$Juun@c*^A(pVBQoQeEjl6{0uc6c5A z88|6Nf`i~(ry{Ak##qt;$kl$9Ei8jwY)dW!iTn5e8>(q#fqKI|$Y&FTpK#+liQHOJ zv^F34D4aYq{a+bJwS)vq8RZ9`#j#Doj?Ki+KkyoXm%^*~sBAvHD>1qm<-zzZ3Z=>T zEb}86)TEl_^gK9hBxkI(vnslvTL9U10)B(j{`A7g8ZfVn%_RC9bhofuLCC!LC}2rf ziN!CNRYIXFi)wMH%J`sDePkZr`f+$IBFQ&8huj#}^N8j1Gi{DZ7p^RU!mQOEPji_O+ z)o=snpKa68@qZuc9rL6Z)rAj8+d~lkODX@ih*~3aTS9x0bzuD*!3v?X)`E}6cXA47 z0-#xN63)!NaEFyCprv5kPy+bZV8*@+(z z*1+Fz68wVfcl>4}PGV%mSZmDuF$p%%6;x}0QfGp6BlEWOe0Ev%t-Gj}$%01B_u*t4 zveNVs*k>cLhV)Rni}_}Jykk5By(PriU^@~Fza=p>eQ@fUNZ@_8sCh54{05_HCM$(; zU$#r_3{Lremn(Z@#tiP1-Z-eNqu*z#CVc|qt;Ak~Nn83f7@coPLoGYK39{5|;C^h*;A;Z&g|S@KTo+he%R&}{<$^!4c~Na0 z&f24RmHO0rI`IE{fB?&^raZG>eMstUjP?xET#uEak0bpfc&x?RYP3rsOTwC3e7J~| zpE54Uy4qZH;vr9sAATa_|Fpg6s>R0NFKopS%7{adT#lR{j5H_nC}S&1Kbpa}mee|G zk7@%k){pWXhx2hZ2!<(RT6V^XNu(P31K1XRy4c^Y+x{0t-VE6!lczy`H8yv`83F}i z5WQ`rnoJ}%#FBZ;;y}hVZ11)+zsLBz&2!^?EA|t772_VDSX`A>`}WH?@weZAX7P zUb^CK3+Ys0y$JiW5&2%`XGv`h9EwgT_G*uiO~c1-WUW}+jVvjod0oFFY``c!3iV+n z3$~iQ`QK-%$WIZ_V{7#o4<~3=9II_4&|(s9OM;0QUm}^*R*2T`P*`zTD$2KnwDJ01 zqaNbqM_ZU;CuM{=Ziv&EIBLy&41F+;jWuIB!LjMb!&h-1} zW<}>KIx9&$GycB8cT4%f-!trn&|foGdxFf{mud!@!!cA;2g9hA0tc^2W)_OSAkS)R zJ5iWIz*MYvWE@J+UkMZ+U!RaY#}8)yrf;+VY<5L0PB&~9u_GhmQU7ZOvskE!MP>pu zHl@rM{f5&}7|z-noNmI|pJbnd`9|h133kHt6>TeyC$e@IKWaPZ&HW=@iAeH}?dDdq z`9aq|6_fNNk%GmmC?AIPY^y`yRvSkUn4b&gKM_JkV72!ocY&a4KjUM#Gjz2?ryzX^ zNviEPAAe(4*7PM`;zcQdD*ucoOo>t*3{E1e$Clnir#i}w=p#tt7(rvhqvm`qdW+GY zZ}a#R)QlY%h^@XWR*A$4GyaX83B>nFYzr_}qkcXOK`AzZ1~}Qv_+K1$VSEjTDJ-$r z%+>N)kQyYd)*bz%*tW6ta<(&CYe%AkNn{tYmiTFoUVMt#XF9b4{XZhWdl!_iv-pV2 zVq%mJqauveQZZKxVBX$>Yo3{^=9-S?YFTmI5qWoP`uSgba*)4U=^47YElN|?gGoDv&0mpKEZdGjtaYWI$M&vem;wLqu~(Z-HQnQ|y_Zbj zh@F2UxEOP7za)81pMk+GbT1M_Ee`Wm=uN|E8Rjzx@|6VFGtY$HKgd#&%yi^GFt3Z< z7S_}zqgRiu3DxnwWDY+gJc#le_>zmJR+u2^7-weO5aR&^+>Pu{Y`UVmg06Ow08L4_ z1MAjd2)iZ!0spXzF;%euE#ih9wSbGj#qQGs5=WW*~Y`n<64$qke5QKBZi#` z5Qn*1Tx8h^u#-S-k!8SnF_PMCcG9_QyZX-W3PPgpdaJlK1mBj}66oH#m8kYyNm z!dVH+v@J?%b687;>^G>EAE*DCF-OCi`cDz= zAXNJfK`C=k%^a6S@hs!4aI&o($5|^9DF#DH`~vo=VHNsOD$K_GA^jHq_LzU zhkhM@PV?X1JPk~74Td{#QW2{CNf5OLRCvO6q%d1r*AerRpWJg)d&2C0h4Bb-hgDBFga*sCCCdJKH|Z)9WAFR5SjM^$4=xLy|d2=zI7N zvbI)H6B7P~c~pDAuB1X|G=gzaLf9GoW~_P3;^d_n`!MvN96_)_oa8Wep%LqyETPS0 zyq@`0)4xci@o*B=w%KlFKxYC4y`&e%XA9fSdW=ut|Gnu|*8Lv?2gjpTTr8Tyfyk#u zn=8;5+X;;q66jBY@QVYkFvbH&tTc>jy+}ASYi@!jMP7;dK$38q&oNQoQi!zeAIain z%kC=Gg(3gevX6uFoUFgZdwX^#H;Ejf_hSA8ojnBj1N~;OF7mUmKlAi_s zTPDXb9)R*;61c;>3C`8lF&>7YS_;-)BmWLPALE_$q3lh4dN?}6nMaaLW^B|vwk?Tm zegNC2#L16N1ih!eaHxqg{rK;amIuCNO`5RR+?tVW<@=(ooCd3b{ACfMG7 zL04_7`TK%zwaIjSji8pBWDZe)+D>iz5d>o`!?tYG8y3sqpaX$Up;Uwb|8HAJz#-9u zC9xTf{sp^4ukn+J{s`N9_|9hu%{3N8{+QU_3l?|CDT})y|OEH5->AiJ1iRnUl(l=b*C|o6IEDk6^R$^N?`@Y|4}5B5a0G*hY3_ z7IU@b*k#gK_0L1$GmDcj;-`0A`&f)YwiTsG%fQ-g|A=dhQFg27BjXh4r?NF6K0dxd z_B+AbGCqoJE(-XK`51g&Bi2)R461pHu^5TLO)479cmZre0!J_mLE(F3<56ynvp}3Y zA!r30d`}W{Y{v?t*A~0?_!-H1M)ZGUeZ1`PQ;zBb(ftm;Y6%z*V*FnmzH;~jqlP%| zjZq0xkWx_`s@%N>f`d&Y_A}LHhlj8W!tqPE!)%5c9SPls2G5E<6%f)y%<5ch{JdU4gB(j+V=EA1fdyrMMO8>*YGro7B zn+;hN^iu0*E#46zs-2Iz&QSu`&MK&hQ?*~||KVgjJ&gV@Hdm>B1&Ks&=kPm%o*bQY zX1fxdYxuiOV%w0f*U#E)z$(PDOhlz>Dd;(Ix)bM#S^L(K*o0A3OMsIFwrdfLd)q=0 zY)VpXUiw@71=Axg zgrkpCHV$9+VRe{;;PV(4A^ED7^b-sIi`goGcMe-LlKvw~r%`sZ*q%P#G7cp`ImVSp zup17SL^Dpt{1WqttWCy87J`<+Pd#kPlf-EP#J0lvF;{!Rybb==Idd<+XT#eVCOt5o zjKd#Lcwx#pj33cC5-qSC-6UXXdUmQBk6mTP{Iaua2lEB!SAa2?N40H?7om3$pIJ#@ z8RJ&^j#{`Wb-=-Xgr%|Qj?zLB>Bp@&f_W~e_9ISzw?xvDa6`uX?ChLloR`2C@iCfR z*u#2i=22}i{?;HbivB%>CE#-XM1@)$GWvpZwSGot#xubNtuc;j9SD|&qyh<|)*K$g z?!E;~P65~P{S=$xwu>J~EH^g8EMeJsTaeWz1VvFUieQI19FA-eNi`)DE&1P>tEES0oqpyps=dJRKLm?OuW41Z zG*+>sHlgzqiPW$jl0YGt7iZ!02iPY-Pi;54f77FykMVz2wa0d$q510T z#W)_0c37n{x=kXjF!+FS9h|mfJwE|2F<-^_2D(3EH->5(Fz#d;Vu03MqjNrz9RAIum6K7CC0cvTMS%(S*B9%$9hH#m&41jBs%3VR(k=Hn7!uB z8UIP3u>`M3<-gD`&}&f8Bpg>}y#PMWq5FrvwmN6VzaUsf=EX3)PJpQ9#@QI=p%}Lz z*bYmq1LKl7t!;`y=-f769kI#64qU({C;SPWcdQ>Kk^4|>3%390{y$GPD+#(3VLTMn z*5Le{jTbZTit=f$aWlq;NpchVYKIA+mX#n6aU6%hPqFQTetBfk+bd)%@j1;3xP;y~ z{X|7Z%eqpuEtla*l-sj5j3Ai_*nlI72KewAV^WjiSIkFOF7iCk4U>l;zQd$zzN$8l@s?c*lZ9mR} zP_BqkMG|SuR=s0hjRe;_Dz25x>*J&->o;)nhF%uEo%ouLJSny@N#s7`hZgKP$*J9- z-?f+%S@VA4pOvN*ieVEBFB8Cn^SC&@f${~$YSTy}5jtvht?HcUJR*Ud=**;uEc8AE z%ZLxPUB*1b$i;jwOvU;PY!2!Ee}Lgof=(mQ8wIsYKXMM%@I&{>6%;#|!mjwRTX7{+Q&v*16$+)&D zTbwL~OJIBp)R*1KX^v#r6vwG;m&RJ+myn-D?lJj9cm=zE%q}zjdb3k%KGu?v_ypS> z#s6R1t4m>l3&G+T2AE-5#-pfUBvgB5@+MYYB7&7?HxH1=Mf^lCZ$yGwnLof+4AWan z0z)kZZg>x9lN2a#CaXdipJaR-!@gEwRpeRG`<3lGZClvVs%?vxn5>URo(BD|jOUwO zCw%=)B9R22f&L17Mzu@Kz5WkJ5vE{EaUQI(C9;;tj-pfr<7+sbLEpq$1!S4f zt;@WfZSj0$d63O8?+dX14_Ov=DIq>jGM5Kb8DWkRHg(*#TZ_ z0TiSqvLpCSi{Cf+8Oi(&JC(x{md+{sb&h)W@1*KKP^gd5XnHH0Z^JMT6(=#rr<8dfe!Qcp$_rPIHF2@)1b{Cy|7OWid@6qjntc6|kDU7R{-=xtq zz$TESmicAWe-J?e0t_~1D;O^#m|AO+>&y6ebMTR5_To4{@}|fJ6QBZtzhei=ur?Ok zf05l|T#X=)(N$}Jd@=f?(d)}vRGXzAQG14ivbOCpjDMNo6xO#}6>XIyx(nbLoHb`H zJ8NlSUlPj0_zzf<9jI(J`a!G4^aJ?&frO&kpIp8OCf*n zjLH~kn17AC0f%b;8IMzWR7;41{#0?30{&+G89uroJB~sF^VQwBf~4NDo)di^I%)8; zz`y3icZISLhOi$>5oEfX#bu0};y9dnEu0o){Sl7pqN{d`aU#|xAkU0$GZI;6)jwoM zs$;ta`A*oJs=tSgs9dcF{yQ)p*M@9rp{&*d2WqX2^Dtgdk7_m0Rm)D0Z0O`>?TKx# zN2z_urRPd|Zudi;&lyS!v9q(ixa z8CJ9mPr`jDsePdTN|I`MkbO(Q8T4Dse(4gV z##k*a<7YU|%RHaSju31LdU@$3urGu>9pk7rko9TK-0PZy@gWpi5!8pqe5yKS85Y2K zV`PQUse!C43FITu8@2=b8hI9LYL~IE#CRf%YR~bT5Lq?)FuO5V;Nvsn!pLIl6+W13 z)NYY!RLe+^xlDQ!-~|rz!*cWr$n}M7RSPndD!xNB*=*w>U&y#7$qq#?3yDUOL=s~B z!CGm8wnmm5Kfx+O`=1r%a`bs@aa8-0#n?E{tAMmktPQnsGfTKLj-$78RP_^nzS_Fh z?pf8330$AVlEYZGzLt5>pOuBRkrp6@RX2pKDoheNaQYbzz<2@UtNH=t%-%)OOmpI^ zJj*dDx-MpF35cBsv%=*58MDO9m!k6@>kZI9f&FX7{mCac^2O+?6+<3EDuvMT&q?Ps zIu)3I%Xli|@1uU@>MRc0THaE=7cHr^HcpGqpMF>W|3B$SNbMQa+w7MlnTPRh5;+g+ zuoi~hOOh^SewHA+VjG$yAUAgzMrn0=@cFa#o~m!hV~1p78)87`A;GD*T~?)?qt5# zh25J21FQ549_X82!aXvUFK-3+cDJWVa2Maritd^zBTKe)kMJF7>E7>&7gRAkJgiHv zo}s-WA_um0H}LIj>vqR>SBcym>P{Q8aYS%L|8U>$q3#bJ-`Ozt#CX1X{oQwBMV1}z zzU?b8!hJu1r%q@WU!p1QpA-6iUEr=j+~9~%-;*Woow0o{R=an_^KIMW?hrdx<=(w| zg?5UFjI-N)!pZH#ZuieId>0S8=f?0YKJG3M(|7T-`&#V4nh~KreJiiHzw!7ETz8*x z`h=x^bv5W+HK@tpKB2x*_uRAHF~hWh;l6L~^WTs9 zrayG&3Gl6b?5-T&_u-v8Qw(_3~eka93lkM05=e4-JZlCih>dPG*obhmCTEm-j7+8?e;l z(I(_i7;q|IoQgeq^zOto#22${Ks!(5^a=qnBZpQ9DCRp}Az)TuWVxyVg(6#54Os22 z=<`$yXcsqTtDx|(kWgQT1_5i6`j&(QEQ#f7(<5M7VC3GUfoXi%`UZ@1M{emC5D}|W z*N(wGdJOgz4G$Ra@tqkE5D_my#h}KaVG*IODq*2P6(eV?4rt?BF*+bLMy!gix;2Kl zn)%{S2uR}g<)0YP#GSrk<-8UB=PER)Ygn%#{W~Ap-6gb_t8Q3CmmXoEkr9&u#-?l> z(XV$;mil+?7hTEsep0|fcVK9*paGFvCI@8nO`j4_B4&yq{kwz?3}d%?5x#$TkKpi# z{=K^Rj?M~L7soedQNUfdul16EHt8cz?haVt8?`5(W{mi)qS-`ldf~|)dE;O}^MIfx zkr`fkGW)6@3iueum-|$}yg=XSa{-?du(?Bg`)&nPh~ta@C?L@7%k((lNaDB+x&{-r zM{t)=-{1cQOiCQLW(cP`taDgsKVRXjqR3U&T(I&M|y*yL#@r z=e`Wg;+xUUQ#>$ok1rsV?@2FDa6sgqfWXAQ`h7hy6GdLT?MdVFj`Tc;9XV~HCw64h ziJrthMjhfsW{4S>C|1%tWb58+AB z(>G$VXG7`8ve!KAeOs@2HpPhScE^(-5x< YHkGeLjKC+ceN_?$HjLrp6rXYbf6-P$+W-In diff --git a/netbox/translations/de/LC_MESSAGES/django.po b/netbox/translations/de/LC_MESSAGES/django.po index f44ace848..00dfbe247 100644 --- a/netbox/translations/de/LC_MESSAGES/django.po +++ b/netbox/translations/de/LC_MESSAGES/django.po @@ -10,17 +10,17 @@ # haagehan, 2024 # Robin Reinhardt, 2025 # Niklas, 2025 -# Jeremy Stretch, 2026 # chbally, 2026 +# Jeremy Stretch, 2026 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-14 05:18+0000\n" +"POT-Creation-Date: 2026-03-31 05:31+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" -"Last-Translator: chbally, 2026\n" +"Last-Translator: Jeremy Stretch, 2026\n" "Language-Team: German (https://app.transifex.com/netbox-community/teams/178115/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -52,9 +52,9 @@ msgstr "Dein Passwort wurde erfolgreich geändert." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 #: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204 -#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1933 -#: netbox/dcim/choices.py:1991 netbox/dcim/choices.py:2058 -#: netbox/dcim/choices.py:2080 netbox/virtualization/choices.py:20 +#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1954 +#: netbox/dcim/choices.py:2012 netbox/dcim/choices.py:2079 +#: netbox/dcim/choices.py:2101 netbox/virtualization/choices.py:20 #: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18 #: netbox/vpn/choices.py:281 msgid "Planned" @@ -68,8 +68,8 @@ msgstr "Provisionierung" #: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22 #: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155 #: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256 -#: netbox/dcim/choices.py:1990 netbox/dcim/choices.py:2057 -#: netbox/dcim/choices.py:2079 netbox/extras/tables/tables.py:642 +#: netbox/dcim/choices.py:2011 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:2100 netbox/extras/tables/tables.py:642 #: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49 #: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154 #: netbox/templates/extras/configcontext.html:29 @@ -81,8 +81,8 @@ msgid "Active" msgstr "Aktiv" #: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202 -#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:1989 -#: netbox/dcim/choices.py:2059 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:2010 +#: netbox/dcim/choices.py:2080 netbox/dcim/choices.py:2099 #: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44 msgid "Offline" msgstr "Offline" @@ -95,8 +95,9 @@ msgstr "Deprovisionierung" msgid "Decommissioned" msgstr "Stillgelegt" -#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2002 -#: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:153 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2023 +#: netbox/dcim/tables/devices.py:1208 +#: netbox/templates/dcim/interface/attrs/mac_address.html:3 #: netbox/tenancy/choices.py:17 msgid "Primary" msgstr "Primär" @@ -115,7 +116,8 @@ msgid "Inactive" msgstr "Inaktiv" #: netbox/circuits/choices.py:107 netbox/dcim/tables/devices.py:714 -#: netbox/templates/dcim/interface.html:293 netbox/vpn/choices.py:63 +#: netbox/templates/dcim/panels/interface_wireless.html:12 +#: netbox/vpn/choices.py:63 msgid "Peer" msgstr "Peer" @@ -191,9 +193,9 @@ msgstr "Standortgruppe (URL-Slug)" #: netbox/dcim/forms/filtersets.py:1172 netbox/dcim/forms/filtersets.py:1268 #: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:2024 #: netbox/dcim/forms/filtersets.py:2048 netbox/dcim/forms/filtersets.py:2072 -#: netbox/dcim/forms/model_forms.py:155 netbox/dcim/forms/model_forms.py:183 -#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:570 -#: netbox/dcim/forms/model_forms.py:839 netbox/dcim/forms/object_create.py:294 +#: netbox/dcim/forms/model_forms.py:166 netbox/dcim/forms/model_forms.py:209 +#: netbox/dcim/forms/model_forms.py:280 netbox/dcim/forms/model_forms.py:596 +#: netbox/dcim/forms/model_forms.py:865 netbox/dcim/forms/object_create.py:294 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:26 #: netbox/dcim/tables/power.py:90 netbox/dcim/tables/racks.py:111 #: netbox/dcim/tables/racks.py:194 netbox/dcim/tables/sites.py:102 @@ -204,7 +206,6 @@ msgstr "Standortgruppe (URL-Slug)" #: netbox/ipam/tables/vlans.py:90 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:36 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/ipam/vlan.html:23 #: netbox/templates/ipam/vlan_edit.html:52 #: netbox/virtualization/forms/bulk_edit.py:95 #: netbox/virtualization/forms/bulk_import.py:60 @@ -236,7 +237,6 @@ msgstr "ASN (ID)" #: netbox/circuits/filtersets.py:85 netbox/circuits/forms/filtersets.py:42 #: netbox/ipam/forms/model_forms.py:162 netbox/ipam/models/asns.py:137 #: netbox/ipam/models/asns.py:154 netbox/ipam/tables/asn.py:51 -#: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" @@ -333,14 +333,12 @@ msgstr "Suche" #: netbox/circuits/forms/filtersets.py:232 #: netbox/circuits/forms/filtersets.py:259 #: netbox/circuits/forms/filtersets.py:306 -#: netbox/circuits/forms/model_forms.py:139 -#: netbox/circuits/forms/model_forms.py:162 -#: netbox/circuits/forms/model_forms.py:260 +#: netbox/circuits/forms/model_forms.py:168 +#: netbox/circuits/forms/model_forms.py:191 +#: netbox/circuits/forms/model_forms.py:289 #: netbox/circuits/tables/circuits.py:103 #: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 -#: netbox/templates/circuits/circuit.html:15 -#: netbox/templates/circuits/circuitgroupassignment.html:30 -#: netbox/templates/circuits/circuittermination.html:19 +#: netbox/templates/circuits/panels/circuit_termination.html:7 #: netbox/templates/dcim/inc/cable_termination.html:62 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -398,11 +396,9 @@ msgstr "Virtueller Verbindungstyp (Slug)" #: netbox/circuits/forms/bulk_import.py:248 #: netbox/circuits/forms/filtersets.py:384 #: netbox/circuits/forms/filtersets.py:390 -#: netbox/circuits/forms/model_forms.py:338 -#: netbox/circuits/forms/model_forms.py:353 +#: netbox/circuits/forms/model_forms.py:367 +#: netbox/circuits/forms/model_forms.py:382 #: netbox/circuits/tables/virtual_circuits.py:84 -#: netbox/templates/circuits/virtualcircuit.html:20 -#: netbox/templates/circuits/virtualcircuittermination.html:38 msgid "Virtual circuit" msgstr "Virtuelle Verbindung" @@ -415,12 +411,12 @@ msgstr "Schnittstelle (ID)" #: netbox/circuits/forms/bulk_edit.py:48 #: netbox/circuits/forms/filtersets.py:68 #: netbox/circuits/forms/model_forms.py:48 -#: netbox/circuits/tables/providers.py:32 netbox/dcim/forms/bulk_edit.py:134 -#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/model_forms.py:142 -#: netbox/dcim/tables/sites.py:74 netbox/ipam/models/asns.py:155 -#: netbox/ipam/tables/asn.py:37 netbox/ipam/views.py:270 -#: netbox/netbox/navigation/menu.py:182 netbox/netbox/navigation/menu.py:185 -#: netbox/templates/circuits/provider.html:23 +#: netbox/circuits/tables/providers.py:32 netbox/circuits/ui/panels.py:92 +#: netbox/dcim/forms/bulk_edit.py:134 netbox/dcim/forms/filtersets.py:225 +#: netbox/dcim/forms/model_forms.py:142 netbox/dcim/tables/sites.py:74 +#: netbox/ipam/models/asns.py:155 netbox/ipam/tables/asn.py:37 +#: netbox/ipam/views.py:365 netbox/netbox/navigation/menu.py:182 +#: netbox/netbox/navigation/menu.py:185 msgid "ASNs" msgstr "ASNs" @@ -440,9 +436,9 @@ msgstr "ASNs" #: netbox/circuits/forms/filtersets.py:349 #: netbox/circuits/forms/filtersets.py:385 #: netbox/circuits/forms/filtersets.py:408 -#: netbox/circuits/forms/model_forms.py:65 -#: netbox/circuits/forms/model_forms.py:80 -#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:90 +#: netbox/circuits/forms/model_forms.py:109 +#: netbox/circuits/forms/model_forms.py:140 #: netbox/circuits/tables/circuits.py:56 #: netbox/circuits/tables/circuits.py:107 #: netbox/circuits/tables/circuits.py:192 @@ -450,22 +446,14 @@ msgstr "ASNs" #: netbox/circuits/tables/providers.py:95 #: netbox/circuits/tables/virtual_circuits.py:46 #: netbox/circuits/tables/virtual_circuits.py:89 -#: netbox/templates/circuits/circuit.html:18 -#: netbox/templates/circuits/circuitgroupassignment.html:26 -#: netbox/templates/circuits/circuittermination.html:25 -#: netbox/templates/circuits/provider.html:20 -#: netbox/templates/circuits/provideraccount.html:20 -#: netbox/templates/circuits/providernetwork.html:20 -#: netbox/templates/circuits/virtualcircuit.html:23 -#: netbox/templates/circuits/virtualcircuittermination.html:26 +#: netbox/templates/circuits/panels/circuit_termination.html:11 #: netbox/templates/dcim/inc/cable_termination.html:58 -#: netbox/templates/dcim/interface.html:184 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:7 msgid "Provider" msgstr "Provider" #: netbox/circuits/forms/bulk_edit.py:86 -#: netbox/circuits/forms/filtersets.py:106 -#: netbox/templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/filtersets.py:106 netbox/circuits/ui/panels.py:106 msgid "Service ID" msgstr "Dienst ID" @@ -484,12 +472,7 @@ msgstr "Dienst ID" #: netbox/dcim/tables/devicetypes.py:214 netbox/dcim/tables/devicetypes.py:255 #: netbox/dcim/tables/devicetypes.py:274 netbox/dcim/tables/racks.py:30 #: netbox/extras/forms/bulk_edit.py:306 netbox/extras/tables/tables.py:552 -#: netbox/netbox/ui/attrs.py:194 netbox/templates/circuits/circuittype.html:30 -#: netbox/templates/circuits/virtualcircuittype.html:30 -#: netbox/templates/dcim/cable.html:44 netbox/templates/dcim/frontport.html:40 -#: netbox/templates/dcim/inventoryitemrole.html:26 -#: netbox/templates/dcim/poweroutlet.html:48 -#: netbox/templates/dcim/rearport.html:40 netbox/templates/extras/tag.html:26 +#: netbox/netbox/ui/attrs.py:213 netbox/templates/extras/tag.html:26 msgid "Color" msgstr "Farbe" @@ -523,27 +506,14 @@ msgstr "Farbe" #: netbox/dcim/forms/filtersets.py:1602 netbox/dcim/forms/filtersets.py:1707 #: netbox/dcim/forms/filtersets.py:1756 netbox/dcim/forms/filtersets.py:1775 #: netbox/dcim/forms/filtersets.py:1799 netbox/dcim/forms/filtersets.py:1818 -#: netbox/dcim/forms/model_forms.py:820 netbox/dcim/forms/model_forms.py:826 +#: netbox/dcim/forms/model_forms.py:846 netbox/dcim/forms/model_forms.py:852 #: netbox/dcim/forms/object_import.py:85 #: netbox/dcim/forms/object_import.py:114 #: netbox/dcim/forms/object_import.py:127 netbox/dcim/tables/devices.py:182 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 #: netbox/extras/forms/bulk_import.py:48 netbox/extras/tables/tables.py:510 #: netbox/extras/tables/tables.py:578 netbox/netbox/tables/tables.py:339 -#: netbox/templates/circuits/circuit.html:30 -#: netbox/templates/circuits/virtualcircuit.html:39 -#: netbox/templates/circuits/virtualcircuittermination.html:64 -#: netbox/templates/core/datasource.html:38 -#: netbox/templates/dcim/cable.html:15 -#: netbox/templates/dcim/consoleport.html:36 -#: netbox/templates/dcim/consoleserverport.html:36 -#: netbox/templates/dcim/frontport.html:36 -#: netbox/templates/dcim/interface.html:46 -#: netbox/templates/dcim/interface.html:244 -#: netbox/templates/dcim/powerfeed.html:32 -#: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 -#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/dcim/panels/interface_connection.html:68 #: netbox/templates/extras/eventrule.html:74 #: netbox/templates/wireless/panels/wirelesslink_interface.html:16 #: netbox/virtualization/forms/bulk_edit.py:50 @@ -564,10 +534,8 @@ msgstr "Typ" #: netbox/circuits/forms/bulk_import.py:213 #: netbox/circuits/forms/filtersets.py:159 #: netbox/circuits/forms/filtersets.py:357 -#: netbox/circuits/forms/model_forms.py:117 -#: netbox/circuits/forms/model_forms.py:326 -#: netbox/templates/circuits/virtualcircuit.html:31 -#: netbox/templates/circuits/virtualcircuittermination.html:34 +#: netbox/circuits/forms/model_forms.py:146 +#: netbox/circuits/forms/model_forms.py:355 msgid "Provider account" msgstr "Providerkonto" @@ -609,19 +577,10 @@ msgstr "Providerkonto" #: netbox/ipam/forms/model_forms.py:503 netbox/ipam/tables/ip.py:182 #: netbox/ipam/tables/ip.py:261 netbox/ipam/tables/ip.py:314 #: netbox/ipam/tables/ip.py:389 netbox/ipam/tables/ip.py:416 -#: netbox/ipam/tables/vlans.py:98 netbox/templates/circuits/circuit.html:34 -#: netbox/templates/circuits/virtualcircuit.html:43 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:21 -#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:19 -#: netbox/templates/dcim/cable.html:19 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/powerfeed.html:36 -#: netbox/templates/dcim/poweroutlet.html:40 +#: netbox/ipam/tables/vlans.py:98 netbox/templates/core/rq_task.html:81 +#: netbox/templates/core/system.html:19 #: netbox/templates/extras/inc/script_list_content.html:35 -#: netbox/templates/ipam/ipaddress.html:37 -#: netbox/templates/ipam/iprange.html:61 netbox/templates/ipam/prefix.html:69 -#: netbox/templates/ipam/vlan.html:48 netbox/users/forms/filtersets.py:36 -#: netbox/users/forms/model_forms.py:223 +#: netbox/users/forms/filtersets.py:36 netbox/users/forms/model_forms.py:223 #: netbox/virtualization/forms/bulk_edit.py:60 #: netbox/virtualization/forms/bulk_edit.py:83 #: netbox/virtualization/forms/bulk_import.py:55 @@ -682,21 +641,9 @@ msgstr "Status" #: netbox/ipam/forms/filtersets.py:155 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:297 netbox/ipam/forms/filtersets.py:350 #: netbox/ipam/forms/filtersets.py:459 netbox/ipam/forms/filtersets.py:552 -#: netbox/ipam/tables/ip.py:419 netbox/templates/circuits/circuit.html:48 -#: netbox/templates/circuits/circuitgroup.html:36 -#: netbox/templates/circuits/virtualcircuit.html:47 -#: netbox/templates/dcim/cable.html:27 netbox/templates/dcim/powerfeed.html:44 -#: netbox/templates/dcim/virtualdevicecontext.html:52 -#: netbox/templates/ipam/aggregate.html:30 netbox/templates/ipam/asn.html:33 -#: netbox/templates/ipam/asnrange.html:29 -#: netbox/templates/ipam/ipaddress.html:28 -#: netbox/templates/ipam/iprange.html:65 netbox/templates/ipam/prefix.html:29 -#: netbox/templates/ipam/routetarget.html:17 -#: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vlangroup.html:50 -#: netbox/templates/ipam/vrf.html:20 netbox/templates/tenancy/tenant.html:17 -#: netbox/tenancy/forms/filtersets.py:55 netbox/tenancy/forms/forms.py:26 -#: netbox/tenancy/forms/forms.py:50 netbox/tenancy/forms/model_forms.py:51 -#: netbox/tenancy/tables/columns.py:50 +#: netbox/ipam/tables/ip.py:419 netbox/tenancy/forms/filtersets.py:55 +#: netbox/tenancy/forms/forms.py:26 netbox/tenancy/forms/forms.py:50 +#: netbox/tenancy/forms/model_forms.py:51 netbox/tenancy/tables/columns.py:50 #: netbox/virtualization/forms/bulk_edit.py:66 #: netbox/virtualization/forms/bulk_edit.py:126 #: netbox/virtualization/forms/bulk_import.py:67 @@ -731,8 +678,7 @@ msgstr "Vereinbarte Bandbreite (Kbps)" #: netbox/circuits/forms/bulk_edit.py:159 #: netbox/circuits/forms/filtersets.py:217 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/templates/circuits/circuit.html:38 +#: netbox/circuits/forms/model_forms.py:165 #: netbox/wireless/forms/bulk_edit.py:121 #: netbox/wireless/forms/filtersets.py:137 #: netbox/wireless/forms/model_forms.py:166 @@ -751,7 +697,7 @@ msgid "Distance unit" msgstr "Entfernungseinheit" #: netbox/circuits/forms/bulk_edit.py:173 -#: netbox/circuits/forms/model_forms.py:141 +#: netbox/circuits/forms/model_forms.py:170 msgid "Service Parameters" msgstr "Service Parameter" @@ -777,7 +723,7 @@ msgstr "Service Parameter" #: netbox/dcim/forms/filtersets.py:1864 netbox/dcim/forms/filtersets.py:1879 #: netbox/dcim/forms/filtersets.py:1890 netbox/dcim/forms/filtersets.py:1936 #: netbox/dcim/forms/filtersets.py:1972 netbox/dcim/tables/modules.py:25 -#: netbox/dcim/views.py:1679 netbox/extras/forms/bulk_edit.py:94 +#: netbox/dcim/views.py:1681 netbox/extras/forms/bulk_edit.py:94 #: netbox/extras/forms/filtersets.py:48 netbox/extras/forms/filtersets.py:147 #: netbox/extras/forms/filtersets.py:226 netbox/extras/forms/filtersets.py:243 #: netbox/extras/forms/filtersets.py:275 netbox/extras/forms/filtersets.py:306 @@ -800,12 +746,12 @@ msgstr "Attribute" #: netbox/circuits/forms/bulk_edit.py:175 #: netbox/circuits/forms/bulk_edit.py:317 -#: netbox/circuits/forms/model_forms.py:142 -#: netbox/circuits/forms/model_forms.py:238 -#: netbox/circuits/forms/model_forms.py:340 -#: netbox/dcim/forms/model_forms.py:157 netbox/dcim/forms/model_forms.py:198 -#: netbox/dcim/forms/model_forms.py:285 netbox/dcim/forms/model_forms.py:342 -#: netbox/dcim/forms/model_forms.py:883 netbox/dcim/forms/model_forms.py:1897 +#: netbox/circuits/forms/model_forms.py:171 +#: netbox/circuits/forms/model_forms.py:267 +#: netbox/circuits/forms/model_forms.py:369 +#: netbox/dcim/forms/model_forms.py:168 netbox/dcim/forms/model_forms.py:224 +#: netbox/dcim/forms/model_forms.py:311 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/forms/model_forms.py:909 netbox/dcim/forms/model_forms.py:1923 #: netbox/ipam/forms/bulk_edit.py:383 netbox/ipam/forms/model_forms.py:70 #: netbox/ipam/forms/model_forms.py:87 netbox/ipam/forms/model_forms.py:118 #: netbox/ipam/forms/model_forms.py:139 netbox/ipam/forms/model_forms.py:163 @@ -840,34 +786,9 @@ msgstr "Mandantenverhältnis" #: netbox/extras/tables/tables.py:97 netbox/ipam/tables/vlans.py:214 #: netbox/ipam/tables/vlans.py:241 netbox/netbox/forms/bulk_edit.py:79 #: netbox/netbox/forms/bulk_edit.py:91 netbox/netbox/forms/bulk_edit.py:103 -#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 -#: netbox/templates/circuits/circuit.html:69 -#: netbox/templates/circuits/circuitgroup.html:32 -#: netbox/templates/circuits/circuittype.html:26 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:83 -#: netbox/templates/circuits/provider.html:33 -#: netbox/templates/circuits/provideraccount.html:32 -#: netbox/templates/circuits/providernetwork.html:32 -#: netbox/templates/circuits/virtualcircuit.html:56 -#: netbox/templates/circuits/virtualcircuittermination.html:68 -#: netbox/templates/circuits/virtualcircuittype.html:26 -#: netbox/templates/core/datasource.html:58 -#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:40 -#: netbox/templates/dcim/consoleport.html:44 -#: netbox/templates/dcim/consoleserverport.html:44 -#: netbox/templates/dcim/devicebay.html:32 -#: netbox/templates/dcim/frontport.html:54 -#: netbox/templates/dcim/interface.html:69 -#: netbox/templates/dcim/inventoryitem.html:64 -#: netbox/templates/dcim/inventoryitemrole.html:22 -#: netbox/templates/dcim/macaddress.html:21 -#: netbox/templates/dcim/modulebay.html:42 -#: netbox/templates/dcim/powerfeed.html:40 -#: netbox/templates/dcim/poweroutlet.html:44 -#: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 -#: netbox/templates/dcim/rearport.html:54 -#: netbox/templates/dcim/virtualchassis.html:21 +#: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:85 +#: netbox/templates/core/plugin.html:80 #: netbox/templates/extras/configcontext.html:25 #: netbox/templates/extras/configcontextprofile.html:17 #: netbox/templates/extras/configtemplate.html:17 @@ -882,23 +803,6 @@ msgstr "Mandantenverhältnis" #: netbox/templates/extras/tableconfig.html:17 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:151 -#: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 -#: netbox/templates/ipam/asnrange.html:38 -#: netbox/templates/ipam/fhrpgroup.html:34 -#: netbox/templates/ipam/ipaddress.html:55 -#: netbox/templates/ipam/iprange.html:74 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/rir.html:26 netbox/templates/ipam/role.html:26 -#: netbox/templates/ipam/routetarget.html:21 -#: netbox/templates/ipam/service.html:52 -#: netbox/templates/ipam/servicetemplate.html:27 -#: netbox/templates/ipam/vlan.html:62 netbox/templates/ipam/vlangroup.html:34 -#: netbox/templates/ipam/vlantranslationpolicy.html:18 -#: netbox/templates/ipam/vlantranslationrule.html:26 -#: netbox/templates/ipam/vrf.html:33 netbox/templates/tenancy/contact.html:77 -#: netbox/templates/tenancy/contactgroup.html:25 -#: netbox/templates/tenancy/contactrole.html:22 -#: netbox/templates/tenancy/tenant.html:24 -#: netbox/templates/tenancy/tenantgroup.html:33 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:12 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:12 #: netbox/users/forms/bulk_edit.py:62 netbox/users/forms/bulk_edit.py:80 @@ -910,7 +814,7 @@ msgid "Description" msgstr "Beschreibung" #: netbox/circuits/forms/bulk_edit.py:192 -#: netbox/circuits/forms/model_forms.py:170 +#: netbox/circuits/forms/model_forms.py:199 #: netbox/dcim/forms/bulk_import.py:1419 netbox/dcim/forms/bulk_import.py:1444 msgid "Termination type" msgstr "Typ des Abschlusspunktes" @@ -918,9 +822,9 @@ msgstr "Typ des Abschlusspunktes" #: netbox/circuits/forms/bulk_edit.py:195 #: netbox/circuits/forms/bulk_import.py:133 #: netbox/circuits/forms/filtersets.py:234 -#: netbox/circuits/forms/model_forms.py:173 +#: netbox/circuits/forms/model_forms.py:202 netbox/circuits/ui/panels.py:14 #: netbox/templates/circuits/inc/circuit_termination.html:6 -#: netbox/templates/dcim/cable.html:72 netbox/templates/dcim/cable.html:76 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:6 #: netbox/vpn/forms/bulk_import.py:99 netbox/vpn/forms/filtersets.py:87 msgid "Termination" msgstr "Abschlusspunkt" @@ -942,26 +846,23 @@ msgid "Mark connected" msgstr "Als verbunden markieren" #: netbox/circuits/forms/bulk_edit.py:220 -#: netbox/circuits/forms/model_forms.py:184 +#: netbox/circuits/forms/model_forms.py:213 netbox/circuits/views.py:513 +#: netbox/dcim/views.py:3465 netbox/dcim/views.py:3566 #: netbox/templates/circuits/inc/circuit_termination_fields.html:55 -#: netbox/templates/dcim/frontport.html:118 -#: netbox/templates/dcim/interface.html:268 -#: netbox/templates/dcim/rearport.html:112 +#: netbox/templates/dcim/panels/interface_connection.html:92 msgid "Circuit Termination" msgstr "Transportnetzabschlusspunkt" #: netbox/circuits/forms/bulk_edit.py:222 -#: netbox/circuits/forms/model_forms.py:186 +#: netbox/circuits/forms/model_forms.py:215 msgid "Termination Details" msgstr "Einzelheiten zum Abschlusspunkt" #: netbox/circuits/forms/bulk_edit.py:261 #: netbox/circuits/forms/bulk_import.py:188 #: netbox/circuits/forms/filtersets.py:314 -#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:666 -#: netbox/templates/circuits/circuitgroupassignment.html:34 +#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:692 #: netbox/templates/dcim/panels/virtual_chassis_members.html:11 -#: netbox/templates/dcim/virtualchassis.html:58 #: netbox/templates/dcim/virtualchassis_edit.html:68 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 #: netbox/templates/ipam/panels/fhrp_groups.html:12 @@ -976,7 +877,7 @@ msgstr "Priorität" #: netbox/circuits/forms/filtersets.py:272 #: netbox/circuits/forms/filtersets.py:365 #: netbox/circuits/forms/filtersets.py:403 -#: netbox/circuits/forms/model_forms.py:321 +#: netbox/circuits/forms/model_forms.py:350 #: netbox/circuits/tables/virtual_circuits.py:51 #: netbox/circuits/tables/virtual_circuits.py:95 msgid "Provider network" @@ -985,13 +886,13 @@ msgstr "Providernetzwerk" #: netbox/circuits/forms/bulk_edit.py:326 #: netbox/circuits/forms/bulk_import.py:253 #: netbox/circuits/forms/filtersets.py:393 -#: netbox/circuits/forms/model_forms.py:360 netbox/dcim/forms/bulk_edit.py:351 +#: netbox/circuits/forms/model_forms.py:389 netbox/dcim/forms/bulk_edit.py:351 #: netbox/dcim/forms/bulk_edit.py:1245 netbox/dcim/forms/bulk_edit.py:1681 #: netbox/dcim/forms/bulk_import.py:270 netbox/dcim/forms/bulk_import.py:1199 #: netbox/dcim/forms/filtersets.py:404 netbox/dcim/forms/filtersets.py:879 #: netbox/dcim/forms/filtersets.py:1902 netbox/dcim/forms/filtersets.py:1942 -#: netbox/dcim/forms/model_forms.py:267 netbox/dcim/forms/model_forms.py:1234 -#: netbox/dcim/forms/model_forms.py:1717 +#: netbox/dcim/forms/model_forms.py:293 netbox/dcim/forms/model_forms.py:1260 +#: netbox/dcim/forms/model_forms.py:1743 #: netbox/dcim/forms/object_import.py:182 netbox/dcim/tables/devices.py:173 #: netbox/dcim/tables/devices.py:1032 netbox/dcim/tables/devicetypes.py:318 #: netbox/dcim/tables/racks.py:118 netbox/extras/filtersets.py:734 @@ -1005,14 +906,10 @@ msgstr "Providernetzwerk" #: netbox/ipam/forms/model_forms.py:253 netbox/ipam/forms/model_forms.py:678 #: netbox/ipam/tables/ip.py:208 netbox/ipam/tables/ip.py:265 #: netbox/ipam/tables/ip.py:318 netbox/ipam/tables/vlans.py:102 -#: netbox/templates/circuits/virtualcircuittermination.html:42 #: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:196 -#: netbox/templates/dcim/interface.html:298 -#: netbox/templates/dcim/inventoryitem.html:40 -#: netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:57 netbox/templates/ipam/prefix.html:73 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/dcim/panels/component_inventory_items.html:10 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:19 +#: netbox/templates/dcim/panels/interface_wireless.html:17 #: netbox/templates/wireless/panels/wirelesslink_interface.html:20 #: netbox/tenancy/forms/bulk_edit.py:136 #: netbox/tenancy/forms/filtersets.py:136 @@ -1108,22 +1005,19 @@ msgid "Operational role" msgstr "Operative Rolle" #: netbox/circuits/forms/bulk_import.py:258 -#: netbox/circuits/forms/model_forms.py:363 +#: netbox/circuits/forms/model_forms.py:392 #: netbox/circuits/tables/virtual_circuits.py:108 -#: netbox/dcim/forms/bulk_import.py:1330 netbox/dcim/forms/model_forms.py:1308 -#: netbox/dcim/forms/model_forms.py:1577 netbox/dcim/forms/model_forms.py:1758 -#: netbox/dcim/forms/model_forms.py:1793 netbox/dcim/forms/model_forms.py:1918 -#: netbox/dcim/tables/connections.py:66 netbox/dcim/tables/devices.py:1199 -#: netbox/ipam/forms/bulk_import.py:323 netbox/ipam/forms/model_forms.py:283 -#: netbox/ipam/forms/model_forms.py:292 netbox/ipam/tables/fhrp.py:61 -#: netbox/ipam/tables/ip.py:323 netbox/ipam/tables/vlans.py:145 +#: netbox/circuits/ui/panels.py:134 netbox/dcim/forms/bulk_import.py:1330 +#: netbox/dcim/forms/model_forms.py:1334 netbox/dcim/forms/model_forms.py:1603 +#: netbox/dcim/forms/model_forms.py:1784 netbox/dcim/forms/model_forms.py:1819 +#: netbox/dcim/forms/model_forms.py:1944 netbox/dcim/tables/connections.py:66 +#: netbox/dcim/tables/devices.py:1199 netbox/dcim/views.py:3457 +#: netbox/dcim/views.py:3560 netbox/ipam/forms/bulk_import.py:323 +#: netbox/ipam/forms/model_forms.py:283 netbox/ipam/forms/model_forms.py:292 +#: netbox/ipam/tables/fhrp.py:61 netbox/ipam/tables/ip.py:323 +#: netbox/ipam/tables/vlans.py:145 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 -#: netbox/templates/circuits/virtualcircuittermination.html:53 -#: netbox/templates/circuits/virtualcircuittermination.html:60 -#: netbox/templates/dcim/frontport.html:103 -#: netbox/templates/dcim/interface.html:27 -#: netbox/templates/dcim/interface.html:259 -#: netbox/templates/dcim/rearport.html:103 +#: netbox/templates/dcim/panels/interface_connection.html:83 #: netbox/templates/wireless/panels/wirelesslink_interface.html:12 #: netbox/virtualization/forms/model_forms.py:368 #: netbox/vpn/forms/bulk_import.py:302 netbox/vpn/forms/model_forms.py:434 @@ -1155,8 +1049,8 @@ msgstr "Schnittstelle" #: netbox/dcim/forms/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1746 #: netbox/dcim/forms/filtersets.py:1790 netbox/dcim/forms/filtersets.py:1833 #: netbox/dcim/forms/filtersets.py:1865 netbox/dcim/forms/filtersets.py:1892 -#: netbox/dcim/forms/model_forms.py:197 netbox/dcim/forms/model_forms.py:259 -#: netbox/dcim/forms/model_forms.py:575 netbox/dcim/forms/model_forms.py:844 +#: netbox/dcim/forms/model_forms.py:223 netbox/dcim/forms/model_forms.py:285 +#: netbox/dcim/forms/model_forms.py:601 netbox/dcim/forms/model_forms.py:870 #: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:30 #: netbox/dcim/tables/racks.py:107 netbox/dcim/tables/racks.py:199 #: netbox/extras/filtersets.py:718 netbox/extras/forms/filtersets.py:404 @@ -1164,7 +1058,6 @@ msgstr "Schnittstelle" #: netbox/ipam/forms/filtersets.py:481 netbox/ipam/forms/filtersets.py:549 #: netbox/templates/dcim/device_edit.html:32 #: netbox/templates/dcim/inc/cable_termination.html:12 -#: netbox/templates/dcim/powerpanel.html:26 #: netbox/virtualization/forms/filtersets.py:87 #: netbox/virtualization/forms/filtersets.py:113 #: netbox/wireless/forms/filtersets.py:99 @@ -1275,7 +1168,7 @@ msgstr "Kontakte" #: netbox/dcim/tables/devices.py:147 netbox/dcim/tables/sites.py:65 #: netbox/extras/filtersets.py:685 netbox/ipam/forms/bulk_edit.py:404 #: netbox/ipam/forms/filtersets.py:241 netbox/ipam/forms/filtersets.py:466 -#: netbox/ipam/forms/filtersets.py:559 netbox/templates/ipam/vlan.html:16 +#: netbox/ipam/forms/filtersets.py:559 netbox/ipam/ui/panels.py:195 #: netbox/virtualization/forms/filtersets.py:67 #: netbox/virtualization/forms/filtersets.py:147 #: netbox/virtualization/forms/model_forms.py:86 @@ -1307,8 +1200,6 @@ msgstr "Standortgruppe" #: netbox/circuits/tables/providers.py:61 #: netbox/circuits/tables/virtual_circuits.py:55 #: netbox/circuits/tables/virtual_circuits.py:99 -#: netbox/templates/circuits/circuit.html:22 -#: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Konto" @@ -1319,9 +1210,7 @@ msgstr "Terminationsseite" #: netbox/circuits/forms/filtersets.py:296 netbox/dcim/forms/bulk_edit.py:1540 #: netbox/extras/forms/model_forms.py:706 netbox/ipam/forms/filtersets.py:154 #: netbox/ipam/forms/filtersets.py:642 netbox/ipam/forms/model_forms.py:329 -#: netbox/templates/dcim/macaddress.html:25 -#: netbox/templates/extras/configcontext.html:36 -#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/ipam/ui/panels.py:121 netbox/templates/extras/configcontext.html:36 #: netbox/templates/ipam/vlan_edit.html:42 #: netbox/tenancy/forms/filtersets.py:116 #: netbox/users/forms/model_forms.py:375 @@ -1329,18 +1218,16 @@ msgid "Assignment" msgstr "Zuweisung" #: netbox/circuits/forms/filtersets.py:311 -#: netbox/circuits/forms/model_forms.py:250 +#: netbox/circuits/forms/model_forms.py:279 #: netbox/circuits/tables/circuits.py:187 netbox/dcim/forms/bulk_edit.py:118 #: netbox/dcim/forms/bulk_import.py:115 netbox/dcim/forms/model_forms.py:135 #: netbox/dcim/tables/sites.py:69 netbox/extras/forms/filtersets.py:600 #: netbox/ipam/filtersets.py:1034 netbox/ipam/forms/bulk_edit.py:423 #: netbox/ipam/forms/bulk_import.py:515 netbox/ipam/forms/model_forms.py:561 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/vlans.py:94 -#: netbox/templates/circuits/circuitgroupassignment.html:22 -#: netbox/templates/dcim/interface.html:359 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:8 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 #: netbox/templates/ipam/panels/fhrp_groups.html:9 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/tenant.html:20 #: netbox/tenancy/forms/bulk_edit.py:44 netbox/tenancy/forms/bulk_import.py:46 #: netbox/tenancy/forms/filtersets.py:63 #: netbox/tenancy/forms/filtersets.py:126 @@ -1366,23 +1253,38 @@ msgstr "Zuweisung" msgid "Group" msgstr "Gruppe" -#: netbox/circuits/forms/model_forms.py:237 -#: netbox/templates/circuits/circuitgroup.html:25 +#: netbox/circuits/forms/model_forms.py:53 +#: netbox/dcim/forms/model_forms.py:147 +msgid "Add ASNs" +msgstr "ASNs hinzufügen" + +#: netbox/circuits/forms/model_forms.py:58 +#: netbox/dcim/forms/model_forms.py:152 +msgid "Remove ASNs" +msgstr "ASNs entfernen" + +#: netbox/circuits/forms/model_forms.py:79 +#: netbox/dcim/forms/model_forms.py:198 +#, python-brace-format +msgid "{count} ASNs currently assigned" +msgstr "{count} Aktuell zugewiesene ASNs" + +#: netbox/circuits/forms/model_forms.py:266 msgid "Circuit Group" msgstr "Transportnetzgruppe" -#: netbox/circuits/forms/model_forms.py:257 +#: netbox/circuits/forms/model_forms.py:286 msgid "Circuit type" msgstr "Verbindungstyp" -#: netbox/circuits/forms/model_forms.py:268 +#: netbox/circuits/forms/model_forms.py:297 msgid "Group Assignment" msgstr "Gruppenzuweisung" #: netbox/circuits/models/base.py:18 netbox/dcim/models/cables.py:81 -#: netbox/dcim/models/device_component_templates.py:353 -#: netbox/dcim/models/device_component_templates.py:588 -#: netbox/dcim/models/device_component_templates.py:661 +#: netbox/dcim/models/device_component_templates.py:343 +#: netbox/dcim/models/device_component_templates.py:578 +#: netbox/dcim/models/device_component_templates.py:651 #: netbox/dcim/models/device_components.py:573 #: netbox/dcim/models/device_components.py:1156 #: netbox/dcim/models/device_components.py:1204 @@ -1419,8 +1321,8 @@ msgstr "Eindeutige Transportnetz-ID" #: netbox/dcim/models/modules.py:219 netbox/dcim/models/power.py:95 #: netbox/dcim/models/racks.py:301 netbox/dcim/models/racks.py:685 #: netbox/dcim/models/sites.py:163 netbox/dcim/models/sites.py:287 -#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:528 -#: netbox/ipam/models/ip.py:757 netbox/ipam/models/vlans.py:228 +#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:538 +#: netbox/ipam/models/ip.py:767 netbox/ipam/models/vlans.py:228 #: netbox/virtualization/models/clusters.py:70 #: netbox/virtualization/models/virtualmachines.py:80 #: netbox/vpn/models/l2vpn.py:36 netbox/vpn/models/tunnels.py:38 @@ -1541,7 +1443,7 @@ msgstr "Transportnetzabschlusspunkt" msgid "circuit terminations" msgstr "Transportnetzabschlusspunkte" -#: netbox/circuits/models/circuits.py:360 +#: netbox/circuits/models/circuits.py:367 msgid "A circuit termination must attach to a terminating object." msgstr "" "Ein Verbindungsabschluss muss an einem Abschlussobjekt verbunden werden." @@ -1646,7 +1548,7 @@ msgid "virtual circuits" msgstr "virtuelle Verbindungen" #: netbox/circuits/models/virtual_circuits.py:135 netbox/ipam/models/ip.py:201 -#: netbox/ipam/models/ip.py:764 netbox/vpn/models/tunnels.py:109 +#: netbox/ipam/models/ip.py:774 netbox/vpn/models/tunnels.py:109 msgid "role" msgstr "Rolle" @@ -1694,30 +1596,13 @@ msgstr "virtuelle Verbindungsabschlüsse" #: netbox/ipam/tables/vlans.py:33 netbox/ipam/tables/vlans.py:86 #: netbox/ipam/tables/vlans.py:205 netbox/ipam/tables/vrfs.py:26 #: netbox/ipam/tables/vrfs.py:65 netbox/netbox/tables/tables.py:325 -#: netbox/netbox/ui/panels.py:198 netbox/netbox/ui/panels.py:207 -#: netbox/templates/circuits/circuitgroup.html:28 -#: netbox/templates/circuits/circuittype.html:22 -#: netbox/templates/circuits/provideraccount.html:28 -#: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/circuits/virtualcircuittype.html:22 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:17 +#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 #: netbox/templates/core/plugin.html:54 #: netbox/templates/core/rq_worker.html:43 -#: netbox/templates/dcim/consoleport.html:28 -#: netbox/templates/dcim/consoleserverport.html:28 -#: netbox/templates/dcim/devicebay.html:24 -#: netbox/templates/dcim/frontport.html:28 #: netbox/templates/dcim/inc/interface_vlans_table.html:5 #: netbox/templates/dcim/inc/panels/inventory_items.html:18 -#: netbox/templates/dcim/interface.html:38 -#: netbox/templates/dcim/interface.html:240 -#: netbox/templates/dcim/inventoryitem.html:28 -#: netbox/templates/dcim/inventoryitemrole.html:18 -#: netbox/templates/dcim/modulebay.html:30 -#: netbox/templates/dcim/poweroutlet.html:28 -#: netbox/templates/dcim/powerport.html:28 -#: netbox/templates/dcim/rearport.html:28 -#: netbox/templates/dcim/virtualdevicecontext.html:18 +#: netbox/templates/dcim/panels/component_inventory_items.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:64 #: netbox/templates/extras/configcontext.html:13 #: netbox/templates/extras/configcontextprofile.html:13 #: netbox/templates/extras/configtemplate.html:13 @@ -1731,18 +1616,6 @@ msgstr "virtuelle Verbindungsabschlüsse" #: netbox/templates/extras/savedfilter.html:13 #: netbox/templates/extras/tableconfig.html:13 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 -#: netbox/templates/ipam/asnrange.html:15 -#: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 -#: netbox/templates/ipam/role.html:22 -#: netbox/templates/ipam/routetarget.html:13 -#: netbox/templates/ipam/service.html:26 -#: netbox/templates/ipam/servicetemplate.html:15 -#: netbox/templates/ipam/vlan.html:35 netbox/templates/ipam/vlangroup.html:30 -#: netbox/templates/ipam/vlantranslationpolicy.html:14 -#: netbox/templates/tenancy/contact.html:35 -#: netbox/templates/tenancy/contactgroup.html:21 -#: netbox/templates/tenancy/contactrole.html:18 -#: netbox/templates/tenancy/tenantgroup.html:29 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:8 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:8 #: netbox/tenancy/tables/contacts.py:38 netbox/tenancy/tables/contacts.py:53 @@ -1772,17 +1645,13 @@ msgstr "Name" #: netbox/circuits/tables/virtual_circuits.py:27 #: netbox/netbox/navigation/menu.py:278 netbox/netbox/navigation/menu.py:282 #: netbox/netbox/navigation/menu.py:284 -#: netbox/templates/circuits/provider.html:57 -#: netbox/templates/circuits/provideraccount.html:48 -#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Transportnetze" #: netbox/circuits/tables/circuits.py:53 #: netbox/circuits/tables/virtual_circuits.py:42 -#: netbox/templates/circuits/circuit.html:26 -#: netbox/templates/circuits/virtualcircuit.html:35 -#: netbox/templates/dcim/interface.html:192 +#: netbox/circuits/ui/panels.py:75 netbox/circuits/ui/panels.py:118 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:15 msgid "Circuit ID" msgstr "Transportnetz-ID" @@ -1796,13 +1665,11 @@ msgid "Side Z" msgstr "Seite Z" #: netbox/circuits/tables/circuits.py:78 -#: netbox/templates/circuits/circuit.html:65 msgid "Commit Rate" msgstr "Garantierte Bandbreite" #: netbox/circuits/tables/circuits.py:85 netbox/dcim/forms/filtersets.py:1973 -#: netbox/templates/tenancy/contact.html:94 -#: netbox/tenancy/tables/contacts.py:67 +#: netbox/tenancy/tables/contacts.py:67 netbox/tenancy/views.py:416 msgid "Assignments" msgstr "Zuweisungen" @@ -1824,10 +1691,7 @@ msgid "Site Group" msgstr "Standortgruppe" #: netbox/circuits/tables/circuits.py:145 -#: netbox/templates/circuits/providernetwork.html:17 -#: netbox/templates/circuits/virtualcircuit.html:27 -#: netbox/templates/circuits/virtualcircuittermination.html:30 -#: netbox/templates/dcim/interface.html:188 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:11 msgid "Provider Network" msgstr "Provider Netzwerk" @@ -1843,8 +1707,7 @@ msgstr "Anzahl der Konten" msgid "ASN Count" msgstr "ASN-Anzahl" -#: netbox/circuits/tables/virtual_circuits.py:64 -#: netbox/templates/circuits/virtualcircuit.html:87 +#: netbox/circuits/tables/virtual_circuits.py:64 netbox/circuits/views.py:802 #: netbox/vpn/tables/tunnels.py:59 netbox/vpn/views.py:139 #: netbox/vpn/views.py:685 msgid "Terminations" @@ -1873,9 +1736,9 @@ msgstr "Abschlusspunkte" #: netbox/dcim/forms/filtersets.py:1868 netbox/dcim/forms/filtersets.py:1880 #: netbox/dcim/forms/filtersets.py:1895 netbox/dcim/forms/filtersets.py:1937 #: netbox/dcim/forms/filtersets.py:2032 netbox/dcim/forms/filtersets.py:2056 -#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:748 -#: netbox/dcim/forms/model_forms.py:963 netbox/dcim/forms/model_forms.py:1375 -#: netbox/dcim/forms/model_forms.py:1869 netbox/dcim/forms/model_forms.py:1942 +#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:774 +#: netbox/dcim/forms/model_forms.py:989 netbox/dcim/forms/model_forms.py:1401 +#: netbox/dcim/forms/model_forms.py:1895 netbox/dcim/forms/model_forms.py:1968 #: netbox/dcim/forms/object_create.py:207 netbox/dcim/tables/connections.py:23 #: netbox/dcim/tables/connections.py:42 netbox/dcim/tables/connections.py:61 #: netbox/dcim/tables/devices.py:293 netbox/dcim/tables/devices.py:388 @@ -1887,24 +1750,11 @@ msgstr "Abschlusspunkte" #: netbox/dcim/tables/modules.py:82 netbox/extras/forms/filtersets.py:405 #: netbox/ipam/forms/bulk_import.py:309 netbox/ipam/forms/filtersets.py:649 #: netbox/ipam/forms/model_forms.py:325 netbox/ipam/tables/vlans.py:156 -#: netbox/templates/circuits/virtualcircuittermination.html:56 -#: netbox/templates/dcim/consoleport.html:20 -#: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device_edit.html:12 -#: netbox/templates/dcim/devicebay.html:20 -#: netbox/templates/dcim/devicebay.html:48 -#: netbox/templates/dcim/frontport.html:20 -#: netbox/templates/dcim/interface.html:30 -#: netbox/templates/dcim/interface.html:236 -#: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/modulebay.html:20 +#: netbox/templates/dcim/panels/installed_device.html:9 +#: netbox/templates/dcim/panels/interface_connection.html:60 #: netbox/templates/dcim/panels/virtual_chassis_members.html:8 -#: netbox/templates/dcim/poweroutlet.html:20 -#: netbox/templates/dcim/powerport.html:20 -#: netbox/templates/dcim/rearport.html:20 -#: netbox/templates/dcim/virtualchassis.html:55 #: netbox/templates/dcim/virtualchassis_edit.html:63 -#: netbox/templates/dcim/virtualdevicecontext.html:22 #: netbox/templates/wireless/panels/wirelesslink_interface.html:8 #: netbox/virtualization/filtersets.py:160 #: netbox/virtualization/forms/bulk_edit.py:108 @@ -1922,6 +1772,15 @@ msgstr "Abschlusspunkte" msgid "Device" msgstr "Gerät" +#: netbox/circuits/ui/panels.py:37 netbox/netbox/navigation/menu.py:301 +msgid "Group Assignments" +msgstr "Gruppenzuweisung" + +#: netbox/circuits/ui/panels.py:46 netbox/ipam/ui/panels.py:36 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Gruppe zuweisen" + #: netbox/core/api/views.py:51 msgid "This user does not have permission to synchronize this data source." msgstr "" @@ -1969,14 +1828,14 @@ msgid "Syncing" msgstr "Synchronisieren" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:43 netbox/templates/core/job.html:59 +#: netbox/core/tables/jobs.py:43 msgid "Completed" msgstr "Abgeschlossen" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35 #: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259 -#: netbox/dcim/choices.py:1992 netbox/dcim/choices.py:2082 +#: netbox/dcim/choices.py:2013 netbox/dcim/choices.py:2103 #: netbox/virtualization/choices.py:48 msgid "Failed" msgstr "Fehlgeschlagen" @@ -2000,7 +1859,6 @@ msgstr "Ausstehend" #: netbox/core/choices.py:55 netbox/core/constants.py:24 #: netbox/core/tables/jobs.py:34 netbox/core/tables/tasks.py:39 -#: netbox/templates/core/job.html:46 msgid "Scheduled" msgstr "Geplant" @@ -2039,10 +1897,9 @@ msgstr "30 Tage" #: netbox/core/choices.py:102 netbox/core/tables/jobs.py:31 #: netbox/core/tables/tasks.py:80 netbox/extras/tables/tables.py:436 #: netbox/extras/tables/tables.py:742 -#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision.html:23 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:42 netbox/templates/core/rq_task.html:16 -#: netbox/templates/core/rq_task.html:73 +#: netbox/templates/core/rq_task.html:16 netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 #: netbox/templates/extras/journalentry.html:22 @@ -2064,7 +1921,6 @@ msgid "Finished" msgstr "Fertig" #: netbox/core/constants.py:22 netbox/core/tables/jobs.py:40 -#: netbox/templates/core/job.html:55 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Gestartet" @@ -2096,13 +1952,12 @@ msgid "Warning" msgstr "Warnung" #: netbox/core/constants.py:33 netbox/netbox/tables/columns.py:589 -#: netbox/templates/core/job.html:26 msgid "Error" msgstr "Fehler" #: netbox/core/data_backends.py:46 netbox/core/tables/plugins.py:54 #: netbox/templates/core/plugin.html:88 -#: netbox/templates/dcim/interface.html:291 +#: netbox/templates/dcim/panels/interface_wireless.html:10 msgid "Local" msgstr "Lokal" @@ -2161,7 +2016,7 @@ msgid "User name" msgstr "Benutzername" #: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47 -#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2040 +#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2061 #: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386 #: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712 #: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233 @@ -2172,8 +2027,6 @@ msgstr "Benutzername" #: netbox/extras/tables/tables.py:188 netbox/extras/tables/tables.py:319 #: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:520 #: netbox/netbox/preferences.py:46 netbox/netbox/preferences.py:71 -#: netbox/templates/core/datasource.html:42 -#: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 #: netbox/templates/extras/eventrule.html:17 #: netbox/templates/extras/savedfilter.html:25 @@ -2187,7 +2040,7 @@ msgid "Enabled" msgstr "Aktiviert" #: netbox/core/forms/bulk_edit.py:30 netbox/core/forms/filtersets.py:54 -#: netbox/core/tables/data.py:31 netbox/templates/core/datasource.html:50 +#: netbox/core/tables/data.py:31 netbox/core/ui/panels.py:12 msgid "Sync interval" msgstr "Synchronisierungsintervall" @@ -2201,17 +2054,17 @@ msgstr "Synchronisierungsintervall" msgid "Parameters" msgstr "Parameter" -#: netbox/core/forms/bulk_edit.py:37 netbox/templates/core/datasource.html:72 +#: netbox/core/forms/bulk_edit.py:37 netbox/core/ui/panels.py:22 msgid "Ignore rules" msgstr "Regeln ignorieren" #: netbox/core/forms/filtersets.py:33 netbox/core/forms/model_forms.py:100 -#: netbox/extras/forms/model_forms.py:280 +#: netbox/core/ui/panels.py:7 netbox/extras/forms/model_forms.py:280 #: netbox/extras/forms/model_forms.py:613 #: netbox/extras/forms/model_forms.py:702 #: netbox/extras/forms/model_forms.py:755 netbox/extras/tables/tables.py:230 #: netbox/extras/tables/tables.py:600 netbox/extras/tables/tables.py:630 -#: netbox/extras/tables/tables.py:672 netbox/templates/core/datasource.html:31 +#: netbox/extras/tables/tables.py:672 #: netbox/templates/core/inc/datafile_panel.html:7 #: netbox/templates/extras/configtemplate.html:37 #: netbox/templates/extras/object_render_config.html:19 @@ -2238,15 +2091,14 @@ msgstr "Erstellung" #: netbox/extras/forms/filtersets.py:580 netbox/extras/tables/tables.py:283 #: netbox/extras/tables/tables.py:350 netbox/extras/tables/tables.py:376 #: netbox/extras/tables/tables.py:395 netbox/extras/tables/tables.py:427 -#: netbox/extras/tables/tables.py:747 netbox/templates/core/job.html:11 -#: netbox/templates/core/objectchange.html:52 +#: netbox/extras/tables/tables.py:747 #: netbox/templates/extras/tableconfig.html:21 #: netbox/tenancy/tables/contacts.py:84 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Objekttyp" #: netbox/core/forms/filtersets.py:95 netbox/core/tables/jobs.py:46 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:61 +#: netbox/core/ui/panels.py:65 netbox/templates/core/rq_task.html:61 msgid "Queue" msgstr "Warteschlange" @@ -2283,11 +2135,10 @@ msgid "Completed before" msgstr "Abgeschlossen vor" #: netbox/core/forms/filtersets.py:141 netbox/core/forms/filtersets.py:170 -#: netbox/dcim/forms/bulk_edit.py:458 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/model_forms.py:336 netbox/extras/forms/filtersets.py:575 -#: netbox/extras/forms/filtersets.py:595 netbox/extras/tables/tables.py:403 -#: netbox/extras/tables/tables.py:443 -#: netbox/templates/core/objectchange.html:36 +#: netbox/core/ui/panels.py:73 netbox/dcim/forms/bulk_edit.py:458 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:362 +#: netbox/extras/forms/filtersets.py:575 netbox/extras/forms/filtersets.py:595 +#: netbox/extras/tables/tables.py:403 netbox/extras/tables/tables.py:443 #: netbox/templates/extras/savedfilter.html:21 #: netbox/templates/extras/tableconfig.html:29 #: netbox/templates/inc/user_menu.html:31 netbox/users/filtersets.py:135 @@ -2300,7 +2151,6 @@ msgstr "Nutzer" #: netbox/core/forms/filtersets.py:149 netbox/core/tables/change_logging.py:16 #: netbox/core/tables/jobs.py:72 netbox/extras/tables/tables.py:785 #: netbox/extras/tables/tables.py:840 -#: netbox/templates/core/objectchange.html:32 msgid "Time" msgstr "Zeit" @@ -2314,21 +2164,19 @@ msgstr "Vorher" #: netbox/core/forms/filtersets.py:163 netbox/core/tables/change_logging.py:30 #: netbox/extras/forms/model_forms.py:490 -#: netbox/templates/core/objectchange.html:46 #: netbox/templates/extras/eventrule.html:71 msgid "Action" msgstr "Aktion" #: netbox/core/forms/model_forms.py:55 netbox/core/tables/data.py:57 -#: netbox/templates/core/datafile.html:21 #: netbox/templates/extras/report/base.html:33 #: netbox/templates/extras/script/base.html:32 msgid "Source" msgstr "Quelle" #: netbox/core/forms/model_forms.py:57 -#: netbox/templates/core/datasource.html:14 -#: netbox/templates/core/datasource.html:20 +#: netbox/templates/core/datasource.html:10 +#: netbox/templates/core/datasource.html:16 #: netbox/utilities/templatetags/buttons.py:156 msgid "Sync" msgstr "Synchronisieren" @@ -2357,7 +2205,7 @@ msgstr "" msgid "Rack Elevations" msgstr "Rackübersichten" -#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1911 +#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1932 #: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340 #: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144 #: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320 @@ -2503,13 +2351,13 @@ msgid "Config revision #{id}" msgstr "Konfigurationsrevision #{id}" #: netbox/core/models/data.py:45 netbox/dcim/models/cables.py:50 -#: netbox/dcim/models/device_component_templates.py:210 -#: netbox/dcim/models/device_component_templates.py:245 -#: netbox/dcim/models/device_component_templates.py:281 -#: netbox/dcim/models/device_component_templates.py:346 -#: netbox/dcim/models/device_component_templates.py:437 -#: netbox/dcim/models/device_component_templates.py:583 -#: netbox/dcim/models/device_component_templates.py:656 +#: netbox/dcim/models/device_component_templates.py:200 +#: netbox/dcim/models/device_component_templates.py:235 +#: netbox/dcim/models/device_component_templates.py:271 +#: netbox/dcim/models/device_component_templates.py:336 +#: netbox/dcim/models/device_component_templates.py:427 +#: netbox/dcim/models/device_component_templates.py:573 +#: netbox/dcim/models/device_component_templates.py:646 #: netbox/dcim/models/device_components.py:370 #: netbox/dcim/models/device_components.py:397 #: netbox/dcim/models/device_components.py:428 @@ -2523,15 +2371,14 @@ msgstr "Konfigurationsrevision #{id}" msgid "type" msgstr "Typ" -#: netbox/core/models/data.py:50 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:183 netbox/extras/tables/tables.py:850 -#: netbox/templates/core/datasource.html:62 -#: netbox/templates/core/plugin.html:66 +#: netbox/core/models/data.py:50 netbox/core/ui/panels.py:17 +#: netbox/extras/choices.py:37 netbox/extras/models/models.py:183 +#: netbox/extras/tables/tables.py:850 netbox/templates/core/plugin.html:66 msgid "URL" msgstr "URL" #: netbox/core/models/data.py:60 -#: netbox/dcim/models/device_component_templates.py:442 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:605 #: netbox/extras/models/models.py:81 netbox/extras/models/models.py:319 #: netbox/extras/models/models.py:507 netbox/extras/models/models.py:586 @@ -2606,7 +2453,7 @@ msgstr "Pfad" msgid "File path relative to the data source's root" msgstr "Dateipfad relativ zum Stammverzeichnis des Daten Verzeichnisses" -#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:509 +#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:519 msgid "size" msgstr "Größe" @@ -2759,27 +2606,24 @@ msgid "Full Name" msgstr "Vollständiger Name" #: netbox/core/tables/change_logging.py:38 netbox/core/tables/jobs.py:23 -#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:286 -#: netbox/extras/tables/tables.py:379 netbox/extras/tables/tables.py:398 -#: netbox/extras/tables/tables.py:430 netbox/extras/tables/tables.py:514 -#: netbox/extras/tables/tables.py:583 netbox/extras/tables/tables.py:752 -#: netbox/extras/tables/tables.py:793 netbox/extras/tables/tables.py:847 -#: netbox/netbox/tables/tables.py:343 -#: netbox/templates/core/objectchange.html:58 +#: netbox/core/ui/panels.py:83 netbox/extras/choices.py:41 +#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:379 +#: netbox/extras/tables/tables.py:398 netbox/extras/tables/tables.py:430 +#: netbox/extras/tables/tables.py:514 netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:752 netbox/extras/tables/tables.py:793 +#: netbox/extras/tables/tables.py:847 netbox/netbox/tables/tables.py:343 #: netbox/templates/extras/eventrule.html:78 #: netbox/templates/extras/journalentry.html:18 #: netbox/tenancy/tables/contacts.py:87 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "Objekt" -#: netbox/core/tables/change_logging.py:43 -#: netbox/templates/core/objectchange.html:74 +#: netbox/core/tables/change_logging.py:43 netbox/core/ui/panels.py:89 msgid "Request ID" msgstr "Anfragen-ID" #: netbox/core/tables/change_logging.py:46 netbox/core/tables/jobs.py:79 #: netbox/extras/tables/tables.py:796 netbox/extras/tables/tables.py:853 -#: netbox/templates/core/objectchange.html:68 msgid "Message" msgstr "Nachricht" @@ -2792,11 +2636,11 @@ msgstr "Ist aktiv" msgid "Last Synced" msgstr "Zuletzt synchronisiert" -#: netbox/core/tables/data.py:37 netbox/templates/core/datasource.html:118 +#: netbox/core/tables/data.py:37 msgid "Files" msgstr "Dateien" -#: netbox/core/tables/data.py:61 netbox/templates/core/datafile.html:25 +#: netbox/core/tables/data.py:61 msgid "Path" msgstr "Pfad" @@ -2820,7 +2664,7 @@ msgstr "ID" msgid "Interval" msgstr "Intervall" -#: netbox/core/tables/jobs.py:49 +#: netbox/core/tables/jobs.py:49 netbox/core/views.py:255 msgid "Log Entries" msgstr "Logeinträge" @@ -2840,7 +2684,7 @@ msgstr "Keine Logeinträge" msgid "Version" msgstr "Version" -#: netbox/core/tables/plugins.py:21 netbox/templates/core/datafile.html:32 +#: netbox/core/tables/plugins.py:21 msgid "Last Updated" msgstr "Zuletzt aktualisiert" @@ -2936,7 +2780,61 @@ msgstr "PID" msgid "No workers found" msgstr "Kein Job gefunden" -#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:447 +#: netbox/core/ui/panels.py:13 +msgid "Last synced" +msgstr "Zuletzt synchronisiert" + +#: netbox/core/ui/panels.py:29 +msgid "Backend" +msgstr "Backend" + +#: netbox/core/ui/panels.py:33 netbox/extras/tables/tables.py:234 +#: netbox/extras/tables/tables.py:604 netbox/extras/tables/tables.py:634 +#: netbox/extras/tables/tables.py:676 +#: netbox/templates/core/inc/datafile_panel.html:4 +#: netbox/templates/core/inc/datafile_panel.html:17 +#: netbox/templates/extras/configtemplate.html:47 +#: netbox/templates/extras/object_render_config.html:23 +#: netbox/templates/generic/bulk_import.html:35 +msgid "Data File" +msgstr "Datendatei" + +#: netbox/core/ui/panels.py:38 +msgid "SHA256 hash" +msgstr "SHA256-Hash" + +#: netbox/core/ui/panels.py:43 +msgid "Content" +msgstr "Inhalt" + +#: netbox/core/ui/panels.py:47 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 +msgid "Job" +msgstr "Job" + +#: netbox/core/ui/panels.py:50 netbox/core/ui/panels.py:79 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 +#: netbox/extras/forms/filtersets.py:335 +#: netbox/extras/forms/model_forms.py:338 +#: netbox/extras/forms/model_forms.py:398 +#: netbox/extras/forms/model_forms.py:435 +#: netbox/tenancy/forms/filtersets.py:121 +msgid "Object type" +msgstr "Typ des Objekts" + +#: netbox/core/ui/panels.py:56 +msgid "Created by" +msgstr "Erstellt von" + +#: netbox/core/ui/panels.py:60 +msgid "Scheduling" +msgstr "Terminplanung" + +#: netbox/core/ui/panels.py:69 netbox/users/ui/panels.py:53 +msgid "Change" +msgstr "Änderung" + +#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Job{job_id} nicht gefunden" @@ -2946,55 +2844,63 @@ msgstr "Job{job_id} nicht gefunden" msgid "Job {id} not found." msgstr "Job {id}nicht gefunden" -#: netbox/core/views.py:95 +#: netbox/core/views.py:125 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Warteschlangen Job {id}beim Synchronisieren {datasource}" -#: netbox/core/views.py:199 netbox/templates/extras/htmx/script_result.html:43 +#: netbox/core/views.py:237 netbox/extras/forms/filtersets.py:179 +#: netbox/extras/forms/filtersets.py:380 netbox/extras/forms/filtersets.py:403 +#: netbox/extras/forms/filtersets.py:499 +#: netbox/extras/forms/model_forms.py:696 +#: netbox/templates/extras/eventrule.html:84 +msgid "Data" +msgstr "Daten" + +#: netbox/core/views.py:248 netbox/templates/extras/htmx/script_result.html:43 msgid "Log" msgstr "Log" -#: netbox/core/views.py:383 +#: netbox/core/views.py:467 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Wiederhergestellte Konfigurationsrevision # {id}" -#: netbox/core/views.py:486 +#: netbox/core/views.py:570 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Job {id}wurde gelöscht" -#: netbox/core/views.py:488 +#: netbox/core/views.py:572 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Fehler beim Job löschen {id}: {error}" -#: netbox/core/views.py:497 +#: netbox/core/views.py:581 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Job {id}erneut in Warteschlange eingereiht" -#: netbox/core/views.py:506 +#: netbox/core/views.py:590 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Job {id}in Warteschlange eingereiht" -#: netbox/core/views.py:515 +#: netbox/core/views.py:599 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Job {id}wurde gestoppt" -#: netbox/core/views.py:517 +#: netbox/core/views.py:601 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Fehler beim Stoppen des Job {id}" -#: netbox/core/views.py:671 +#: netbox/core/views.py:755 msgid "Plugins catalog could not be loaded" msgstr "Der Plugin-Katalog konnte nicht geladen werden" -#: netbox/core/views.py:707 +#: netbox/core/views.py:791 #, python-brace-format msgid "Plugin {name} not found" msgstr "Plugin {name} nicht gefunden" @@ -3017,7 +2923,7 @@ msgstr "Der Schnittstellenmodus unterstützt keine getaggten VLANs" msgid "Position (U)" msgstr "Position (HE)" -#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:47 +#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:49 msgid "Facility ID" msgstr "Einrichtungs-ID" @@ -3044,8 +2950,8 @@ msgid "Staging" msgstr "Bereitstellung" #: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208 -#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1934 -#: netbox/dcim/choices.py:2083 netbox/virtualization/choices.py:23 +#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1955 +#: netbox/dcim/choices.py:2104 netbox/virtualization/choices.py:23 #: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282 msgid "Decommissioning" msgstr "Außerbetriebnahme" @@ -3111,7 +3017,7 @@ msgstr "Veraltet" msgid "Millimeters" msgstr "Millimeter" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1956 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1977 msgid "Inches" msgstr "Zoll" @@ -3139,21 +3045,17 @@ msgstr "Abgestanden" #: netbox/dcim/forms/bulk_import.py:1211 netbox/dcim/forms/filtersets.py:265 #: netbox/dcim/forms/filtersets.py:780 netbox/dcim/forms/filtersets.py:796 #: netbox/dcim/forms/model_forms.py:93 netbox/dcim/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:188 netbox/dcim/forms/model_forms.py:514 -#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1709 +#: netbox/dcim/forms/model_forms.py:214 netbox/dcim/forms/model_forms.py:540 +#: netbox/dcim/forms/model_forms.py:561 netbox/dcim/forms/model_forms.py:1252 +#: netbox/dcim/forms/model_forms.py:1735 #: netbox/dcim/forms/object_import.py:177 netbox/dcim/tables/devices.py:702 #: netbox/dcim/tables/devices.py:737 netbox/dcim/tables/devices.py:965 #: netbox/dcim/tables/devices.py:1052 netbox/dcim/tables/devices.py:1205 #: netbox/ipam/forms/bulk_import.py:601 netbox/ipam/forms/model_forms.py:758 #: netbox/ipam/tables/fhrp.py:56 netbox/ipam/tables/ip.py:329 #: netbox/ipam/tables/services.py:42 netbox/netbox/tables/tables.py:329 -#: netbox/netbox/ui/panels.py:206 netbox/templates/dcim/interface.html:113 -#: netbox/templates/ipam/service.html:30 -#: netbox/templates/tenancy/contactgroup.html:29 -#: netbox/templates/tenancy/tenantgroup.html:37 -#: netbox/tenancy/forms/bulk_edit.py:33 netbox/tenancy/forms/bulk_edit.py:62 -#: netbox/tenancy/forms/bulk_import.py:31 +#: netbox/netbox/ui/panels.py:207 netbox/tenancy/forms/bulk_edit.py:33 +#: netbox/tenancy/forms/bulk_edit.py:62 netbox/tenancy/forms/bulk_import.py:31 #: netbox/tenancy/forms/bulk_import.py:64 #: netbox/tenancy/forms/model_forms.py:26 #: netbox/tenancy/forms/model_forms.py:67 @@ -3187,7 +3089,7 @@ msgid "Rear" msgstr "Rückseite" #: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258 -#: netbox/dcim/choices.py:2081 netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:2102 netbox/virtualization/choices.py:47 msgid "Staged" msgstr "Vorbereitet" @@ -3220,7 +3122,7 @@ msgid "Top to bottom" msgstr "Von oben nach unten" #: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280 -#: netbox/dcim/choices.py:1566 +#: netbox/dcim/choices.py:1587 msgid "Passive" msgstr "Passiv" @@ -3249,8 +3151,8 @@ msgid "Proprietary" msgstr "Propritär" #: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853 -#: netbox/dcim/choices.py:1478 netbox/dcim/choices.py:1480 -#: netbox/dcim/choices.py:1716 netbox/dcim/choices.py:1718 +#: netbox/dcim/choices.py:1499 netbox/dcim/choices.py:1501 +#: netbox/dcim/choices.py:1737 netbox/dcim/choices.py:1739 #: netbox/netbox/navigation/menu.py:212 msgid "Other" msgstr "Andere" @@ -3263,348 +3165,350 @@ msgstr "ITA/International" msgid "Physical" msgstr "Physikalisch" -#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1153 +#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1162 msgid "Virtual" msgstr "Virtuell" -#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1355 +#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 -#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125 -#: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150 -#: netbox/netbox/navigation/menu.py:154 -#: netbox/templates/dcim/interface.html:285 +#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1151 +#: netbox/dcim/forms/model_forms.py:1615 netbox/dcim/ui/panels.py:546 +#: netbox/netbox/navigation/menu.py:150 netbox/netbox/navigation/menu.py:154 msgid "Wireless" msgstr "Funknetze" -#: netbox/dcim/choices.py:1151 +#: netbox/dcim/choices.py:1160 msgid "Virtual interfaces" msgstr "Virtuelle Schnittstellen" -#: netbox/dcim/choices.py:1154 netbox/dcim/forms/bulk_edit.py:1399 -#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107 -#: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:117 +#: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 +#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1133 +#: netbox/dcim/tables/devices.py:741 #: netbox/virtualization/forms/bulk_edit.py:177 #: netbox/virtualization/forms/bulk_import.py:171 #: netbox/virtualization/tables/virtualmachines.py:137 msgid "Bridge" msgstr "Bridge" -#: netbox/dcim/choices.py:1155 +#: netbox/dcim/choices.py:1164 msgid "Link Aggregation Group (LAG)" msgstr "Link Aggregation Group (LAG)" -#: netbox/dcim/choices.py:1159 +#: netbox/dcim/choices.py:1168 msgid "FastEthernet (100 Mbps)" msgstr "FastEthernet (100 Mbit/s)" -#: netbox/dcim/choices.py:1168 +#: netbox/dcim/choices.py:1177 msgid "GigabitEthernet (1 Gbps)" msgstr "Gigabit-Ethernet (1 Gbit/s)" -#: netbox/dcim/choices.py:1186 +#: netbox/dcim/choices.py:1195 msgid "2.5/5 Gbps Ethernet" msgstr "2,5/5 Gbit/s Ethernet" -#: netbox/dcim/choices.py:1193 +#: netbox/dcim/choices.py:1202 msgid "10 Gbps Ethernet" msgstr "10-Gbit/s-Ethernet" -#: netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1218 msgid "25 Gbps Ethernet" msgstr "25-Gbit/s-Ethernet" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1228 msgid "40 Gbps Ethernet" msgstr "40-Gbit/s-Ethernet" -#: netbox/dcim/choices.py:1230 +#: netbox/dcim/choices.py:1239 msgid "50 Gbps Ethernet" msgstr "50-Gbit/s-Ethernet" -#: netbox/dcim/choices.py:1240 +#: netbox/dcim/choices.py:1249 msgid "100 Gbps Ethernet" msgstr "100 Gbit/s Ethernet" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1270 msgid "200 Gbps Ethernet" msgstr "200 Gbit/s Ethernet" -#: netbox/dcim/choices.py:1275 +#: netbox/dcim/choices.py:1284 msgid "400 Gbps Ethernet" msgstr "400-Gbit/s-Ethernet" -#: netbox/dcim/choices.py:1293 +#: netbox/dcim/choices.py:1302 msgid "800 Gbps Ethernet" msgstr "800 Gbit/s Ethernet" -#: netbox/dcim/choices.py:1302 +#: netbox/dcim/choices.py:1311 +msgid "1.6 Tbps Ethernet" +msgstr "1,6 Tbit/s Ethernet" + +#: netbox/dcim/choices.py:1319 msgid "Pluggable transceivers" msgstr "Steckbare Transceiver" -#: netbox/dcim/choices.py:1339 +#: netbox/dcim/choices.py:1359 msgid "Backplane Ethernet" msgstr "Backplane-Ethernet" -#: netbox/dcim/choices.py:1371 +#: netbox/dcim/choices.py:1392 msgid "Cellular" msgstr "Mobilfunk" -#: netbox/dcim/choices.py:1423 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/choices.py:1444 netbox/dcim/forms/filtersets.py:425 #: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112 #: netbox/dcim/forms/filtersets.py:1910 -#: netbox/templates/dcim/inventoryitem.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:66 msgid "Serial" msgstr "Seriell" -#: netbox/dcim/choices.py:1438 +#: netbox/dcim/choices.py:1459 msgid "Coaxial" msgstr "Koaxial" -#: netbox/dcim/choices.py:1459 +#: netbox/dcim/choices.py:1480 msgid "Stacking" msgstr "Stapelnd" -#: netbox/dcim/choices.py:1511 +#: netbox/dcim/choices.py:1532 msgid "Half" msgstr "Halb" -#: netbox/dcim/choices.py:1512 +#: netbox/dcim/choices.py:1533 msgid "Full" msgstr "Voll" -#: netbox/dcim/choices.py:1513 netbox/netbox/preferences.py:32 +#: netbox/dcim/choices.py:1534 netbox/netbox/preferences.py:32 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Automatisch" -#: netbox/dcim/choices.py:1525 +#: netbox/dcim/choices.py:1546 msgid "Access" msgstr "Untagged" -#: netbox/dcim/choices.py:1526 netbox/ipam/tables/vlans.py:148 +#: netbox/dcim/choices.py:1547 netbox/ipam/tables/vlans.py:148 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Tagged" -#: netbox/dcim/choices.py:1527 +#: netbox/dcim/choices.py:1548 msgid "Tagged (All)" msgstr "Tagged (Alle)" -#: netbox/dcim/choices.py:1528 netbox/templates/ipam/vlan_edit.html:26 +#: netbox/dcim/choices.py:1549 netbox/templates/ipam/vlan_edit.html:26 msgid "Q-in-Q (802.1ad)" msgstr "Q in Q (802.1ad)" -#: netbox/dcim/choices.py:1557 +#: netbox/dcim/choices.py:1578 msgid "IEEE Standard" msgstr "IEEE-Standard" -#: netbox/dcim/choices.py:1568 +#: netbox/dcim/choices.py:1589 msgid "Passive 24V (2-pair)" msgstr "Passiv 24 V (2 Paare)" -#: netbox/dcim/choices.py:1569 +#: netbox/dcim/choices.py:1590 msgid "Passive 24V (4-pair)" msgstr "Passiv 24 V (4 Paare)" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1591 msgid "Passive 48V (2-pair)" msgstr "Passiv 48 V (2 Paare)" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1592 msgid "Passive 48V (4-pair)" msgstr "Passiv 48 V (4 Paare)" -#: netbox/dcim/choices.py:1644 +#: netbox/dcim/choices.py:1665 msgid "Copper" msgstr "Kupfer" -#: netbox/dcim/choices.py:1667 +#: netbox/dcim/choices.py:1688 msgid "Fiber Optic" msgstr "Glasfaser" -#: netbox/dcim/choices.py:1703 netbox/dcim/choices.py:1917 +#: netbox/dcim/choices.py:1724 netbox/dcim/choices.py:1938 msgid "USB" msgstr "USB" -#: netbox/dcim/choices.py:1759 +#: netbox/dcim/choices.py:1780 msgid "Single" msgstr "Einzeln" -#: netbox/dcim/choices.py:1761 +#: netbox/dcim/choices.py:1782 msgid "1C1P" msgstr "1C1P" -#: netbox/dcim/choices.py:1762 +#: netbox/dcim/choices.py:1783 msgid "1C2P" msgstr "1C2P" -#: netbox/dcim/choices.py:1763 +#: netbox/dcim/choices.py:1784 msgid "1C4P" msgstr "1C4P" -#: netbox/dcim/choices.py:1764 +#: netbox/dcim/choices.py:1785 msgid "1C6P" msgstr "1C6P" -#: netbox/dcim/choices.py:1765 +#: netbox/dcim/choices.py:1786 msgid "1C8P" msgstr "1C8P" -#: netbox/dcim/choices.py:1766 +#: netbox/dcim/choices.py:1787 msgid "1C12P" msgstr "1C12P" -#: netbox/dcim/choices.py:1767 +#: netbox/dcim/choices.py:1788 msgid "1C16P" msgstr "1C16P" -#: netbox/dcim/choices.py:1771 +#: netbox/dcim/choices.py:1792 msgid "Trunk" msgstr "Trunk" -#: netbox/dcim/choices.py:1773 +#: netbox/dcim/choices.py:1794 msgid "2C1P trunk" msgstr "2C1P trunk" -#: netbox/dcim/choices.py:1774 +#: netbox/dcim/choices.py:1795 msgid "2C2P trunk" msgstr "2C2P trunk" -#: netbox/dcim/choices.py:1775 +#: netbox/dcim/choices.py:1796 msgid "2C4P trunk" msgstr "2C4P trunk" -#: netbox/dcim/choices.py:1776 +#: netbox/dcim/choices.py:1797 msgid "2C4P trunk (shuffle)" msgstr "2C4P trunk (shuffle)" -#: netbox/dcim/choices.py:1777 +#: netbox/dcim/choices.py:1798 msgid "2C6P trunk" msgstr "2C6P trunk" -#: netbox/dcim/choices.py:1778 +#: netbox/dcim/choices.py:1799 msgid "2C8P trunk" msgstr "2C8P trunk" -#: netbox/dcim/choices.py:1779 +#: netbox/dcim/choices.py:1800 msgid "2C12P trunk" msgstr "2C12P trunk" -#: netbox/dcim/choices.py:1780 +#: netbox/dcim/choices.py:1801 msgid "4C1P trunk" msgstr "4C1P trunk" -#: netbox/dcim/choices.py:1781 +#: netbox/dcim/choices.py:1802 msgid "4C2P trunk" msgstr "4C2P trunk" -#: netbox/dcim/choices.py:1782 +#: netbox/dcim/choices.py:1803 msgid "4C4P trunk" msgstr "4C4P trunk" -#: netbox/dcim/choices.py:1783 +#: netbox/dcim/choices.py:1804 msgid "4C4P trunk (shuffle)" msgstr "4C4P trunk (shuffle)" -#: netbox/dcim/choices.py:1784 +#: netbox/dcim/choices.py:1805 msgid "4C6P trunk" msgstr "4C6P trunk" -#: netbox/dcim/choices.py:1785 +#: netbox/dcim/choices.py:1806 msgid "4C8P trunk" msgstr "4C8P trunk" -#: netbox/dcim/choices.py:1786 +#: netbox/dcim/choices.py:1807 msgid "8C4P trunk" msgstr "8C4P trunk" -#: netbox/dcim/choices.py:1790 +#: netbox/dcim/choices.py:1811 msgid "Breakout" msgstr "Breakout" -#: netbox/dcim/choices.py:1792 +#: netbox/dcim/choices.py:1813 msgid "1C4P:4C1P breakout" msgstr "1C4P:4C1P breakout" -#: netbox/dcim/choices.py:1793 +#: netbox/dcim/choices.py:1814 msgid "1C6P:6C1P breakout" msgstr "1C6P:6C1P breakout" -#: netbox/dcim/choices.py:1794 +#: netbox/dcim/choices.py:1815 msgid "2C4P:8C1P breakout (shuffle)" msgstr "2C4P:8C1P breakout (shuffle)" -#: netbox/dcim/choices.py:1852 +#: netbox/dcim/choices.py:1873 msgid "Copper - Twisted Pair (UTP/STP)" msgstr "Kupfer — Twisted Pair (UTP/STP)" -#: netbox/dcim/choices.py:1866 +#: netbox/dcim/choices.py:1887 msgid "Copper - Twinax (DAC)" msgstr "Kupfer - Twinax (DAC)" -#: netbox/dcim/choices.py:1873 +#: netbox/dcim/choices.py:1894 msgid "Copper - Coaxial" msgstr "Kupfer - Koaxial" -#: netbox/dcim/choices.py:1888 +#: netbox/dcim/choices.py:1909 msgid "Fiber - Multimode" msgstr "Glasfaser — Multimode" -#: netbox/dcim/choices.py:1899 +#: netbox/dcim/choices.py:1920 msgid "Fiber - Single-mode" msgstr "Glasfaser — Singlemode" -#: netbox/dcim/choices.py:1907 +#: netbox/dcim/choices.py:1928 msgid "Fiber - Other" msgstr "Glasfaser - Andere" -#: netbox/dcim/choices.py:1932 netbox/dcim/forms/filtersets.py:1402 +#: netbox/dcim/choices.py:1953 netbox/dcim/forms/filtersets.py:1402 msgid "Connected" msgstr "Verbunden" -#: netbox/dcim/choices.py:1951 netbox/netbox/choices.py:177 +#: netbox/dcim/choices.py:1972 netbox/netbox/choices.py:177 msgid "Kilometers" msgstr "Kilometer" -#: netbox/dcim/choices.py:1952 netbox/netbox/choices.py:178 +#: netbox/dcim/choices.py:1973 netbox/netbox/choices.py:178 #: netbox/templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Meter" -#: netbox/dcim/choices.py:1953 +#: netbox/dcim/choices.py:1974 msgid "Centimeters" msgstr "Zentimeter" -#: netbox/dcim/choices.py:1954 netbox/netbox/choices.py:179 +#: netbox/dcim/choices.py:1975 netbox/netbox/choices.py:179 msgid "Miles" msgstr "Meilen" -#: netbox/dcim/choices.py:1955 netbox/netbox/choices.py:180 +#: netbox/dcim/choices.py:1976 netbox/netbox/choices.py:180 #: netbox/templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Fuß" -#: netbox/dcim/choices.py:2003 +#: netbox/dcim/choices.py:2024 msgid "Redundant" msgstr "Redundant" -#: netbox/dcim/choices.py:2024 +#: netbox/dcim/choices.py:2045 msgid "Single phase" msgstr "Einphasig" -#: netbox/dcim/choices.py:2025 +#: netbox/dcim/choices.py:2046 msgid "Three-phase" msgstr "Dreiphasig" -#: netbox/dcim/choices.py:2041 netbox/extras/choices.py:53 +#: netbox/dcim/choices.py:2062 netbox/extras/choices.py:53 #: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70 #: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Deaktiviert" -#: netbox/dcim/choices.py:2042 +#: netbox/dcim/choices.py:2063 msgid "Faulty" msgstr "Fehlerhaft" @@ -3886,8 +3790,9 @@ msgstr "Hat volle Tiefe" #: netbox/dcim/filtersets.py:1323 netbox/dcim/forms/filtersets.py:920 #: netbox/dcim/forms/filtersets.py:1634 netbox/dcim/forms/filtersets.py:1979 -#: netbox/dcim/forms/model_forms.py:1915 netbox/dcim/models/devices.py:1313 -#: netbox/dcim/models/devices.py:1336 netbox/virtualization/filtersets.py:230 +#: netbox/dcim/forms/model_forms.py:1941 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1336 netbox/dcim/ui/panels.py:366 +#: netbox/dcim/ui/panels.py:504 netbox/virtualization/filtersets.py:230 #: netbox/virtualization/filtersets.py:318 #: netbox/virtualization/forms/filtersets.py:191 #: netbox/virtualization/forms/filtersets.py:245 @@ -3975,7 +3880,6 @@ msgstr "Virtuelles Gehäuse (ID)" #: netbox/dcim/forms/object_create.py:329 netbox/dcim/tables/devices.py:215 #: netbox/netbox/navigation/menu.py:82 #: netbox/templates/dcim/device_edit.html:95 -#: netbox/templates/dcim/virtualchassis.html:10 #: netbox/templates/dcim/virtualchassis_edit.html:28 msgid "Virtual Chassis" msgstr "Virtuelles Gehäuse" @@ -4035,7 +3939,7 @@ msgstr "Ist zugewiesen" msgid "Is primary" msgstr "Ist primär" -#: netbox/dcim/filtersets.py:2060 netbox/templates/dcim/interface.html:81 +#: netbox/dcim/filtersets.py:2060 #: netbox/virtualization/forms/model_forms.py:386 #: netbox/virtualization/ui/panels.py:62 msgid "802.1Q Mode" @@ -4052,27 +3956,25 @@ msgstr "Zugewiesene VID" #: netbox/dcim/filtersets.py:2074 netbox/dcim/forms/bulk_edit.py:1512 #: netbox/dcim/forms/bulk_import.py:1034 netbox/dcim/forms/filtersets.py:1687 -#: netbox/dcim/forms/model_forms.py:1555 +#: netbox/dcim/forms/model_forms.py:1581 #: netbox/dcim/models/device_components.py:867 -#: netbox/dcim/tables/devices.py:667 netbox/ipam/filtersets.py:360 -#: netbox/ipam/filtersets.py:372 netbox/ipam/filtersets.py:511 -#: netbox/ipam/filtersets.py:618 netbox/ipam/filtersets.py:630 -#: netbox/ipam/forms/bulk_edit.py:190 netbox/ipam/forms/bulk_edit.py:240 -#: netbox/ipam/forms/bulk_edit.py:281 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:248 netbox/ipam/forms/bulk_import.py:284 -#: netbox/ipam/forms/filtersets.py:70 netbox/ipam/forms/filtersets.py:194 -#: netbox/ipam/forms/filtersets.py:348 netbox/ipam/forms/model_forms.py:68 -#: netbox/ipam/forms/model_forms.py:203 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:303 netbox/ipam/forms/model_forms.py:466 -#: netbox/ipam/forms/model_forms.py:480 netbox/ipam/forms/model_forms.py:494 -#: netbox/ipam/models/ip.py:224 netbox/ipam/models/ip.py:518 -#: netbox/ipam/models/ip.py:747 netbox/ipam/models/vrfs.py:61 -#: netbox/ipam/tables/ip.py:187 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:311 netbox/ipam/tables/ip.py:413 -#: netbox/templates/dcim/interface.html:170 -#: netbox/templates/ipam/ipaddress.html:18 -#: netbox/templates/ipam/iprange.html:47 netbox/templates/ipam/prefix.html:19 -#: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 +#: netbox/dcim/tables/devices.py:667 netbox/dcim/ui/panels.py:507 +#: netbox/ipam/filtersets.py:360 netbox/ipam/filtersets.py:372 +#: netbox/ipam/filtersets.py:511 netbox/ipam/filtersets.py:618 +#: netbox/ipam/filtersets.py:630 netbox/ipam/forms/bulk_edit.py:190 +#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:281 +#: netbox/ipam/forms/bulk_import.py:163 netbox/ipam/forms/bulk_import.py:248 +#: netbox/ipam/forms/bulk_import.py:284 netbox/ipam/forms/filtersets.py:70 +#: netbox/ipam/forms/filtersets.py:194 netbox/ipam/forms/filtersets.py:348 +#: netbox/ipam/forms/model_forms.py:68 netbox/ipam/forms/model_forms.py:203 +#: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:303 +#: netbox/ipam/forms/model_forms.py:466 netbox/ipam/forms/model_forms.py:480 +#: netbox/ipam/forms/model_forms.py:494 netbox/ipam/models/ip.py:224 +#: netbox/ipam/models/ip.py:528 netbox/ipam/models/ip.py:757 +#: netbox/ipam/models/vrfs.py:61 netbox/ipam/tables/ip.py:187 +#: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:311 +#: netbox/ipam/tables/ip.py:413 netbox/ipam/ui/panels.py:102 +#: netbox/ipam/ui/panels.py:111 netbox/ipam/ui/panels.py:139 #: netbox/virtualization/forms/bulk_edit.py:226 #: netbox/virtualization/forms/bulk_import.py:218 #: netbox/virtualization/forms/filtersets.py:250 @@ -4095,9 +3997,9 @@ msgid "L2VPN (ID)" msgstr "L2VPN (ID)" #: netbox/dcim/filtersets.py:2092 netbox/dcim/forms/filtersets.py:1692 -#: netbox/dcim/tables/devices.py:607 netbox/ipam/filtersets.py:1087 -#: netbox/ipam/forms/filtersets.py:613 netbox/ipam/tables/vlans.py:116 -#: netbox/templates/dcim/interface.html:104 netbox/templates/ipam/vlan.html:82 +#: netbox/dcim/tables/devices.py:607 netbox/dcim/ui/panels.py:487 +#: netbox/ipam/filtersets.py:1087 netbox/ipam/forms/filtersets.py:613 +#: netbox/ipam/tables/vlans.py:116 netbox/ipam/ui/panels.py:206 #: netbox/virtualization/forms/filtersets.py:255 #: netbox/vpn/forms/bulk_import.py:285 netbox/vpn/forms/filtersets.py:268 #: netbox/vpn/forms/model_forms.py:407 netbox/vpn/forms/model_forms.py:425 @@ -4111,10 +4013,9 @@ msgid "VLAN Translation Policy (ID)" msgstr "VLAN-Übersetzungsrichtlinie (ID)" #: netbox/dcim/filtersets.py:2105 netbox/dcim/forms/filtersets.py:1658 -#: netbox/dcim/forms/model_forms.py:1572 +#: netbox/dcim/forms/model_forms.py:1598 #: netbox/dcim/models/device_components.py:668 #: netbox/ipam/forms/filtersets.py:531 netbox/ipam/forms/model_forms.py:703 -#: netbox/templates/ipam/vlantranslationpolicy.html:11 #: netbox/virtualization/forms/bulk_edit.py:231 #: netbox/virtualization/forms/filtersets.py:265 #: netbox/virtualization/forms/model_forms.py:364 @@ -4155,9 +4056,6 @@ msgid "LAG interface (ID)" msgstr "LAG-Schnittstelle (ID)" #: netbox/dcim/filtersets.py:2185 netbox/dcim/tables/devices.py:1194 -#: netbox/templates/dcim/interface.html:149 -#: netbox/templates/dcim/macaddress.html:11 -#: netbox/templates/dcim/macaddress.html:14 #: netbox/virtualization/ui/panels.py:71 msgid "MAC Address" msgstr "MAC-Adresse" @@ -4166,15 +4064,14 @@ msgstr "MAC-Adresse" msgid "Primary MAC address (ID)" msgstr "Primäre MAC-Adresse (ID)" -#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1559 +#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1585 #: netbox/virtualization/filtersets.py:331 #: netbox/virtualization/forms/model_forms.py:302 msgid "Primary MAC address" msgstr "Primäre MAC-Adresse" #: netbox/dcim/filtersets.py:2225 netbox/dcim/filtersets.py:2237 -#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1895 -#: netbox/templates/dcim/virtualdevicecontext.html:15 +#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1921 msgid "Virtual Device Context" msgstr "Virtual Device Context" @@ -4233,6 +4130,7 @@ msgstr "Stromverteiler (ID)" #: netbox/netbox/forms/bulk_import.py:27 netbox/netbox/forms/mixins.py:131 #: netbox/netbox/tables/columns.py:495 #: netbox/templates/circuits/inc/circuit_termination.html:29 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:29 #: netbox/templates/generic/bulk_edit.html:78 #: netbox/templates/inc/panels/tags.html:5 #: netbox/utilities/forms/fields/fields.py:101 @@ -4240,14 +4138,12 @@ msgid "Tags" msgstr "Tags" #: netbox/dcim/forms/bulk_create.py:116 netbox/dcim/forms/filtersets.py:1842 -#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:595 -#: netbox/dcim/forms/model_forms.py:661 netbox/dcim/forms/object_create.py:155 +#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:621 +#: netbox/dcim/forms/model_forms.py:687 netbox/dcim/forms/object_create.py:155 #: netbox/dcim/forms/object_create.py:256 netbox/dcim/tables/devices.py:169 -#: netbox/templates/dcim/frontport.html:132 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/panels/front_port_mappings.html:9 +#: netbox/templates/dcim/panels/rear_port_mappings.html:9 #: netbox/templates/dcim/panels/virtual_chassis_members.html:9 -#: netbox/templates/dcim/rearport.html:126 -#: netbox/templates/dcim/virtualchassis.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:67 msgid "Position" msgstr "Position" @@ -4278,7 +4174,7 @@ msgid "Contact E-mail" msgstr "E-Mail des Kontakts" #: netbox/dcim/forms/bulk_edit.py:152 netbox/dcim/forms/bulk_import.py:138 -#: netbox/dcim/forms/model_forms.py:147 +#: netbox/dcim/forms/model_forms.py:157 msgid "Time zone" msgstr "Zeitzone" @@ -4293,17 +4189,16 @@ msgstr "Zeitzone" #: netbox/dcim/forms/filtersets.py:546 netbox/dcim/forms/filtersets.py:695 #: netbox/dcim/forms/filtersets.py:801 netbox/dcim/forms/filtersets.py:884 #: netbox/dcim/forms/filtersets.py:1096 netbox/dcim/forms/filtersets.py:1907 -#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:223 -#: netbox/dcim/forms/model_forms.py:354 netbox/dcim/forms/model_forms.py:366 -#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:540 -#: netbox/dcim/forms/model_forms.py:1239 netbox/dcim/forms/model_forms.py:1722 +#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:249 +#: netbox/dcim/forms/model_forms.py:380 netbox/dcim/forms/model_forms.py:392 +#: netbox/dcim/forms/model_forms.py:462 netbox/dcim/forms/model_forms.py:566 +#: netbox/dcim/forms/model_forms.py:1265 netbox/dcim/forms/model_forms.py:1748 #: netbox/dcim/forms/object_import.py:188 netbox/dcim/tables/devices.py:101 #: netbox/dcim/tables/devices.py:176 netbox/dcim/tables/devices.py:1035 #: netbox/dcim/tables/devicetypes.py:87 netbox/dcim/tables/devicetypes.py:322 #: netbox/dcim/tables/modules.py:47 netbox/dcim/tables/modules.py:90 #: netbox/dcim/tables/racks.py:51 netbox/dcim/tables/racks.py:121 -#: netbox/templates/dcim/inventoryitem.html:48 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/panels/installed_module.html:13 #: netbox/templates/dcim/panels/module_type.html:7 msgid "Manufacturer" msgstr "Hersteller" @@ -4328,7 +4223,7 @@ msgid "Height (U)" msgstr "Höhe (HE)" #: netbox/dcim/forms/bulk_edit.py:244 netbox/dcim/forms/bulk_edit.py:387 -#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:39 +#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:41 msgid "Descending units" msgstr "Absteigende Höheneinheiten (HE)" @@ -4362,10 +4257,10 @@ msgstr "Einbautiefe" #: netbox/dcim/forms/filtersets.py:362 netbox/dcim/forms/filtersets.py:441 #: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:651 #: netbox/dcim/forms/filtersets.py:683 netbox/dcim/forms/filtersets.py:755 -#: netbox/dcim/forms/model_forms.py:237 netbox/dcim/forms/model_forms.py:318 +#: netbox/dcim/forms/model_forms.py:263 netbox/dcim/forms/model_forms.py:344 #: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:55 #: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:162 -#: netbox/dcim/views.py:891 netbox/dcim/views.py:1019 +#: netbox/dcim/views.py:893 netbox/dcim/views.py:1021 #: netbox/extras/forms/bulk_edit.py:57 netbox/extras/forms/bulk_edit.py:137 #: netbox/extras/forms/bulk_edit.py:191 netbox/extras/forms/bulk_edit.py:219 #: netbox/extras/forms/bulk_edit.py:315 netbox/extras/forms/bulk_edit.py:341 @@ -4376,7 +4271,7 @@ msgstr "Einbautiefe" #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 #: netbox/templates/extras/tableconfig.html:41 -#: netbox/templates/extras/tag.html:32 netbox/templates/ipam/role.html:30 +#: netbox/templates/extras/tag.html:32 msgid "Weight" msgstr "Gewicht" @@ -4395,18 +4290,18 @@ msgid "Weight unit" msgstr "Gewichtseinheit" #: netbox/dcim/forms/bulk_edit.py:290 netbox/dcim/forms/filtersets.py:335 -#: netbox/dcim/forms/model_forms.py:233 netbox/dcim/forms/model_forms.py:272 +#: netbox/dcim/forms/model_forms.py:259 netbox/dcim/forms/model_forms.py:298 msgid "Rack Type" msgstr "Rack-Typ" #: netbox/dcim/forms/bulk_edit.py:292 netbox/dcim/forms/bulk_edit.py:440 -#: netbox/dcim/forms/model_forms.py:236 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/model_forms.py:262 netbox/dcim/forms/model_forms.py:343 msgid "Outer Dimensions" msgstr "Äußere Abmessungen" -#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:238 -#: netbox/dcim/forms/model_forms.py:319 netbox/dcim/ui/panels.py:135 -#: netbox/dcim/views.py:885 netbox/dcim/views.py:1017 +#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:345 netbox/dcim/ui/panels.py:137 +#: netbox/dcim/views.py:887 netbox/dcim/views.py:1019 #: netbox/extras/tables/tables.py:278 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 #: netbox/templates/extras/imageattachment.html:40 @@ -4414,8 +4309,8 @@ msgid "Dimensions" msgstr "Abmessungen" #: netbox/dcim/forms/bulk_edit.py:297 netbox/dcim/forms/filtersets.py:336 -#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:240 -#: netbox/dcim/views.py:890 netbox/dcim/views.py:1018 +#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:266 +#: netbox/dcim/views.py:892 netbox/dcim/views.py:1020 #: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "Nummerierung" @@ -4426,13 +4321,14 @@ msgid "Rack type" msgstr "Racktyp" #: netbox/dcim/forms/bulk_edit.py:363 netbox/dcim/forms/bulk_edit.py:708 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/templates/dcim/modulebay.html:70 +#: netbox/dcim/forms/bulk_edit.py:763 msgid "Serial Number" msgstr "Seriennummer" #: netbox/dcim/forms/bulk_edit.py:366 netbox/dcim/forms/filtersets.py:429 #: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1116 #: netbox/dcim/forms/filtersets.py:1914 +#: netbox/templates/dcim/panels/installed_module.html:25 msgid "Asset tag" msgstr "Asset-Tag" @@ -4453,13 +4349,12 @@ msgstr "Luftstrom" #: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/filtersets.py:501 #: netbox/dcim/forms/filtersets.py:874 netbox/dcim/forms/filtersets.py:1086 #: netbox/dcim/forms/filtersets.py:1186 netbox/dcim/forms/filtersets.py:1325 -#: netbox/dcim/forms/model_forms.py:282 netbox/dcim/forms/model_forms.py:326 -#: netbox/dcim/forms/model_forms.py:586 netbox/dcim/forms/model_forms.py:871 +#: netbox/dcim/forms/model_forms.py:308 netbox/dcim/forms/model_forms.py:352 +#: netbox/dcim/forms/model_forms.py:612 netbox/dcim/forms/model_forms.py:897 #: netbox/dcim/forms/object_create.py:303 netbox/dcim/tables/devices.py:165 #: netbox/dcim/tables/power.py:67 netbox/dcim/tables/racks.py:204 #: netbox/ipam/forms/filtersets.py:486 #: netbox/templates/dcim/inc/cable_termination.html:16 -#: netbox/templates/dcim/powerfeed.html:28 #: netbox/templates/dcim/rack/base.html:4 #: netbox/virtualization/forms/model_forms.py:107 msgid "Rack" @@ -4469,14 +4364,14 @@ msgstr "Rack" #: netbox/dcim/forms/filtersets.py:360 netbox/dcim/forms/filtersets.py:440 #: netbox/dcim/forms/filtersets.py:532 netbox/dcim/forms/filtersets.py:677 #: netbox/dcim/forms/filtersets.py:822 netbox/dcim/forms/filtersets.py:1043 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:787 -#: netbox/dcim/forms/model_forms.py:1790 +#: netbox/dcim/forms/model_forms.py:470 netbox/dcim/forms/model_forms.py:813 +#: netbox/dcim/forms/model_forms.py:1816 #: netbox/templates/dcim/device_edit.html:22 msgid "Hardware" msgstr "Hardware" #: netbox/dcim/forms/bulk_edit.py:490 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:397 msgid "Default platform" msgstr "Standard-Betriebssystem" @@ -4493,29 +4388,29 @@ msgstr "Höheneinheit" msgid "Exclude from utilization" msgstr "Von der Nutzung ausschließen" -#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:385 -#: netbox/dcim/forms/model_forms.py:1022 netbox/dcim/forms/model_forms.py:1064 -#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1119 -#: netbox/dcim/forms/model_forms.py:1140 netbox/dcim/forms/model_forms.py:1180 -#: netbox/dcim/forms/model_forms.py:1198 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:411 +#: netbox/dcim/forms/model_forms.py:1048 netbox/dcim/forms/model_forms.py:1090 +#: netbox/dcim/forms/model_forms.py:1117 netbox/dcim/forms/model_forms.py:1145 +#: netbox/dcim/forms/model_forms.py:1166 netbox/dcim/forms/model_forms.py:1206 +#: netbox/dcim/forms/model_forms.py:1224 #: netbox/dcim/forms/object_create.py:119 netbox/dcim/tables/devicetypes.py:84 -#: netbox/dcim/ui/panels.py:125 netbox/templates/dcim/devicebay.html:52 +#: netbox/dcim/ui/panels.py:127 msgid "Device Type" msgstr "Gerätetyp" -#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:412 -#: netbox/dcim/views.py:1590 netbox/extras/forms/model_forms.py:601 +#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:438 +#: netbox/dcim/views.py:1592 netbox/extras/forms/model_forms.py:601 msgid "Schema" msgstr "Schema" #: netbox/dcim/forms/bulk_edit.py:549 netbox/dcim/forms/bulk_edit.py:556 #: netbox/dcim/forms/bulk_edit.py:787 netbox/dcim/forms/bulk_import.py:460 #: netbox/dcim/forms/bulk_import.py:1459 netbox/dcim/forms/filtersets.py:690 -#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:418 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/tables/modules.py:43 +#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:444 +#: netbox/dcim/forms/model_forms.py:457 netbox/dcim/tables/modules.py:43 #: netbox/extras/forms/filtersets.py:413 #: netbox/extras/forms/model_forms.py:626 netbox/extras/tables/tables.py:627 -#: netbox/templates/account/base.html:7 netbox/templates/dcim/cable.html:23 +#: netbox/templates/account/base.html:7 #: netbox/templates/extras/configcontext.html:21 #: netbox/templates/inc/user_menu.html:38 netbox/vpn/forms/bulk_edit.py:213 #: netbox/vpn/forms/filtersets.py:203 netbox/vpn/forms/model_forms.py:378 @@ -4523,22 +4418,21 @@ msgid "Profile" msgstr "Profil" #: netbox/dcim/forms/bulk_edit.py:588 netbox/dcim/forms/filtersets.py:1379 -#: netbox/dcim/forms/model_forms.py:443 netbox/dcim/forms/model_forms.py:1023 -#: netbox/dcim/forms/model_forms.py:1065 netbox/dcim/forms/model_forms.py:1092 -#: netbox/dcim/forms/model_forms.py:1120 netbox/dcim/forms/model_forms.py:1141 -#: netbox/dcim/forms/model_forms.py:1181 netbox/dcim/forms/model_forms.py:1199 +#: netbox/dcim/forms/model_forms.py:469 netbox/dcim/forms/model_forms.py:1049 +#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1118 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1167 +#: netbox/dcim/forms/model_forms.py:1207 netbox/dcim/forms/model_forms.py:1225 #: netbox/dcim/forms/object_create.py:120 netbox/dcim/tables/modules.py:52 -#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2848 -#: netbox/templates/dcim/modulebay.html:66 +#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2851 msgid "Module Type" msgstr "Modultyp" -#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:388 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:414 msgid "Chassis" msgstr "Gehäuse" #: netbox/dcim/forms/bulk_edit.py:611 netbox/dcim/models/devices.py:390 -#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:142 +#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:144 msgid "VM role" msgstr "VM-Rolle" @@ -4548,8 +4442,8 @@ msgstr "VM-Rolle" #: netbox/dcim/forms/bulk_import.py:561 netbox/dcim/forms/bulk_import.py:686 #: netbox/dcim/forms/bulk_import.py:690 netbox/dcim/forms/filtersets.py:775 #: netbox/dcim/forms/filtersets.py:806 netbox/dcim/forms/filtersets.py:925 -#: netbox/dcim/forms/model_forms.py:509 netbox/dcim/forms/model_forms.py:546 -#: netbox/dcim/forms/model_forms.py:670 +#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:572 +#: netbox/dcim/forms/model_forms.py:696 #: netbox/virtualization/forms/bulk_import.py:145 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/filtersets.py:207 @@ -4559,20 +4453,21 @@ msgstr "Konfigurationsvorlage" #: netbox/dcim/forms/bulk_edit.py:657 netbox/dcim/forms/bulk_edit.py:1040 #: netbox/dcim/forms/bulk_import.py:592 netbox/dcim/forms/filtersets.py:133 -#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:616 -#: netbox/dcim/forms/model_forms.py:986 netbox/dcim/forms/model_forms.py:1003 +#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:642 +#: netbox/dcim/forms/model_forms.py:1012 netbox/dcim/forms/model_forms.py:1029 #: netbox/extras/filtersets.py:729 +#: netbox/templates/dcim/panels/installed_device.html:13 msgid "Device type" msgstr "Gerätetyp" #: netbox/dcim/forms/bulk_edit.py:668 netbox/dcim/forms/bulk_import.py:573 -#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:624 +#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:650 msgid "Device role" msgstr "Geräterolle" #: netbox/dcim/forms/bulk_edit.py:691 netbox/dcim/forms/bulk_import.py:598 #: netbox/dcim/forms/filtersets.py:789 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/model_forms.py:557 netbox/dcim/forms/model_forms.py:629 +#: netbox/dcim/forms/model_forms.py:583 netbox/dcim/forms/model_forms.py:655 #: netbox/dcim/tables/devices.py:191 netbox/extras/filtersets.py:745 #: netbox/virtualization/forms/bulk_edit.py:131 #: netbox/virtualization/forms/bulk_import.py:135 @@ -4584,7 +4479,7 @@ msgstr "Betriebssystem" #: netbox/dcim/forms/bulk_edit.py:716 netbox/dcim/forms/bulk_import.py:617 #: netbox/dcim/forms/filtersets.py:830 netbox/dcim/forms/filtersets.py:1000 -#: netbox/dcim/forms/model_forms.py:638 netbox/dcim/tables/devices.py:211 +#: netbox/dcim/forms/model_forms.py:664 netbox/dcim/tables/devices.py:211 #: netbox/extras/filtersets.py:778 netbox/extras/forms/filtersets.py:406 #: netbox/ipam/forms/filtersets.py:457 netbox/ipam/forms/filtersets.py:491 #: netbox/virtualization/filtersets.py:148 @@ -4613,7 +4508,8 @@ msgid "Virtualization" msgstr "Virtualisierung" #: netbox/dcim/forms/bulk_edit.py:744 netbox/dcim/forms/bulk_import.py:759 -#: netbox/dcim/forms/model_forms.py:765 netbox/dcim/forms/model_forms.py:1011 +#: netbox/dcim/forms/model_forms.py:791 netbox/dcim/forms/model_forms.py:1037 +#: netbox/templates/dcim/panels/installed_module.html:17 msgid "Module type" msgstr "Modultyp" @@ -4623,25 +4519,15 @@ msgstr "Modultyp" #: netbox/dcim/forms/bulk_edit.py:1146 netbox/dcim/forms/bulk_edit.py:1173 #: netbox/dcim/forms/bulk_edit.py:1200 netbox/dcim/forms/bulk_edit.py:1218 #: netbox/dcim/forms/bulk_edit.py:1236 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/object_create.py:48 netbox/templates/dcim/cable.html:36 -#: netbox/templates/dcim/consoleport.html:32 -#: netbox/templates/dcim/consoleserverport.html:32 -#: netbox/templates/dcim/devicebay.html:28 -#: netbox/templates/dcim/frontport.html:32 +#: netbox/dcim/forms/object_create.py:48 #: netbox/templates/dcim/inc/panels/inventory_items.html:19 -#: netbox/templates/dcim/interface.html:42 -#: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:34 -#: netbox/templates/dcim/poweroutlet.html:32 -#: netbox/templates/dcim/powerport.html:32 -#: netbox/templates/dcim/rearport.html:32 +#: netbox/templates/dcim/panels/component_inventory_items.html:9 #: netbox/templates/extras/customfield.html:26 #: netbox/templates/generic/bulk_import.html:193 msgid "Label" msgstr "Label" #: netbox/dcim/forms/bulk_edit.py:807 netbox/dcim/forms/filtersets.py:1224 -#: netbox/templates/dcim/cable.html:54 msgid "Length" msgstr "Länge" @@ -4651,34 +4537,29 @@ msgid "Length unit" msgstr "Längeneinheit" #: netbox/dcim/forms/bulk_edit.py:830 -#: netbox/templates/dcim/virtualchassis.html:13 msgid "Domain" msgstr "Domäne" #: netbox/dcim/forms/bulk_edit.py:886 netbox/dcim/forms/bulk_import.py:1646 -#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:865 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:891 msgid "Power panel" msgstr "Stromverteiler" #: netbox/dcim/forms/bulk_edit.py:908 netbox/dcim/forms/bulk_import.py:1682 #: netbox/dcim/forms/filtersets.py:1338 -#: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Versorgung" #: netbox/dcim/forms/bulk_edit.py:914 netbox/dcim/forms/bulk_import.py:1687 #: netbox/dcim/forms/filtersets.py:1343 -#: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Phase" #: netbox/dcim/forms/bulk_edit.py:920 netbox/dcim/forms/filtersets.py:1348 -#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Spannung" #: netbox/dcim/forms/bulk_edit.py:924 netbox/dcim/forms/filtersets.py:1352 -#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Stromstärke" @@ -4691,7 +4572,7 @@ msgid "Maximum draw" msgstr "Maximale Auslastung" #: netbox/dcim/forms/bulk_edit.py:1018 -#: netbox/dcim/models/device_component_templates.py:292 +#: netbox/dcim/models/device_component_templates.py:282 #: netbox/dcim/models/device_components.py:440 msgid "Maximum power draw (watts)" msgstr "Maximale Leistungsaufnahme (Watt)" @@ -4701,14 +4582,14 @@ msgid "Allocated draw" msgstr "Zugewiesene Leistungsaufnahme" #: netbox/dcim/forms/bulk_edit.py:1024 -#: netbox/dcim/models/device_component_templates.py:299 +#: netbox/dcim/models/device_component_templates.py:289 #: netbox/dcim/models/device_components.py:447 msgid "Allocated power draw (watts)" msgstr "Zugewiesene Leistungsaufnahme (Watt)" #: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_import.py:892 -#: netbox/dcim/forms/model_forms.py:1080 netbox/dcim/forms/model_forms.py:1445 -#: netbox/dcim/forms/model_forms.py:1774 netbox/dcim/forms/object_import.py:56 +#: netbox/dcim/forms/model_forms.py:1106 netbox/dcim/forms/model_forms.py:1471 +#: netbox/dcim/forms/model_forms.py:1800 netbox/dcim/forms/object_import.py:56 msgid "Power port" msgstr "Stromanschluss" @@ -4717,23 +4598,23 @@ msgid "Feed leg" msgstr "Phasenlage" #: netbox/dcim/forms/bulk_edit.py:1112 netbox/dcim/forms/bulk_edit.py:1433 -#: netbox/dcim/forms/filtersets.py:1719 +#: netbox/dcim/forms/filtersets.py:1719 netbox/dcim/ui/panels.py:478 msgid "Management only" msgstr "Nur Management" #: netbox/dcim/forms/bulk_edit.py:1122 netbox/dcim/forms/bulk_edit.py:1439 #: netbox/dcim/forms/bulk_import.py:985 netbox/dcim/forms/filtersets.py:1643 #: netbox/dcim/forms/filtersets.py:1728 netbox/dcim/forms/object_import.py:91 -#: netbox/dcim/models/device_component_templates.py:462 -#: netbox/dcim/models/device_components.py:839 +#: netbox/dcim/models/device_component_templates.py:452 +#: netbox/dcim/models/device_components.py:839 netbox/dcim/ui/panels.py:480 msgid "PoE mode" msgstr "PoE-Modus" #: netbox/dcim/forms/bulk_edit.py:1128 netbox/dcim/forms/bulk_edit.py:1445 #: netbox/dcim/forms/bulk_import.py:991 netbox/dcim/forms/filtersets.py:1648 #: netbox/dcim/forms/filtersets.py:1733 netbox/dcim/forms/object_import.py:96 -#: netbox/dcim/models/device_component_templates.py:469 -#: netbox/dcim/models/device_components.py:846 +#: netbox/dcim/models/device_component_templates.py:459 +#: netbox/dcim/models/device_components.py:846 netbox/dcim/ui/panels.py:481 msgid "PoE type" msgstr "PoE-Typ" @@ -4742,36 +4623,26 @@ msgstr "PoE-Typ" msgid "Wireless role" msgstr "WLAN Funktion" -#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:786 -#: netbox/dcim/forms/model_forms.py:1390 netbox/dcim/tables/devices.py:330 -#: netbox/templates/dcim/consoleport.html:24 -#: netbox/templates/dcim/consoleserverport.html:24 -#: netbox/templates/dcim/frontport.html:24 -#: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/modulebay.html:26 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/poweroutlet.html:24 -#: netbox/templates/dcim/powerport.html:24 -#: netbox/templates/dcim/rearport.html:24 +#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:812 +#: netbox/dcim/forms/model_forms.py:1416 netbox/dcim/tables/devices.py:330 +#: netbox/templates/dcim/panels/installed_module.html:9 msgid "Module" msgstr "Modul" #: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/tables/devices.py:746 -#: netbox/templates/dcim/interface.html:134 +#: netbox/dcim/ui/panels.py:495 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1472 +#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1498 msgid "Virtual device contexts" msgstr "Virtual Device Contexts" #: netbox/dcim/forms/bulk_edit.py:1424 netbox/dcim/forms/bulk_import.py:819 #: netbox/dcim/forms/bulk_import.py:845 netbox/dcim/forms/filtersets.py:1429 #: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1607 -#: netbox/dcim/tables/devices.py:651 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 -#: netbox/templates/dcim/consoleport.html:40 -#: netbox/templates/dcim/consoleserverport.html:40 +#: netbox/dcim/tables/devices.py:651 netbox/dcim/ui/panels.py:474 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:64 msgid "Speed" msgstr "Geschwindigkeit" @@ -4788,7 +4659,7 @@ msgid "Mode" msgstr "Modus" #: netbox/dcim/forms/bulk_edit.py:1461 netbox/dcim/forms/bulk_import.py:1000 -#: netbox/dcim/forms/model_forms.py:1521 netbox/ipam/forms/bulk_import.py:177 +#: netbox/dcim/forms/model_forms.py:1547 netbox/ipam/forms/bulk_import.py:177 #: netbox/ipam/forms/filtersets.py:582 netbox/ipam/models/vlans.py:93 #: netbox/virtualization/forms/bulk_edit.py:205 #: netbox/virtualization/forms/bulk_import.py:184 @@ -4797,16 +4668,15 @@ msgid "VLAN group" msgstr "VLAN-Gruppe" #: netbox/dcim/forms/bulk_edit.py:1470 netbox/dcim/forms/bulk_import.py:1007 -#: netbox/dcim/forms/model_forms.py:1527 netbox/dcim/tables/devices.py:616 -#: netbox/templates/dcim/interface.html:91 -#: netbox/virtualization/forms/bulk_edit.py:213 +#: netbox/dcim/forms/model_forms.py:1553 netbox/dcim/tables/devices.py:616 +#: netbox/dcim/ui/panels.py:484 netbox/virtualization/forms/bulk_edit.py:213 #: netbox/virtualization/forms/bulk_import.py:191 #: netbox/virtualization/forms/model_forms.py:331 msgid "Untagged VLAN" msgstr "Untagged VLAN" #: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/bulk_import.py:1014 -#: netbox/dcim/forms/model_forms.py:1536 netbox/dcim/tables/devices.py:622 +#: netbox/dcim/forms/model_forms.py:1562 netbox/dcim/tables/devices.py:622 #: netbox/virtualization/forms/bulk_edit.py:221 #: netbox/virtualization/forms/bulk_import.py:198 #: netbox/virtualization/forms/model_forms.py:340 @@ -4822,30 +4692,29 @@ msgid "Remove tagged VLANs" msgstr "Getaggte VLANs entfernen" #: netbox/dcim/forms/bulk_edit.py:1502 netbox/dcim/forms/bulk_import.py:1027 -#: netbox/dcim/forms/model_forms.py:1545 +#: netbox/dcim/forms/model_forms.py:1571 #: netbox/virtualization/forms/bulk_import.py:211 #: netbox/virtualization/forms/model_forms.py:349 msgid "Q-in-Q Service VLAN" msgstr "Q-in-Q-Dienst-VLAN" -#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1508 +#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1534 #: netbox/wireless/forms/filtersets.py:26 msgid "Wireless LAN group" msgstr "WLAN-Gruppe" -#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1513 -#: netbox/dcim/tables/devices.py:660 netbox/netbox/navigation/menu.py:156 -#: netbox/templates/dcim/interface.html:355 +#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1539 +#: netbox/dcim/tables/devices.py:660 netbox/dcim/ui/panels.py:561 +#: netbox/netbox/navigation/menu.py:156 #: netbox/wireless/tables/wirelesslan.py:20 msgid "Wireless LANs" msgstr "WLANs" #: netbox/dcim/forms/bulk_edit.py:1531 netbox/dcim/forms/filtersets.py:1574 -#: netbox/dcim/forms/model_forms.py:1579 netbox/ipam/forms/bulk_edit.py:227 -#: netbox/ipam/forms/bulk_edit.py:313 netbox/ipam/forms/filtersets.py:191 -#: netbox/netbox/navigation/menu.py:112 -#: netbox/templates/dcim/interface.html:146 -#: netbox/templates/ipam/prefix.html:91 +#: netbox/dcim/forms/model_forms.py:1605 netbox/dcim/ui/panels.py:499 +#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:313 +#: netbox/ipam/forms/filtersets.py:191 netbox/netbox/navigation/menu.py:112 +#: netbox/templates/ipam/panels/prefix_addressing.html:4 #: netbox/virtualization/forms/filtersets.py:218 #: netbox/virtualization/forms/model_forms.py:369 #: netbox/virtualization/ui/panels.py:68 @@ -4853,26 +4722,25 @@ msgid "Addressing" msgstr "Adressierung" #: netbox/dcim/forms/bulk_edit.py:1532 netbox/dcim/forms/filtersets.py:821 -#: netbox/dcim/forms/model_forms.py:1580 +#: netbox/dcim/forms/model_forms.py:1606 #: netbox/virtualization/forms/model_forms.py:370 msgid "Operation" msgstr "Dienst / Port" #: netbox/dcim/forms/bulk_edit.py:1533 netbox/dcim/forms/filtersets.py:1575 -#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1124 -#: netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1150 +#: netbox/dcim/forms/model_forms.py:1608 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1581 -#: netbox/templates/dcim/interface.html:110 -#: netbox/virtualization/forms/bulk_edit.py:237 +#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1607 +#: netbox/dcim/ui/panels.py:491 netbox/virtualization/forms/bulk_edit.py:237 #: netbox/virtualization/forms/model_forms.py:371 msgid "Related Interfaces" msgstr "Verwandte Schnittstellen" #: netbox/dcim/forms/bulk_edit.py:1536 netbox/dcim/forms/filtersets.py:1576 -#: netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1611 #: netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/filtersets.py:219 #: netbox/virtualization/forms/model_forms.py:374 @@ -4983,7 +4851,7 @@ msgstr "Übergeordneter Standort" msgid "Rack's location (if any)" msgstr "Lokation des Racks (falls vorhanden)" -#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:331 +#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:357 #: netbox/dcim/tables/racks.py:209 #: netbox/templates/dcim/rackreservation.html:7 msgid "Units" @@ -5067,7 +4935,7 @@ msgid "Assigned platform" msgstr "Zugewiesenes Betriebssystem" #: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/bulk_import.py:614 -#: netbox/dcim/forms/model_forms.py:651 +#: netbox/dcim/forms/model_forms.py:677 msgid "Virtual chassis" msgstr "Virtuelles Gehäuse" @@ -5083,7 +4951,7 @@ msgstr "Zugewiesene Lokation (falls vorhanden)" msgid "Assigned rack (if any)" msgstr "Zugewiesenes Rack (falls vorhanden)" -#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:634 msgid "Face" msgstr "Ausrichtung" @@ -5109,7 +4977,7 @@ msgstr "" msgid "The device in which this module is installed" msgstr "Das Gerät, in dem dieses Modul installiert ist" -#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:755 +#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:781 msgid "Module bay" msgstr "Moduleinsatz" @@ -5121,7 +4989,7 @@ msgstr "Der Modulschacht, in dem dieses Modul installiert ist" msgid "The type of module" msgstr "Der Typ des Moduls" -#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:773 +#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:799 msgid "Replicate components" msgstr "Komponenten replizieren" @@ -5133,11 +5001,11 @@ msgstr "" "Automatisches Ausfüllen von Komponenten, die diesem Modultyp zugeordnet sind" " (standardmäßig aktiviert)" -#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:779 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:805 msgid "Adopt components" msgstr "Komponenten übernehmen" -#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:782 +#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:808 msgid "Adopt already existing components" msgstr "Übernehmen Sie bereits bestehende Komponenten" @@ -5162,13 +5030,13 @@ msgstr "Lokaler Stromanschluss, der diese Steckdose speist" msgid "Electrical phase (for three-phase circuits)" msgstr "Elektrische Phase (für dreiphasige Stromkreise)" -#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1483 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1509 #: netbox/virtualization/forms/bulk_import.py:168 #: netbox/virtualization/forms/model_forms.py:310 msgid "Parent interface" msgstr "Übergeordnete Schnittstelle" -#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1491 +#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1517 #: netbox/virtualization/forms/bulk_import.py:175 #: netbox/virtualization/forms/model_forms.py:318 msgid "Bridged interface" @@ -5401,6 +5269,7 @@ msgid "Side B name" msgstr "Name der Seite B" #: netbox/dcim/forms/bulk_import.py:1456 +#: netbox/templates/dcim/panels/connection.html:60 #: netbox/wireless/forms/bulk_import.py:133 msgid "Connection status" msgstr "Status der Verbindung" @@ -5433,11 +5302,9 @@ msgstr "" "{color} stimmte mit keinem verwendeten Farbnamen überein und war länger als " "sechs Zeichen: ungültiges Hexadezimalzeichen." -#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:900 +#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:926 #: netbox/dcim/tables/devices.py:1124 #: netbox/templates/dcim/panels/virtual_chassis_members.html:10 -#: netbox/templates/dcim/virtualchassis.html:17 -#: netbox/templates/dcim/virtualchassis.html:57 msgid "Master" msgstr "Master" @@ -5465,9 +5332,8 @@ msgstr "Versorgungsart (AC/DC)" msgid "Single or three-phase" msgstr "Ein- oder Dreiphasig" -#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1875 -#: netbox/dcim/ui/panels.py:108 -#: netbox/templates/dcim/virtualdevicecontext.html:30 +#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1901 +#: netbox/dcim/ui/panels.py:110 netbox/dcim/ui/panels.py:354 #: netbox/virtualization/ui/panels.py:28 msgid "Primary IPv4" msgstr "Primäre IPv4" @@ -5476,9 +5342,8 @@ msgstr "Primäre IPv4" msgid "IPv4 address with mask, e.g. 1.2.3.4/24" msgstr "IPv4-Adresse mit Maske, z. B. 1.2.3.4/24" -#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1884 -#: netbox/dcim/ui/panels.py:113 -#: netbox/templates/dcim/virtualdevicecontext.html:41 +#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1910 +#: netbox/dcim/ui/panels.py:115 netbox/dcim/ui/panels.py:359 #: netbox/virtualization/ui/panels.py:33 msgid "Primary IPv6" msgstr "Primäre IPv6" @@ -5488,8 +5353,7 @@ msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64" msgstr "IPv6-Adresse mit Präfixlänge, z. B. 2001:db8: :1/64" #: netbox/dcim/forms/common.py:19 netbox/dcim/models/device_components.py:615 -#: netbox/templates/dcim/interface.html:57 -#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/dcim/ui/panels.py:476 netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/ui/panels.py:61 msgid "MTU" msgstr "MTU" @@ -5532,18 +5396,15 @@ msgstr "" msgid "A {model} named {name} already exists" msgstr "Ein {model} genannt {name} existiert bereits" -#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:853 +#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:879 #: netbox/dcim/tables/power.py:63 #: netbox/templates/dcim/inc/cable_termination.html:40 -#: netbox/templates/dcim/powerfeed.html:24 -#: netbox/templates/dcim/powerpanel.html:19 #: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "Stromverteiler" -#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:880 -#: netbox/templates/dcim/powerfeed.html:21 -#: netbox/templates/dcim/powerport.html:80 +#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:906 +#: netbox/dcim/views.py:3106 msgid "Power Feed" msgstr "Stromzufuhr" @@ -5571,12 +5432,12 @@ msgstr "Anzahl der Racks" msgid "Function" msgstr "Funktion" -#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:341 -#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1164 +#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:367 +#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1166 msgid "Reservation" msgstr "Reservierung" -#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:390 +#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:416 #: netbox/netbox/views/generic/feature_views.py:97 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" @@ -5599,7 +5460,7 @@ msgstr "Rolle des Untergeräts" msgid "Module count" msgstr "Anzahl der Module" -#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:548 msgid "Device Role" msgstr "Rolle des Geräts" @@ -5637,16 +5498,9 @@ msgstr "Belegt" #: netbox/dcim/forms/filtersets.py:1420 netbox/dcim/forms/filtersets.py:1460 #: netbox/dcim/forms/filtersets.py:1500 netbox/dcim/forms/filtersets.py:1535 #: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/tables/devices.py:381 -#: netbox/dcim/tables/devices.py:682 netbox/ipam/tables/vlans.py:174 +#: netbox/dcim/tables/devices.py:682 netbox/dcim/ui/panels.py:377 +#: netbox/dcim/ui/panels.py:516 netbox/ipam/tables/vlans.py:174 #: netbox/templates/circuits/inc/circuit_termination_fields.html:16 -#: netbox/templates/dcim/consoleport.html:55 -#: netbox/templates/dcim/consoleserverport.html:55 -#: netbox/templates/dcim/frontport.html:66 -#: netbox/templates/dcim/interface.html:215 -#: netbox/templates/dcim/powerfeed.html:110 -#: netbox/templates/dcim/poweroutlet.html:73 -#: netbox/templates/dcim/powerport.html:59 -#: netbox/templates/dcim/rearport.html:66 msgid "Connection" msgstr "Verbindung" @@ -5662,13 +5516,12 @@ msgstr "Art" msgid "Mgmt only" msgstr "Nur Verwaltung" -#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1567 -#: netbox/dcim/models/device_components.py:792 -#: netbox/templates/dcim/interface.html:160 +#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1593 +#: netbox/dcim/models/device_components.py:792 netbox/dcim/ui/panels.py:506 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1653 +#: netbox/dcim/forms/filtersets.py:1653 netbox/dcim/ui/panels.py:482 #: netbox/virtualization/forms/filtersets.py:260 msgid "802.1Q mode" msgstr "802.1Q-Modus" @@ -5685,18 +5538,17 @@ msgstr "Kanalfrequenz (MHz)" msgid "Channel width (MHz)" msgstr "Kanalbreite (MHz)" -#: netbox/dcim/forms/filtersets.py:1680 -#: netbox/templates/dcim/interface.html:96 +#: netbox/dcim/forms/filtersets.py:1680 netbox/dcim/ui/panels.py:485 msgid "Transmit power (dBm)" msgstr "Sendeleistung (dBm)" #: netbox/dcim/forms/filtersets.py:1751 netbox/dcim/forms/filtersets.py:1795 -#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable.html:12 -#: netbox/templates/dcim/cable_trace.html:46 -#: netbox/templates/dcim/frontport.html:74 +#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/htmx/cable_edit.html:53 #: netbox/templates/dcim/inc/connection_endpoints.html:4 -#: netbox/templates/dcim/rearport.html:74 +#: netbox/templates/dcim/panels/connection.html:14 +#: netbox/templates/dcim/panels/connection.html:51 +#: netbox/templates/dcim/panels/interface_connection.html:13 #: netbox/templates/dcim/trace/cable.html:7 msgid "Cable" msgstr "Kabel" @@ -5736,9 +5588,7 @@ msgstr "Art des Geltungsbereichs" #: netbox/ipam/forms/bulk_edit.py:382 netbox/ipam/forms/filtersets.py:195 #: netbox/ipam/forms/model_forms.py:225 netbox/ipam/forms/model_forms.py:603 #: netbox/ipam/forms/model_forms.py:613 netbox/ipam/tables/ip.py:193 -#: netbox/ipam/tables/vlans.py:40 netbox/templates/ipam/prefix.html:48 -#: netbox/templates/ipam/vlangroup.html:38 -#: netbox/virtualization/forms/bulk_edit.py:74 +#: netbox/ipam/tables/vlans.py:40 netbox/virtualization/forms/bulk_edit.py:74 #: netbox/virtualization/forms/filtersets.py:53 #: netbox/virtualization/forms/model_forms.py:73 #: netbox/virtualization/tables/clusters.py:81 @@ -5761,28 +5611,28 @@ msgstr "Art des Umfangs (App und Modell)" #: netbox/dcim/forms/mixins.py:126 msgid "Scope name" -msgstr "" +msgstr "Name des Scope" #: netbox/dcim/forms/mixins.py:127 msgid "Name of the assigned scope object (if not using ID)" -msgstr "" +msgstr "Name des zugewiesenen Scope-Objekts (wenn ID nicht verwendet wird)" #: netbox/dcim/forms/mixins.py:139 msgid "scope_name and scope_id are mutually exclusive." -msgstr "" +msgstr "scope_name und scope_id schließen sich gegenseitig aus." #: netbox/dcim/forms/mixins.py:143 msgid "scope_type must be specified when using scope_name" -msgstr "" +msgstr "scope_type muss angegeben werden, wenn scope_name verwendet wird" #: netbox/dcim/forms/mixins.py:145 msgid "scope_type must be specified when using scope_id" -msgstr "" +msgstr "scope_type muss angegeben werden, wenn scope_id verwendet wird" #: netbox/dcim/forms/mixins.py:154 #, python-brace-format msgid "{scope_type} \"{name}\" not found." -msgstr "" +msgstr "{scope_type} “{name}„nicht gefunden." #: netbox/dcim/forms/mixins.py:162 #, python-brace-format @@ -5790,6 +5640,8 @@ msgid "" "Multiple {scope_type} objects match \"{name}\". Use scope_id to specify the " "intended object." msgstr "" +"Mehrfach {scope_type} Objekte stimmen überein“{name}“. Verwenden Sie " +"scope_id, um das beabsichtigte Objekt anzugeben." #: netbox/dcim/forms/mixins.py:180 netbox/dcim/tables/devices.py:260 msgid "Rear ports" @@ -5805,31 +5657,31 @@ msgstr "" " ausgewählten Anzahl der Rückanschlüssepositionen übereinstimmen " "({rearport_count})." -#: netbox/dcim/forms/model_forms.py:158 +#: netbox/dcim/forms/model_forms.py:169 msgid "Contact Info" msgstr "Kontaktinformationen" -#: netbox/dcim/forms/model_forms.py:211 +#: netbox/dcim/forms/model_forms.py:237 msgid "Rack Role" msgstr "Rackrolle" -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:380 -#: netbox/dcim/forms/model_forms.py:551 +#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:406 +#: netbox/dcim/forms/model_forms.py:577 #: netbox/utilities/forms/fields/fields.py:58 msgid "Slug" msgstr "URL-Slug" -#: netbox/dcim/forms/model_forms.py:276 +#: netbox/dcim/forms/model_forms.py:302 msgid "Select a pre-defined rack type, or set physical characteristics below." msgstr "" "Wählen Sie einen vordefinierten Racktyp oder legen Sie unten die physischen " "Eigenschaften fest." -#: netbox/dcim/forms/model_forms.py:284 +#: netbox/dcim/forms/model_forms.py:310 msgid "Inventory Control" msgstr "Inventarsteuerung" -#: netbox/dcim/forms/model_forms.py:333 +#: netbox/dcim/forms/model_forms.py:359 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -5837,40 +5689,40 @@ msgstr "" "Kommagetrennte Liste numerischer Einheiten-IDs. Ein Bereich kann mit einem " "Bindestrich angegeben werden." -#: netbox/dcim/forms/model_forms.py:414 netbox/extras/forms/model_forms.py:603 +#: netbox/dcim/forms/model_forms.py:440 netbox/extras/forms/model_forms.py:603 msgid "Enter a valid JSON schema to define supported attributes." msgstr "" "Geben Sie ein gültiges JSON-Schema ein, um unterstützte Attribute zu " "definieren." -#: netbox/dcim/forms/model_forms.py:445 +#: netbox/dcim/forms/model_forms.py:471 msgid "Profile & Attributes" msgstr "Profil und Eigenschaften" -#: netbox/dcim/forms/model_forms.py:597 netbox/dcim/models/devices.py:579 +#: netbox/dcim/forms/model_forms.py:623 netbox/dcim/models/devices.py:579 msgid "The lowest-numbered unit occupied by the device" msgstr "Die HE mit der niedrigsten Nummer, die vom Gerät belegt ist" -#: netbox/dcim/forms/model_forms.py:662 +#: netbox/dcim/forms/model_forms.py:688 msgid "The position in the virtual chassis this device is identified by" msgstr "" "Die Position im virtuellen Gehäuse, durch die dieses Gerät identifiziert " "wird" -#: netbox/dcim/forms/model_forms.py:667 +#: netbox/dcim/forms/model_forms.py:693 msgid "The priority of the device in the virtual chassis" msgstr "Die Priorität des Geräts im virtuellen Gehäuse" -#: netbox/dcim/forms/model_forms.py:776 +#: netbox/dcim/forms/model_forms.py:802 msgid "Automatically populate components associated with this module type" msgstr "" "Füllen Sie automatisch Komponenten aus, die diesem Modultyp zugeordnet sind" -#: netbox/dcim/forms/model_forms.py:882 +#: netbox/dcim/forms/model_forms.py:908 msgid "Characteristics" msgstr "Charakteristiken" -#: netbox/dcim/forms/model_forms.py:1038 +#: netbox/dcim/forms/model_forms.py:1064 #, python-brace-format msgid "" "Alphanumeric ranges are supported for bulk creation. Mixed cases and types " @@ -5885,108 +5737,96 @@ msgstr "" "{module}, falls vorhanden, wird beim Erstellen eines neuen " "Moduls automatisch durch den Positionswert ersetzt." -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "Konsolenanschlussvorlage" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "Port-Vorlage für Konsolenserver" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "Frontanschluss-Vorlage" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "Schnittstellen-Vorlage" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "Vorlage für Steckdosen" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "Vorlage für Stromverteiler" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "Vorlage für den hinteren Anschluss" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "Konsolenanschluss" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "Konsolenserveranschluss" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "Frontanschluss" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "Rückanschluss" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "Stromanschluss" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "Stromabgang" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "Komponentenzuweisung" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "" "Ein InventoryItem kann nur einer einzelnen Komponente zugewiesen werden." -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "LAG-Schnittstelle" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "Filtern Sie VLANs, die für die Zuweisung nach Gruppen verfügbar sind." -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "untergeordnetes Gerät" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -5994,43 +5834,41 @@ msgstr "" "Untergeordnete Geräte müssen zuerst erstellt und dem Standort und dem Rack " "des übergeordneten Geräts zugewiesen werden." -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "Konsolenanschluss" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "Konsolenserveranschluss" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "Frontanschluss" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "Stromabgang" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "Rückseitenanschluss" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "Inventar-Artikel" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "Rolle des Inventarartikels" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "VM-Schnittstelle" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -6044,7 +5882,7 @@ msgstr "VM-Schnittstelle" msgid "Virtual Machine" msgstr "Virtuelle Maschine" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "Eine MAC-Adresse kann nur einem einzelnen Objekt zugewiesen werden." @@ -6068,9 +5906,9 @@ msgstr "" "{pattern_count} werden erwartet." #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "Mitglieder" @@ -6277,41 +6115,41 @@ msgstr "" "Eine Komponentenvorlage muss entweder einem Gerätetyp oder einem Modultyp " "zugeordnet sein." -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "Vorlage für Konsolenanschluss" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "Vorlagen für Konsolenanschlüsse" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "Portvorlage für Konsolenserver" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "Portvorlagen für Konsolenserver" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "maximale Leistungsaufnahme" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "zugewiesene Leistungsaufnahme" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "Vorlage für Stromanschluss" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "Vorlagen für Stromanschlüsse" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." @@ -6319,92 +6157,92 @@ msgstr "" "Die zugewiesene Leistungsaufnahme darf die maximale Leistung " "({maximum_draw}W) nicht überschreiten." -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "Phasenlage" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "Phase (bei dreiphasiger Stromzufuhr)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "Vorlage für Stromabgang" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "Vorlagen für Steckdosen" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Übergeordneter Stromanschluss ({power_port}) muss zum gleichen Gerätetyp " "gehören" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Übergeordneter Stromanschluss ({power_port}) muss zum gleichen Modultyp " "gehören" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "Nur Verwaltung" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "Bridge-Schnittstelle" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "WLAN Rolle" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "Schnittstellenvorlage" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "Schnittstellenvorlagen" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "Bridge-Schnittstelle ({bridge}) muss zum gleichen Gerätetyp gehören" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Bridge-Schnittstelle ({bridge}) muss zum gleichen Modultyp gehören" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "Rückanschluss ({rear_port}) muss zum gleichen Gerätetyp gehören" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "Positionen" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "Frontanschluss-Vorlage" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "Frontanschluss-Vorlagen" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " @@ -6413,15 +6251,15 @@ msgstr "" "Die Anzahl der Positionen darf nicht kleiner sein als die Anzahl der " "zugewiesenen Ports für den Rückanschluss ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "Vorlage für den Rückanschluss" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "Vorlagen für Rückanschlüsse" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " @@ -6430,34 +6268,34 @@ msgstr "" "Die Anzahl der Positionen darf nicht kleiner sein als die Anzahl " "zugewiesenen Ports der Frontanschlüsse ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "Position" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "" "Bezeichner, auf den beim Umbenennen installierter Komponenten verwiesen wird" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "Vorlage für Moduleinsatz" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "Vorlagen für Moduleinsätze" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "Vorlage für Geräteeinsatz" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "Vorlagen für Geräteeinsätze" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -6466,21 +6304,21 @@ msgstr "" "Untergeräterolle des Gerätetyps ({device_type}) muss auf „Übergeordnet“ " "gesetzt sein, um Geräteschächte zuzulassen." -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "Teile-ID" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "Vom Hersteller zugewiesene Teile-ID" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "Vorlage für Inventarartikel" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "Vorlagen für Inventarartikel" @@ -6616,10 +6454,10 @@ msgid "tagged VLANs" msgstr "tagged VLANs" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "Q-in-Q-SVLAN" @@ -7817,11 +7655,11 @@ msgstr "Komponenten hinzufügen" msgid "Disconnect Selected" msgstr "Ausgewählte Verbindung trennen" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "Abschlusspunkt A" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "Abschlusspunkt B" @@ -7866,6 +7704,8 @@ msgstr "Name der Farbe" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "Erreichbar" @@ -7902,7 +7742,7 @@ msgstr "Höhe in HE" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "IP-Adresse" @@ -7951,16 +7791,14 @@ msgid "Power outlets" msgstr "Steckdosen" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7993,18 +7831,17 @@ msgid "Device Site" msgstr "Geräte Standort" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Moduleinsatz" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "Inventarartikel" @@ -8028,13 +7865,13 @@ msgstr "Maximaler Stromverbrauch (W)" msgid "Allocated draw (W)" msgstr "Zugewiesener Stromverbrauch (W)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "IP-Adressen" @@ -8042,18 +7879,18 @@ msgstr "IP-Adressen" msgid "Primary MAC" msgstr "Primärere MAC" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "MAC-Adressen" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP-Gruppen" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -8062,7 +7899,6 @@ msgid "Tunnel" msgstr "Tunnel" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Nur zur Verwaltung" @@ -8070,7 +7906,7 @@ msgstr "Nur zur Verwaltung" msgid "VDCs" msgstr "VDCs" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "Virtuelle Verbindung" @@ -8079,7 +7915,7 @@ msgstr "Virtuelle Verbindung" msgid "Mappings" msgstr "Zuordnungen" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "Installiertes Gerät" @@ -8103,7 +7939,7 @@ msgstr "Installierte Seriennummer" msgid "Installed Asset Tag" msgstr "Installiertes Asset-Tag" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "Installiertes Modul" @@ -8120,7 +7956,6 @@ msgid "Module Status" msgstr "Status des Moduls" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "Komponente" @@ -8138,7 +7973,7 @@ msgstr "Racktypen" msgid "Device Types" msgstr "Gerätetypen" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "Modultypen" @@ -8161,8 +7996,8 @@ msgstr "Volle Tiefe" msgid "Device Count" msgstr "Anzahl Geräte" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -8172,8 +8007,8 @@ msgstr "Anzahl Geräte" msgid "Console Ports" msgstr "Konsolenanschlüsse" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -8183,8 +8018,8 @@ msgstr "Konsolenanschlüsse" msgid "Console Server Ports" msgstr "Konsolenserveranschlüsse" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -8194,8 +8029,8 @@ msgstr "Konsolenserveranschlüsse" msgid "Power Ports" msgstr "Stromanschlüsse" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -8205,8 +8040,8 @@ msgstr "Stromanschlüsse" msgid "Power Outlets" msgstr "Steckdosen" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -8215,8 +8050,8 @@ msgstr "Steckdosen" msgid "Front Ports" msgstr "Frontanschlüsse" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -8226,16 +8061,16 @@ msgstr "Frontanschlüsse" msgid "Rear Ports" msgstr "Rückanschlüsse" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Geräteeinsätze" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8250,11 +8085,10 @@ msgid "Module Count" msgstr "Anzahl der Module" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Stromzufuhren" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "Max. Auslastung" @@ -8269,7 +8103,7 @@ msgid "Racks" msgstr "Racks" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Höhe" @@ -8317,85 +8151,123 @@ msgstr "VLAN-Gruppen" msgid "Test case must set peer_termination_type" msgstr "Der Testfall muss peer_termination_type setzen" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} Millimeter" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "Seriennummer" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "Maximales Gewicht" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "Management" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "Out-of-band-IP" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "Eltern/Kind" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "Name des Modells" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "Übergeordnetes Objekt" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "Teile-ID" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "Verbundenes Gerät" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "Auslastung (zugewiesen)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "Elektrische Eigenschaften" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{}V" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{}A" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "Primär für diese Schnittstelle" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "Mitglieder des virtuellen Gehäuses" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "Energienutzung" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "VLAN-Übersetzung" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "Verbindung von {count} {type} unterbrochen" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "Untergeordnete Regionen" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "Untergeordnete Gruppen" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "Nicht in einem Rack befindliche Geräte" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "Untergeordnete Lokationen" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "Rackreservierungen" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "Rollen für untergeordnete Geräte" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "Untergeordnete Plattformen" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "Anwendungsdienste" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8403,43 +8275,71 @@ msgstr "Anwendungsdienste" msgid "Config Context" msgstr "Konfigurationsvorlage" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "Konfiguration rendern" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "Virtuelle Maschinen" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "Virtual Device Context" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "VLANs" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "LAG-Mitglieder" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "VLAN-Übersetzung" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "Überbrückte Schnittstellen" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "Untergeordnete Schnittstellen " + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Gerät {device} im Schacht {device_bay} installiert." -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Gerät {device} im Schacht {device_bay} entfernt." -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "Untergeordnet" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "Mitglied hinzugefügt {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" "Ein Hauptgerät (Master Device) {device} kann von einem virtuellen Gehäuse " "nicht entfernt werden." -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "{device} vom virtuellen Gehäuse {chassis} entfernt." @@ -8536,10 +8436,9 @@ msgstr "Ja" msgid "No" msgstr "Nein" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "Link" @@ -8998,15 +8897,6 @@ msgstr "Ein oder mehrere zugewiesene Objekttypen" msgid "Field data type (e.g. text, integer, etc.)" msgstr "Felddatentyp (z. B. Text, Integer usw.)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "Typ des Objekts" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "Objekttyp (für Objekt- oder Mehrfachobjektfelder)" @@ -9117,7 +9007,7 @@ msgstr "Die Klassifizierung des Eintrags" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -9145,15 +9035,14 @@ msgstr "" #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "Gruppen" @@ -9180,13 +9069,6 @@ msgstr "Feld-Typ" msgid "Choices" msgstr "Auswahlmöglichkeiten" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "Daten" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10506,17 +10388,6 @@ msgstr "Dateiendung" msgid "As Attachment" msgstr "Als Anlage" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "Datendatei" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10532,9 +10403,8 @@ msgstr "Bild" msgid "Filename" msgstr "Dateiname" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "Größe" @@ -10589,6 +10459,7 @@ msgstr "" "aus Ihrem Dashboard." #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10739,7 +10610,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "Klartext" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "Dienst / Port" @@ -10802,7 +10673,6 @@ msgstr "L2VPN exportieren (Identifier)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "Prefix" @@ -10852,7 +10722,6 @@ msgstr "VLAN-Nummer (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "Adresse" @@ -10909,7 +10778,7 @@ msgstr "FHRP-Gruppe (ID)" msgid "IP address (ID)" msgstr "IP-Adresse (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "IP-Adresse" @@ -10976,8 +10845,8 @@ msgstr "Ist privat" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "RIR" @@ -10988,15 +10857,13 @@ msgstr "hinzugefügt am" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN-Gruppe" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -11011,7 +10878,7 @@ msgid "Prefix length" msgstr "Länge des Prefixes" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "Ist ein Pool" @@ -11030,23 +10897,21 @@ msgstr "VLAN-Zuweisung" msgid "Treat as populated" msgstr "Als besetzt behandeln" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "DNS-Name" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protokoll" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "Gruppen-ID" @@ -11067,9 +10932,8 @@ msgid "Authentication key" msgstr "Authentifizierungsschlüssel" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -11098,23 +10962,22 @@ msgstr "Standort und Gruppe" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "Richtlinie" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "Ports" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "Routenziele importieren" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "Routenziele exportieren" @@ -11144,7 +11007,6 @@ msgstr "Bereichs-ID" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "FHRP-Gruppe" @@ -11259,7 +11121,7 @@ msgid "Exported by VRF" msgstr "Exportiert von VRF" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "Privat" @@ -11268,7 +11130,7 @@ msgstr "Privat" msgid "Address family" msgstr "Adressfamilie" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "Bereich" @@ -11296,18 +11158,10 @@ msgstr "Gerät/VM" msgid "Parent Prefix" msgstr "Übergeordnetes Prefix" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "DNS-Name" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLANs" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "Enthält VLAN-ID" @@ -11325,26 +11179,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Q-in-Q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "VLAN-ID" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "Ziel der Route" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "Aggregieren" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "ASN-Bereich" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "IP-Bereich" @@ -11399,8 +11251,7 @@ msgstr "Virtuelle IP-Adresse" msgid "Assignment already exists" msgstr "Zuweisung ist bereits vorhanden" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "VLAN-IDs" @@ -11419,7 +11270,6 @@ msgstr "" "VLAN-Gruppen zu verwenden." #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "VLAN-Übersetzungsregel" @@ -11432,7 +11282,6 @@ msgstr "" "mit einem Bindestrich angegeben werden." #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "Vorlage für den Anwendungsdienst" @@ -11611,7 +11460,7 @@ msgstr "" "Alle IP-Adressen (inklusive Netzwerk- und Broadcast-Adresse) innerhalb " "dieses Prefixes werden als nutzbar betrachtet" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "als verwendet markieren" @@ -11623,12 +11472,12 @@ msgstr "Prefixe" msgid "Cannot create prefix with /0 mask." msgstr "Prefix mit der Maske /0 kann nicht erstellt werden." -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "globale Tabelle" @@ -11637,116 +11486,116 @@ msgstr "globale Tabelle" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Doppeltes Prefix gefunden in {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "Startadresse" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "IPv4- oder IPv6-Adresse (mit Maske)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "Endadresse" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "Betriebsstatus dieses Bereichs" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "Die Hauptfunktion dieses Bereichs" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "als gefüllt markieren" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "" "Verhindern Sie die Erstellung von IP-Adressen innerhalb dieses Bereichs" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "Der Report Speicherplatz als voll ausgelastet" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "IP-Bereich" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "IP-Bereiche" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "Die Versionen der Anfangs- und Endadresse müssen übereinstimmen" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "Die Masken für Start- und Endadressen müssen übereinstimmen" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" "Die Endadresse muss größer als die Startadresse sein ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Definierte Adressen überschneiden sich mit dem Bereich {overlapping_range} " "im VRF {vrf}" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "Der definierte Bereich überschreitet die maximal unterstützte Größe " "({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "Adresse" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "Der Betriebsstatus dieser IP" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "Die funktionale Rolle dieser IP" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (innen)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "Die IP, für die diese Adresse die „externe“ IP ist" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Hostname oder FQDN (Groß- und Kleinschreibung nicht beachten)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "IP-Adressen" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "Die IP-Adresse mit der Maske /0 kann nicht erstellt werden." -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "" "{ip} ist eine Netzwerk-ID, die keiner Schnittstelle zugewiesen werden darf." -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." @@ -11754,18 +11603,18 @@ msgstr "" "{ip} ist eine Broadcast-Adresse, die keiner Schnittstelle zugewiesen werden " "darf." -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Doppelte IP-Adresse gefunden in {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "" "IP-Adresse kann nicht erstellt werden {ip} innerhalb der Range{range}." -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -11773,7 +11622,7 @@ msgstr "" "Die IP-Adresse kann nicht neu zugewiesen werden, solange sie als primäre IP " "für das übergeordnete Objekt festgelegt ist" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" @@ -11781,7 +11630,7 @@ msgstr "" "Die IP-Adresse kann nicht neu zugewiesen werden, solange sie als OOB-IP für " "das übergeordnete Objekt festgelegt ist" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Nur IPv6-Adressen kann der SLAAC-Status zugewiesen werden" @@ -11979,17 +11828,17 @@ msgid "Added" msgstr "Hinzugefügt" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "Prefixe" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "Auslastung" @@ -12016,7 +11865,7 @@ msgid "Pool" msgstr "Pool" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "Als ausgenutzt markiert" @@ -12024,7 +11873,7 @@ msgstr "Als ausgenutzt markiert" msgid "Start address" msgstr "Startadresse" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "Als gefüllt markiert" @@ -12054,17 +11903,14 @@ msgid "VID" msgstr "VID" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "Regeln" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "Lokales VID" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "Entfernte-VID" @@ -12084,16 +11930,71 @@ msgstr "Ziele importieren" msgid "Export Targets" msgstr "Ziele exportieren" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "Gruppe erstellen" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Gruppe zuweisen" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "Routenunterscheidungsmerkmal" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "Einzigartiger IP-Raum" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "AS-Nummer" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Familie" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "hinzugefügt am" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "Startadresse" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "Endadresse" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (außen)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "Primäre IP" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "OOB IP" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "Art der Authentifizierung" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "Authentifizierungsschlüssel" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Q-in-Q-Rolle" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "Kunden-VLANs" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "Ein VLAN hinzufügen" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -12131,26 +12032,79 @@ msgstr "" "In DNS-Namen sind nur alphanumerische Zeichen, Sternchen, Bindestriche, " "Punkte und Unterstriche zulässig" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "Geräteschnittstellen" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "VM-Schnittstellen" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "VRFs importieren" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "VRFs exportieren" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "L2VPNs importieren" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "L2VPNs exportieren" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "Doppelte Präfixe" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "Haupt Präfixe" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "untergeordnete Prefixe" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "untergeordnete Bereiche" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "Doppelte IPs" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "Anwendungsdienste" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "Verwandte IPs" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "VLAN-Übersetzungsregeln" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "Regel hinzufügen" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "Virtuelle IP-Adressen" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "IP-Adresse hinzufügen" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "Präfix hinzufügen" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "Dieses Feld darf nicht leer sein." @@ -12660,7 +12614,6 @@ msgid "Contact Groups" msgstr "Kontaktgruppen" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Kontaktrollen" @@ -12680,11 +12633,6 @@ msgstr "Rackübersichten" msgid "Modules" msgstr "Module" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "Virtual Device Context" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "Modultyp-Profile" @@ -12698,12 +12646,11 @@ msgid "Device Components" msgstr "Gerätekomponenten" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Inventarartikelrollen" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "Verbindungen" @@ -12744,7 +12691,6 @@ msgid "VLAN Translation Policies" msgstr "VLAN-Übersetzungsrichtlinien" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "VLAN-Übersetzungsregeln" @@ -12823,7 +12769,6 @@ msgid "Circuit Terminations" msgstr "Transportnetzabschlusspunkt" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "Virtuelle Verbindungen" @@ -12839,18 +12784,11 @@ msgstr "Virtuelle Verbindungsabschlüsse" msgid "Circuit Groups" msgstr "Transportnetzgruppe" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "Gruppenzuweisung" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "Provider" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Providerkonten" @@ -12946,7 +12884,7 @@ msgid "Journal Entries" msgstr "Journaleinträge" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Änderungsprotokoll" @@ -12999,6 +12937,7 @@ msgstr "Hintergrundaufgaben" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -13017,8 +12956,9 @@ msgstr "Klonen" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -13030,8 +12970,9 @@ msgstr "Bearbeiten" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -13311,7 +13252,7 @@ msgstr "Dummy-Plugin" msgid "Copy" msgstr "Kopieren" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -13319,11 +13260,19 @@ msgstr "" "Ungültige Dekodierungsoption: {decoding}! Muss einer von diesen Optionen " "sein {image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" +"Ungültiger max_items-Wert: {max_items}! Muss eine positive Ganzzahl oder " +"None sein." + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "GPS-Koordinaten" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "Verwandte Objekte" @@ -13601,8 +13550,7 @@ msgid "Account Details" msgstr "Kontodetails" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "E-Mail" @@ -13624,16 +13572,15 @@ msgid "Assigned Groups" msgstr "Zugewiesene Gruppen" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13708,55 +13655,21 @@ msgstr "Quellcode" msgid "Community" msgstr "Community" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "Datum der Installation" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "Kündigungsdatum" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "Transportnetzabschlüsse austauschen" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "Tauschen Sie diese Abschlüsse gegen Tranportnetz aus: %(circuit)s?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "A Seite" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Z-Seite" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "Zugewiesenes Transportnetz" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "Zugewiesene Transportnetzgruppe" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "Transportnetz hinzufügen" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "Transportnetz Typ" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "Endpunkt" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "Als verbunden markiert" @@ -13766,13 +13679,14 @@ msgstr "zu" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "Trace" @@ -13786,37 +13700,30 @@ msgstr "Kabel entfernen" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "Trennen" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "Verbinden" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "Downstream" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "Upstream" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "Cross-Connect" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "Patchpanel/Anschluss" @@ -13824,39 +13731,10 @@ msgstr "Patchpanel/Anschluss" msgid "Add circuit" msgstr "Transportnetz hinzufügen" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "Providerkonto" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "Einen virtuellen Verbindung hinzufügen" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "Abschlusspunkt hinzufügen" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "Virtueller Verbindungsabschluß" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "Virtuellen Verbindung hinzufügen" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "Virtueller Verbindungstyp" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "Daten zur Konfiguration" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "Kommentar" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13879,31 +13757,11 @@ msgstr "Neuer Wert" msgid "Changed" msgstr "Geändert" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "Bytes" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "SHA256-Hash" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "Inhalt" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "Zuletzt synchronisiert" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "Backend" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "Keine Parameter definiert" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "Rackübersichten" @@ -13962,72 +13820,11 @@ msgstr "Die mit diesem Objekt verknüpfte Datei wurde gelöscht" msgid "Data Synced" msgstr "Daten synchronisiert" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "Job" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "Erstellt von" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "Terminplanung" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "jeden %(interval)s Minuten" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "Änderung" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "Unterschied" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "Vorherige" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "Nächste" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "Objekt erstellt" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "Objekt gelöscht" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "Keine Änderungen" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "Daten vor der Änderung" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Warnung: Vergleich nichtatomarer Änderungen mit dem vorherigen " -"Änderungsdatensatz" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "Daten nach der Änderung" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Alles ansehen %(count)s Änderungen" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -14043,6 +13840,61 @@ msgstr "Tage" msgid "Indefinite" msgstr "Unbestimmt" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "Kommentar" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "Daten zur Konfiguration" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "Keine Parameter definiert" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "Unterschied" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "Vorherige" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "Nächste" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "Objekt erstellt" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "Objekt gelöscht" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "Keine Änderungen" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "Daten nach der Änderung" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "Daten vor der Änderung" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Warnung: Vergleich nichtatomarer Änderungen mit dem vorherigen " +"Änderungsdatensatz" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Alles ansehen %(count)s Änderungen" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "Nicht installiert" @@ -14332,22 +14184,13 @@ msgstr "Segmente" msgid "Incomplete" msgstr "Unvollständig" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "Nicht verbunden" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT für" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "NAT" @@ -14355,7 +14198,7 @@ msgstr "NAT" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "In die Zwischenablage kopieren" @@ -14405,10 +14248,6 @@ msgstr "entfernen" msgid "Local Config Context Data" msgstr "Lokale Konfigurationskontextdaten" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "Geräteeinsatz" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -14436,34 +14275,6 @@ msgstr "Einsatz" msgid "Add Device" msgstr "Gerät hinzufügen" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "Positionen" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "Als verbunden markiert" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "Status der Verbindung" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "Portzuordnungen" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "Keine Zuordnungen definiert" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "A-Seite" @@ -14489,6 +14300,8 @@ msgid "Path Status" msgstr "Pfadstatus" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "Nicht erreichbar" @@ -14497,8 +14310,6 @@ msgid "Path Endpoints" msgstr "Pfadendpunkte" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "Nicht verbunden" @@ -14544,94 +14355,10 @@ msgstr "Höhe des Racks" msgid "Loading..." msgstr "Wird geladen..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "Untergeordnete Schnittstelle hinzufügen" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "Geschwindigkeit/Duplex" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "PoE-Modus" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "PoE-Typ" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "Überbrückte Schnittstellen" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "VLAN-Übersetzung" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "Funkverbindung" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "Kanal" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "Kanal-Frequenz" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "MHz" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "Kanal-Breite" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "IP-Adresse hinzufügen" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "MAC-Adresse hinzufügen" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "Übergeordneter Artikel" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "Teile-ID" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "Asset-Tag" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "Primär für diese Schnittstelle" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "Gerätetyp hinzufügen" @@ -14640,6 +14367,64 @@ msgstr "Gerätetyp hinzufügen" msgid "Add Module Type" msgstr "Modultyp hinzufügen" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "Pfadstatus" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "Pfadendpunkte" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "Nicht verbunden" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "Portzuordnungen" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "Keine Zuordnungen definiert" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "Funkverbindung" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "Kanal" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "Frequenz des Kanals" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "MHz" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "Breite des Kanals" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "Kein Profil zugewiesen" @@ -14659,7 +14444,7 @@ msgstr "Zugeteilt" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "VA" @@ -14683,44 +14468,6 @@ msgstr "Nur Bilder" msgid "Labels only" msgstr "Nur Beschriftungen" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "Verbundenes Gerät" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "Auslastung (zugewiesen)" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "Elektrische Eigenschaften" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "A" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "Phasenlage" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "Stromzufuhr hinzufügen" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "maximale Auslastung" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "zugewiesene Auslastung" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "Reservierung hinzufügen" @@ -14760,10 +14507,6 @@ msgstr "Standort hinzufügen" msgid "Attachment" msgstr "Anlage" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "Mitglied hinzufügen" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14815,10 +14558,6 @@ msgstr "" "Sind Sie sicher, dass Sie entfernen möchten %(device)s aus " "dem virtuellen Gehäuse %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "Identifier" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -15159,6 +14898,10 @@ msgstr "" msgid "Journal Entry" msgstr "Journaleintrag" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "Erstellt von" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "Benachrichtigungsgruppe" @@ -15653,37 +15396,15 @@ msgstr "Abmelden" msgid "Log In" msgstr "Anmelden" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Familie" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "hinzugefügt am" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "Prefix hinzufügen" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "AS-Nummer" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "Art der Authentifizierung" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "Authentifizierungsschlüssel" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "Virtuelle IP-Adressen" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "Weltweit" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15718,15 +15439,6 @@ msgstr "Verfügbare anzeigen" msgid "Show All" msgstr "Alles anzeigen" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "Weltweit" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (außen)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "Eine IP-Adresse zuweisen" @@ -15743,51 +15455,43 @@ msgstr "Suchergebnisse" msgid "Bulk Add IP Addresses" msgstr "IP-Adressen massenweise hinzufügen" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "Startadresse" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "Endadresse" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "Angaben zur Adressierung" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "Als voll belegt markiert" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "untergeordnete IPs" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "Verfügbare IPs" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "Erste verfügbare IP" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "Präfix-Details" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "Netzwerkadresse" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "Netzwerkmaske" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "Wildcardmaske" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "Broadcast-Adresse" @@ -15799,58 +15503,14 @@ msgstr "IP-Bereich hinzufügen" msgid "Hide Depth Indicators" msgstr "Tiefenindikatoren ausblenden" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "Aggregat hinzufügen" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "VRFs importieren" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "VRFs exportieren" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "L2VPNs importieren" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "L2VPNs exportieren" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Q-in-Q-Rolle" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "Präfix hinzufügen" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "Kunden-VLANs" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "Ein VLAN hinzufügen" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "VLAN hinzufügen" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "Regel hinzufügen" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "Routenunterscheidungsmerkmal" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "Einzigartiger IP-Raum" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15920,61 +15580,14 @@ msgstr "" "Klicken Sie hier um erneut zu versuchen, NetBox" " zu laden." -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "Kontakt" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "Titel" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "Telefon" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "Kontaktgruppe" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "Kontaktgruppe hinzufügen" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "Kontaktrolle" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "Einen Kontakt hinzufügen" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "Mandant hinzufügen" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "Mandantengruppe" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "Mandantengruppe hinzufügen" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -16085,16 +15698,28 @@ msgstr "IPSec-Richtlinie" msgid "PFS Group" msgstr "PFS-Gruppe" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "Abschlusspunkt hinzufügen" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "Tunnel hinzufügen" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "Kanal-Frequenz" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "MHz" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "Kanal-Breite" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "WLAN hinzufügen" @@ -16129,6 +15754,20 @@ msgstr "Kontaktrolle (ID)" msgid "Contact role (slug)" msgstr "Kontaktrolle (URL-Slug)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "Kontakt" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "Kontaktrolle" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "Kontaktgruppe" @@ -16161,6 +15800,15 @@ msgstr "Gruppen hinzufügen" msgid "Remove groups" msgstr "Gruppen entfernen" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "Titel" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "Telefon" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -16173,6 +15821,17 @@ msgstr "" msgid "Assigned contact" msgstr "Zugewiesener Kontakt" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "Mandantengruppe" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "Kontaktgruppe" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "Kontaktgruppe" @@ -16276,6 +15935,14 @@ msgstr "Kontakt-Link" msgid "Contact Description" msgstr "Kontakt-Beschreibung" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "Mandantengruppe hinzufügen" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "Kontaktgruppe hinzufügen" + #: netbox/users/choices.py:15 msgid "v1" msgstr "V1" @@ -17590,10 +17257,6 @@ msgstr "Füge {count} Geräte zum Cluster {cluster}hinzu " msgid "Assigned VLANs" msgstr "Zugewiesene VLANs" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "Untergeordnete Schnittstellen " - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPSec - Transport" diff --git a/netbox/translations/es/LC_MESSAGES/django.mo b/netbox/translations/es/LC_MESSAGES/django.mo index d09a16f11b185ecc7a862dda3284b71cb75a6294..50a79bb9e0f629780e7c30179af9a3467d6e9d74 100644 GIT binary patch delta 76074 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

    l9+vWcxzQa=ek>TOmrstj#!C)HG4bee~THU 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 delta 75475 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 diff --git a/netbox/translations/es/LC_MESSAGES/django.po b/netbox/translations/es/LC_MESSAGES/django.po index a790e4e95..b9b934782 100644 --- a/netbox/translations/es/LC_MESSAGES/django.po +++ b/netbox/translations/es/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-14 05:18+0000\n" +"POT-Creation-Date: 2026-03-31 05:31+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2026\n" "Language-Team: Spanish (https://app.transifex.com/netbox-community/teams/178115/es/)\n" @@ -48,9 +48,9 @@ msgstr "La contraseña se ha cambiado correctamente." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 #: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204 -#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1933 -#: netbox/dcim/choices.py:1991 netbox/dcim/choices.py:2058 -#: netbox/dcim/choices.py:2080 netbox/virtualization/choices.py:20 +#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1954 +#: netbox/dcim/choices.py:2012 netbox/dcim/choices.py:2079 +#: netbox/dcim/choices.py:2101 netbox/virtualization/choices.py:20 #: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18 #: netbox/vpn/choices.py:281 msgid "Planned" @@ -64,8 +64,8 @@ msgstr "Aprovisionamiento" #: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22 #: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155 #: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256 -#: netbox/dcim/choices.py:1990 netbox/dcim/choices.py:2057 -#: netbox/dcim/choices.py:2079 netbox/extras/tables/tables.py:642 +#: netbox/dcim/choices.py:2011 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:2100 netbox/extras/tables/tables.py:642 #: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49 #: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154 #: netbox/templates/extras/configcontext.html:29 @@ -77,8 +77,8 @@ msgid "Active" msgstr "Activo" #: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202 -#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:1989 -#: netbox/dcim/choices.py:2059 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:2010 +#: netbox/dcim/choices.py:2080 netbox/dcim/choices.py:2099 #: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44 msgid "Offline" msgstr "Desconectado" @@ -91,8 +91,9 @@ msgstr "Desaprovisionamiento" msgid "Decommissioned" msgstr "Retirado" -#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2002 -#: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:153 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2023 +#: netbox/dcim/tables/devices.py:1208 +#: netbox/templates/dcim/interface/attrs/mac_address.html:3 #: netbox/tenancy/choices.py:17 msgid "Primary" msgstr "Principal" @@ -111,7 +112,8 @@ msgid "Inactive" msgstr "Inactivo" #: netbox/circuits/choices.py:107 netbox/dcim/tables/devices.py:714 -#: netbox/templates/dcim/interface.html:293 netbox/vpn/choices.py:63 +#: netbox/templates/dcim/panels/interface_wireless.html:12 +#: netbox/vpn/choices.py:63 msgid "Peer" msgstr "Par" @@ -187,9 +189,9 @@ msgstr "Grupo de sitio (ID corto)" #: netbox/dcim/forms/filtersets.py:1172 netbox/dcim/forms/filtersets.py:1268 #: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:2024 #: netbox/dcim/forms/filtersets.py:2048 netbox/dcim/forms/filtersets.py:2072 -#: netbox/dcim/forms/model_forms.py:155 netbox/dcim/forms/model_forms.py:183 -#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:570 -#: netbox/dcim/forms/model_forms.py:839 netbox/dcim/forms/object_create.py:294 +#: netbox/dcim/forms/model_forms.py:166 netbox/dcim/forms/model_forms.py:209 +#: netbox/dcim/forms/model_forms.py:280 netbox/dcim/forms/model_forms.py:596 +#: netbox/dcim/forms/model_forms.py:865 netbox/dcim/forms/object_create.py:294 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:26 #: netbox/dcim/tables/power.py:90 netbox/dcim/tables/racks.py:111 #: netbox/dcim/tables/racks.py:194 netbox/dcim/tables/sites.py:102 @@ -200,7 +202,6 @@ msgstr "Grupo de sitio (ID corto)" #: netbox/ipam/tables/vlans.py:90 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:36 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/ipam/vlan.html:23 #: netbox/templates/ipam/vlan_edit.html:52 #: netbox/virtualization/forms/bulk_edit.py:95 #: netbox/virtualization/forms/bulk_import.py:60 @@ -232,7 +233,6 @@ msgstr "ASN (ID)" #: netbox/circuits/filtersets.py:85 netbox/circuits/forms/filtersets.py:42 #: netbox/ipam/forms/model_forms.py:162 netbox/ipam/models/asns.py:137 #: netbox/ipam/models/asns.py:154 netbox/ipam/tables/asn.py:51 -#: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" @@ -329,14 +329,12 @@ msgstr "Búsqueda" #: netbox/circuits/forms/filtersets.py:232 #: netbox/circuits/forms/filtersets.py:259 #: netbox/circuits/forms/filtersets.py:306 -#: netbox/circuits/forms/model_forms.py:139 -#: netbox/circuits/forms/model_forms.py:162 -#: netbox/circuits/forms/model_forms.py:260 +#: netbox/circuits/forms/model_forms.py:168 +#: netbox/circuits/forms/model_forms.py:191 +#: netbox/circuits/forms/model_forms.py:289 #: netbox/circuits/tables/circuits.py:103 #: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 -#: netbox/templates/circuits/circuit.html:15 -#: netbox/templates/circuits/circuitgroupassignment.html:30 -#: netbox/templates/circuits/circuittermination.html:19 +#: netbox/templates/circuits/panels/circuit_termination.html:7 #: netbox/templates/dcim/inc/cable_termination.html:62 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -394,11 +392,9 @@ msgstr "Tipo de circuito virtual (ID corto)" #: netbox/circuits/forms/bulk_import.py:248 #: netbox/circuits/forms/filtersets.py:384 #: netbox/circuits/forms/filtersets.py:390 -#: netbox/circuits/forms/model_forms.py:338 -#: netbox/circuits/forms/model_forms.py:353 +#: netbox/circuits/forms/model_forms.py:367 +#: netbox/circuits/forms/model_forms.py:382 #: netbox/circuits/tables/virtual_circuits.py:84 -#: netbox/templates/circuits/virtualcircuit.html:20 -#: netbox/templates/circuits/virtualcircuittermination.html:38 msgid "Virtual circuit" msgstr "Circuito virtual" @@ -411,12 +407,12 @@ msgstr "Interfaz (ID)" #: netbox/circuits/forms/bulk_edit.py:48 #: netbox/circuits/forms/filtersets.py:68 #: netbox/circuits/forms/model_forms.py:48 -#: netbox/circuits/tables/providers.py:32 netbox/dcim/forms/bulk_edit.py:134 -#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/model_forms.py:142 -#: netbox/dcim/tables/sites.py:74 netbox/ipam/models/asns.py:155 -#: netbox/ipam/tables/asn.py:37 netbox/ipam/views.py:270 -#: netbox/netbox/navigation/menu.py:182 netbox/netbox/navigation/menu.py:185 -#: netbox/templates/circuits/provider.html:23 +#: netbox/circuits/tables/providers.py:32 netbox/circuits/ui/panels.py:92 +#: netbox/dcim/forms/bulk_edit.py:134 netbox/dcim/forms/filtersets.py:225 +#: netbox/dcim/forms/model_forms.py:142 netbox/dcim/tables/sites.py:74 +#: netbox/ipam/models/asns.py:155 netbox/ipam/tables/asn.py:37 +#: netbox/ipam/views.py:365 netbox/netbox/navigation/menu.py:182 +#: netbox/netbox/navigation/menu.py:185 msgid "ASNs" msgstr "ASN" @@ -436,9 +432,9 @@ msgstr "ASN" #: netbox/circuits/forms/filtersets.py:349 #: netbox/circuits/forms/filtersets.py:385 #: netbox/circuits/forms/filtersets.py:408 -#: netbox/circuits/forms/model_forms.py:65 -#: netbox/circuits/forms/model_forms.py:80 -#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:90 +#: netbox/circuits/forms/model_forms.py:109 +#: netbox/circuits/forms/model_forms.py:140 #: netbox/circuits/tables/circuits.py:56 #: netbox/circuits/tables/circuits.py:107 #: netbox/circuits/tables/circuits.py:192 @@ -446,22 +442,14 @@ msgstr "ASN" #: netbox/circuits/tables/providers.py:95 #: netbox/circuits/tables/virtual_circuits.py:46 #: netbox/circuits/tables/virtual_circuits.py:89 -#: netbox/templates/circuits/circuit.html:18 -#: netbox/templates/circuits/circuitgroupassignment.html:26 -#: netbox/templates/circuits/circuittermination.html:25 -#: netbox/templates/circuits/provider.html:20 -#: netbox/templates/circuits/provideraccount.html:20 -#: netbox/templates/circuits/providernetwork.html:20 -#: netbox/templates/circuits/virtualcircuit.html:23 -#: netbox/templates/circuits/virtualcircuittermination.html:26 +#: netbox/templates/circuits/panels/circuit_termination.html:11 #: netbox/templates/dcim/inc/cable_termination.html:58 -#: netbox/templates/dcim/interface.html:184 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:7 msgid "Provider" msgstr "Proveedor" #: netbox/circuits/forms/bulk_edit.py:86 -#: netbox/circuits/forms/filtersets.py:106 -#: netbox/templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/filtersets.py:106 netbox/circuits/ui/panels.py:106 msgid "Service ID" msgstr "ID de servicio" @@ -480,12 +468,7 @@ msgstr "ID de servicio" #: netbox/dcim/tables/devicetypes.py:214 netbox/dcim/tables/devicetypes.py:255 #: netbox/dcim/tables/devicetypes.py:274 netbox/dcim/tables/racks.py:30 #: netbox/extras/forms/bulk_edit.py:306 netbox/extras/tables/tables.py:552 -#: netbox/netbox/ui/attrs.py:194 netbox/templates/circuits/circuittype.html:30 -#: netbox/templates/circuits/virtualcircuittype.html:30 -#: netbox/templates/dcim/cable.html:44 netbox/templates/dcim/frontport.html:40 -#: netbox/templates/dcim/inventoryitemrole.html:26 -#: netbox/templates/dcim/poweroutlet.html:48 -#: netbox/templates/dcim/rearport.html:40 netbox/templates/extras/tag.html:26 +#: netbox/netbox/ui/attrs.py:213 netbox/templates/extras/tag.html:26 msgid "Color" msgstr "Color" @@ -519,27 +502,14 @@ msgstr "Color" #: netbox/dcim/forms/filtersets.py:1602 netbox/dcim/forms/filtersets.py:1707 #: netbox/dcim/forms/filtersets.py:1756 netbox/dcim/forms/filtersets.py:1775 #: netbox/dcim/forms/filtersets.py:1799 netbox/dcim/forms/filtersets.py:1818 -#: netbox/dcim/forms/model_forms.py:820 netbox/dcim/forms/model_forms.py:826 +#: netbox/dcim/forms/model_forms.py:846 netbox/dcim/forms/model_forms.py:852 #: netbox/dcim/forms/object_import.py:85 #: netbox/dcim/forms/object_import.py:114 #: netbox/dcim/forms/object_import.py:127 netbox/dcim/tables/devices.py:182 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 #: netbox/extras/forms/bulk_import.py:48 netbox/extras/tables/tables.py:510 #: netbox/extras/tables/tables.py:578 netbox/netbox/tables/tables.py:339 -#: netbox/templates/circuits/circuit.html:30 -#: netbox/templates/circuits/virtualcircuit.html:39 -#: netbox/templates/circuits/virtualcircuittermination.html:64 -#: netbox/templates/core/datasource.html:38 -#: netbox/templates/dcim/cable.html:15 -#: netbox/templates/dcim/consoleport.html:36 -#: netbox/templates/dcim/consoleserverport.html:36 -#: netbox/templates/dcim/frontport.html:36 -#: netbox/templates/dcim/interface.html:46 -#: netbox/templates/dcim/interface.html:244 -#: netbox/templates/dcim/powerfeed.html:32 -#: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 -#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/dcim/panels/interface_connection.html:68 #: netbox/templates/extras/eventrule.html:74 #: netbox/templates/wireless/panels/wirelesslink_interface.html:16 #: netbox/virtualization/forms/bulk_edit.py:50 @@ -560,10 +530,8 @@ msgstr "Tipo" #: netbox/circuits/forms/bulk_import.py:213 #: netbox/circuits/forms/filtersets.py:159 #: netbox/circuits/forms/filtersets.py:357 -#: netbox/circuits/forms/model_forms.py:117 -#: netbox/circuits/forms/model_forms.py:326 -#: netbox/templates/circuits/virtualcircuit.html:31 -#: netbox/templates/circuits/virtualcircuittermination.html:34 +#: netbox/circuits/forms/model_forms.py:146 +#: netbox/circuits/forms/model_forms.py:355 msgid "Provider account" msgstr "Cuenta de proveedor" @@ -605,19 +573,10 @@ msgstr "Cuenta de proveedor" #: netbox/ipam/forms/model_forms.py:503 netbox/ipam/tables/ip.py:182 #: netbox/ipam/tables/ip.py:261 netbox/ipam/tables/ip.py:314 #: netbox/ipam/tables/ip.py:389 netbox/ipam/tables/ip.py:416 -#: netbox/ipam/tables/vlans.py:98 netbox/templates/circuits/circuit.html:34 -#: netbox/templates/circuits/virtualcircuit.html:43 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:21 -#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:19 -#: netbox/templates/dcim/cable.html:19 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/powerfeed.html:36 -#: netbox/templates/dcim/poweroutlet.html:40 +#: netbox/ipam/tables/vlans.py:98 netbox/templates/core/rq_task.html:81 +#: netbox/templates/core/system.html:19 #: netbox/templates/extras/inc/script_list_content.html:35 -#: netbox/templates/ipam/ipaddress.html:37 -#: netbox/templates/ipam/iprange.html:61 netbox/templates/ipam/prefix.html:69 -#: netbox/templates/ipam/vlan.html:48 netbox/users/forms/filtersets.py:36 -#: netbox/users/forms/model_forms.py:223 +#: netbox/users/forms/filtersets.py:36 netbox/users/forms/model_forms.py:223 #: netbox/virtualization/forms/bulk_edit.py:60 #: netbox/virtualization/forms/bulk_edit.py:83 #: netbox/virtualization/forms/bulk_import.py:55 @@ -678,21 +637,9 @@ msgstr "Estado" #: netbox/ipam/forms/filtersets.py:155 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:297 netbox/ipam/forms/filtersets.py:350 #: netbox/ipam/forms/filtersets.py:459 netbox/ipam/forms/filtersets.py:552 -#: netbox/ipam/tables/ip.py:419 netbox/templates/circuits/circuit.html:48 -#: netbox/templates/circuits/circuitgroup.html:36 -#: netbox/templates/circuits/virtualcircuit.html:47 -#: netbox/templates/dcim/cable.html:27 netbox/templates/dcim/powerfeed.html:44 -#: netbox/templates/dcim/virtualdevicecontext.html:52 -#: netbox/templates/ipam/aggregate.html:30 netbox/templates/ipam/asn.html:33 -#: netbox/templates/ipam/asnrange.html:29 -#: netbox/templates/ipam/ipaddress.html:28 -#: netbox/templates/ipam/iprange.html:65 netbox/templates/ipam/prefix.html:29 -#: netbox/templates/ipam/routetarget.html:17 -#: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vlangroup.html:50 -#: netbox/templates/ipam/vrf.html:20 netbox/templates/tenancy/tenant.html:17 -#: netbox/tenancy/forms/filtersets.py:55 netbox/tenancy/forms/forms.py:26 -#: netbox/tenancy/forms/forms.py:50 netbox/tenancy/forms/model_forms.py:51 -#: netbox/tenancy/tables/columns.py:50 +#: netbox/ipam/tables/ip.py:419 netbox/tenancy/forms/filtersets.py:55 +#: netbox/tenancy/forms/forms.py:26 netbox/tenancy/forms/forms.py:50 +#: netbox/tenancy/forms/model_forms.py:51 netbox/tenancy/tables/columns.py:50 #: netbox/virtualization/forms/bulk_edit.py:66 #: netbox/virtualization/forms/bulk_edit.py:126 #: netbox/virtualization/forms/bulk_import.py:67 @@ -727,8 +674,7 @@ msgstr "Tasa comprometida (Kbps)" #: netbox/circuits/forms/bulk_edit.py:159 #: netbox/circuits/forms/filtersets.py:217 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/templates/circuits/circuit.html:38 +#: netbox/circuits/forms/model_forms.py:165 #: netbox/wireless/forms/bulk_edit.py:121 #: netbox/wireless/forms/filtersets.py:137 #: netbox/wireless/forms/model_forms.py:166 @@ -747,7 +693,7 @@ msgid "Distance unit" msgstr "Unidad de distancia" #: netbox/circuits/forms/bulk_edit.py:173 -#: netbox/circuits/forms/model_forms.py:141 +#: netbox/circuits/forms/model_forms.py:170 msgid "Service Parameters" msgstr "Parámetros de servicio" @@ -773,7 +719,7 @@ msgstr "Parámetros de servicio" #: netbox/dcim/forms/filtersets.py:1864 netbox/dcim/forms/filtersets.py:1879 #: netbox/dcim/forms/filtersets.py:1890 netbox/dcim/forms/filtersets.py:1936 #: netbox/dcim/forms/filtersets.py:1972 netbox/dcim/tables/modules.py:25 -#: netbox/dcim/views.py:1679 netbox/extras/forms/bulk_edit.py:94 +#: netbox/dcim/views.py:1681 netbox/extras/forms/bulk_edit.py:94 #: netbox/extras/forms/filtersets.py:48 netbox/extras/forms/filtersets.py:147 #: netbox/extras/forms/filtersets.py:226 netbox/extras/forms/filtersets.py:243 #: netbox/extras/forms/filtersets.py:275 netbox/extras/forms/filtersets.py:306 @@ -796,12 +742,12 @@ msgstr "Atributos" #: netbox/circuits/forms/bulk_edit.py:175 #: netbox/circuits/forms/bulk_edit.py:317 -#: netbox/circuits/forms/model_forms.py:142 -#: netbox/circuits/forms/model_forms.py:238 -#: netbox/circuits/forms/model_forms.py:340 -#: netbox/dcim/forms/model_forms.py:157 netbox/dcim/forms/model_forms.py:198 -#: netbox/dcim/forms/model_forms.py:285 netbox/dcim/forms/model_forms.py:342 -#: netbox/dcim/forms/model_forms.py:883 netbox/dcim/forms/model_forms.py:1897 +#: netbox/circuits/forms/model_forms.py:171 +#: netbox/circuits/forms/model_forms.py:267 +#: netbox/circuits/forms/model_forms.py:369 +#: netbox/dcim/forms/model_forms.py:168 netbox/dcim/forms/model_forms.py:224 +#: netbox/dcim/forms/model_forms.py:311 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/forms/model_forms.py:909 netbox/dcim/forms/model_forms.py:1923 #: netbox/ipam/forms/bulk_edit.py:383 netbox/ipam/forms/model_forms.py:70 #: netbox/ipam/forms/model_forms.py:87 netbox/ipam/forms/model_forms.py:118 #: netbox/ipam/forms/model_forms.py:139 netbox/ipam/forms/model_forms.py:163 @@ -836,34 +782,9 @@ msgstr "Arrendamiento" #: netbox/extras/tables/tables.py:97 netbox/ipam/tables/vlans.py:214 #: netbox/ipam/tables/vlans.py:241 netbox/netbox/forms/bulk_edit.py:79 #: netbox/netbox/forms/bulk_edit.py:91 netbox/netbox/forms/bulk_edit.py:103 -#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 -#: netbox/templates/circuits/circuit.html:69 -#: netbox/templates/circuits/circuitgroup.html:32 -#: netbox/templates/circuits/circuittype.html:26 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:83 -#: netbox/templates/circuits/provider.html:33 -#: netbox/templates/circuits/provideraccount.html:32 -#: netbox/templates/circuits/providernetwork.html:32 -#: netbox/templates/circuits/virtualcircuit.html:56 -#: netbox/templates/circuits/virtualcircuittermination.html:68 -#: netbox/templates/circuits/virtualcircuittype.html:26 -#: netbox/templates/core/datasource.html:58 -#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:40 -#: netbox/templates/dcim/consoleport.html:44 -#: netbox/templates/dcim/consoleserverport.html:44 -#: netbox/templates/dcim/devicebay.html:32 -#: netbox/templates/dcim/frontport.html:54 -#: netbox/templates/dcim/interface.html:69 -#: netbox/templates/dcim/inventoryitem.html:64 -#: netbox/templates/dcim/inventoryitemrole.html:22 -#: netbox/templates/dcim/macaddress.html:21 -#: netbox/templates/dcim/modulebay.html:42 -#: netbox/templates/dcim/powerfeed.html:40 -#: netbox/templates/dcim/poweroutlet.html:44 -#: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 -#: netbox/templates/dcim/rearport.html:54 -#: netbox/templates/dcim/virtualchassis.html:21 +#: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:85 +#: netbox/templates/core/plugin.html:80 #: netbox/templates/extras/configcontext.html:25 #: netbox/templates/extras/configcontextprofile.html:17 #: netbox/templates/extras/configtemplate.html:17 @@ -878,23 +799,6 @@ msgstr "Arrendamiento" #: netbox/templates/extras/tableconfig.html:17 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:151 -#: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 -#: netbox/templates/ipam/asnrange.html:38 -#: netbox/templates/ipam/fhrpgroup.html:34 -#: netbox/templates/ipam/ipaddress.html:55 -#: netbox/templates/ipam/iprange.html:74 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/rir.html:26 netbox/templates/ipam/role.html:26 -#: netbox/templates/ipam/routetarget.html:21 -#: netbox/templates/ipam/service.html:52 -#: netbox/templates/ipam/servicetemplate.html:27 -#: netbox/templates/ipam/vlan.html:62 netbox/templates/ipam/vlangroup.html:34 -#: netbox/templates/ipam/vlantranslationpolicy.html:18 -#: netbox/templates/ipam/vlantranslationrule.html:26 -#: netbox/templates/ipam/vrf.html:33 netbox/templates/tenancy/contact.html:77 -#: netbox/templates/tenancy/contactgroup.html:25 -#: netbox/templates/tenancy/contactrole.html:22 -#: netbox/templates/tenancy/tenant.html:24 -#: netbox/templates/tenancy/tenantgroup.html:33 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:12 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:12 #: netbox/users/forms/bulk_edit.py:62 netbox/users/forms/bulk_edit.py:80 @@ -906,7 +810,7 @@ msgid "Description" msgstr "Descripción" #: netbox/circuits/forms/bulk_edit.py:192 -#: netbox/circuits/forms/model_forms.py:170 +#: netbox/circuits/forms/model_forms.py:199 #: netbox/dcim/forms/bulk_import.py:1419 netbox/dcim/forms/bulk_import.py:1444 msgid "Termination type" msgstr "Tipo de terminación" @@ -914,9 +818,9 @@ msgstr "Tipo de terminación" #: netbox/circuits/forms/bulk_edit.py:195 #: netbox/circuits/forms/bulk_import.py:133 #: netbox/circuits/forms/filtersets.py:234 -#: netbox/circuits/forms/model_forms.py:173 +#: netbox/circuits/forms/model_forms.py:202 netbox/circuits/ui/panels.py:14 #: netbox/templates/circuits/inc/circuit_termination.html:6 -#: netbox/templates/dcim/cable.html:72 netbox/templates/dcim/cable.html:76 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:6 #: netbox/vpn/forms/bulk_import.py:99 netbox/vpn/forms/filtersets.py:87 msgid "Termination" msgstr "Terminación" @@ -938,26 +842,23 @@ msgid "Mark connected" msgstr "Marcar como conectado" #: netbox/circuits/forms/bulk_edit.py:220 -#: netbox/circuits/forms/model_forms.py:184 +#: netbox/circuits/forms/model_forms.py:213 netbox/circuits/views.py:513 +#: netbox/dcim/views.py:3465 netbox/dcim/views.py:3566 #: netbox/templates/circuits/inc/circuit_termination_fields.html:55 -#: netbox/templates/dcim/frontport.html:118 -#: netbox/templates/dcim/interface.html:268 -#: netbox/templates/dcim/rearport.html:112 +#: netbox/templates/dcim/panels/interface_connection.html:92 msgid "Circuit Termination" msgstr "Terminación del circuito" #: netbox/circuits/forms/bulk_edit.py:222 -#: netbox/circuits/forms/model_forms.py:186 +#: netbox/circuits/forms/model_forms.py:215 msgid "Termination Details" msgstr "Detalles de terminación" #: netbox/circuits/forms/bulk_edit.py:261 #: netbox/circuits/forms/bulk_import.py:188 #: netbox/circuits/forms/filtersets.py:314 -#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:666 -#: netbox/templates/circuits/circuitgroupassignment.html:34 +#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:692 #: netbox/templates/dcim/panels/virtual_chassis_members.html:11 -#: netbox/templates/dcim/virtualchassis.html:58 #: netbox/templates/dcim/virtualchassis_edit.html:68 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 #: netbox/templates/ipam/panels/fhrp_groups.html:12 @@ -972,7 +873,7 @@ msgstr "Prioridad" #: netbox/circuits/forms/filtersets.py:272 #: netbox/circuits/forms/filtersets.py:365 #: netbox/circuits/forms/filtersets.py:403 -#: netbox/circuits/forms/model_forms.py:321 +#: netbox/circuits/forms/model_forms.py:350 #: netbox/circuits/tables/virtual_circuits.py:51 #: netbox/circuits/tables/virtual_circuits.py:95 msgid "Provider network" @@ -981,13 +882,13 @@ msgstr "Red del proveedor" #: netbox/circuits/forms/bulk_edit.py:326 #: netbox/circuits/forms/bulk_import.py:253 #: netbox/circuits/forms/filtersets.py:393 -#: netbox/circuits/forms/model_forms.py:360 netbox/dcim/forms/bulk_edit.py:351 +#: netbox/circuits/forms/model_forms.py:389 netbox/dcim/forms/bulk_edit.py:351 #: netbox/dcim/forms/bulk_edit.py:1245 netbox/dcim/forms/bulk_edit.py:1681 #: netbox/dcim/forms/bulk_import.py:270 netbox/dcim/forms/bulk_import.py:1199 #: netbox/dcim/forms/filtersets.py:404 netbox/dcim/forms/filtersets.py:879 #: netbox/dcim/forms/filtersets.py:1902 netbox/dcim/forms/filtersets.py:1942 -#: netbox/dcim/forms/model_forms.py:267 netbox/dcim/forms/model_forms.py:1234 -#: netbox/dcim/forms/model_forms.py:1717 +#: netbox/dcim/forms/model_forms.py:293 netbox/dcim/forms/model_forms.py:1260 +#: netbox/dcim/forms/model_forms.py:1743 #: netbox/dcim/forms/object_import.py:182 netbox/dcim/tables/devices.py:173 #: netbox/dcim/tables/devices.py:1032 netbox/dcim/tables/devicetypes.py:318 #: netbox/dcim/tables/racks.py:118 netbox/extras/filtersets.py:734 @@ -1001,14 +902,10 @@ msgstr "Red del proveedor" #: netbox/ipam/forms/model_forms.py:253 netbox/ipam/forms/model_forms.py:678 #: netbox/ipam/tables/ip.py:208 netbox/ipam/tables/ip.py:265 #: netbox/ipam/tables/ip.py:318 netbox/ipam/tables/vlans.py:102 -#: netbox/templates/circuits/virtualcircuittermination.html:42 #: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:196 -#: netbox/templates/dcim/interface.html:298 -#: netbox/templates/dcim/inventoryitem.html:40 -#: netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:57 netbox/templates/ipam/prefix.html:73 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/dcim/panels/component_inventory_items.html:10 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:19 +#: netbox/templates/dcim/panels/interface_wireless.html:17 #: netbox/templates/wireless/panels/wirelesslink_interface.html:20 #: netbox/tenancy/forms/bulk_edit.py:136 #: netbox/tenancy/forms/filtersets.py:136 @@ -1104,22 +1001,19 @@ msgid "Operational role" msgstr "Función operativa" #: netbox/circuits/forms/bulk_import.py:258 -#: netbox/circuits/forms/model_forms.py:363 +#: netbox/circuits/forms/model_forms.py:392 #: netbox/circuits/tables/virtual_circuits.py:108 -#: netbox/dcim/forms/bulk_import.py:1330 netbox/dcim/forms/model_forms.py:1308 -#: netbox/dcim/forms/model_forms.py:1577 netbox/dcim/forms/model_forms.py:1758 -#: netbox/dcim/forms/model_forms.py:1793 netbox/dcim/forms/model_forms.py:1918 -#: netbox/dcim/tables/connections.py:66 netbox/dcim/tables/devices.py:1199 -#: netbox/ipam/forms/bulk_import.py:323 netbox/ipam/forms/model_forms.py:283 -#: netbox/ipam/forms/model_forms.py:292 netbox/ipam/tables/fhrp.py:61 -#: netbox/ipam/tables/ip.py:323 netbox/ipam/tables/vlans.py:145 +#: netbox/circuits/ui/panels.py:134 netbox/dcim/forms/bulk_import.py:1330 +#: netbox/dcim/forms/model_forms.py:1334 netbox/dcim/forms/model_forms.py:1603 +#: netbox/dcim/forms/model_forms.py:1784 netbox/dcim/forms/model_forms.py:1819 +#: netbox/dcim/forms/model_forms.py:1944 netbox/dcim/tables/connections.py:66 +#: netbox/dcim/tables/devices.py:1199 netbox/dcim/views.py:3457 +#: netbox/dcim/views.py:3560 netbox/ipam/forms/bulk_import.py:323 +#: netbox/ipam/forms/model_forms.py:283 netbox/ipam/forms/model_forms.py:292 +#: netbox/ipam/tables/fhrp.py:61 netbox/ipam/tables/ip.py:323 +#: netbox/ipam/tables/vlans.py:145 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 -#: netbox/templates/circuits/virtualcircuittermination.html:53 -#: netbox/templates/circuits/virtualcircuittermination.html:60 -#: netbox/templates/dcim/frontport.html:103 -#: netbox/templates/dcim/interface.html:27 -#: netbox/templates/dcim/interface.html:259 -#: netbox/templates/dcim/rearport.html:103 +#: netbox/templates/dcim/panels/interface_connection.html:83 #: netbox/templates/wireless/panels/wirelesslink_interface.html:12 #: netbox/virtualization/forms/model_forms.py:368 #: netbox/vpn/forms/bulk_import.py:302 netbox/vpn/forms/model_forms.py:434 @@ -1151,8 +1045,8 @@ msgstr "Interfaz" #: netbox/dcim/forms/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1746 #: netbox/dcim/forms/filtersets.py:1790 netbox/dcim/forms/filtersets.py:1833 #: netbox/dcim/forms/filtersets.py:1865 netbox/dcim/forms/filtersets.py:1892 -#: netbox/dcim/forms/model_forms.py:197 netbox/dcim/forms/model_forms.py:259 -#: netbox/dcim/forms/model_forms.py:575 netbox/dcim/forms/model_forms.py:844 +#: netbox/dcim/forms/model_forms.py:223 netbox/dcim/forms/model_forms.py:285 +#: netbox/dcim/forms/model_forms.py:601 netbox/dcim/forms/model_forms.py:870 #: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:30 #: netbox/dcim/tables/racks.py:107 netbox/dcim/tables/racks.py:199 #: netbox/extras/filtersets.py:718 netbox/extras/forms/filtersets.py:404 @@ -1160,7 +1054,6 @@ msgstr "Interfaz" #: netbox/ipam/forms/filtersets.py:481 netbox/ipam/forms/filtersets.py:549 #: netbox/templates/dcim/device_edit.html:32 #: netbox/templates/dcim/inc/cable_termination.html:12 -#: netbox/templates/dcim/powerpanel.html:26 #: netbox/virtualization/forms/filtersets.py:87 #: netbox/virtualization/forms/filtersets.py:113 #: netbox/wireless/forms/filtersets.py:99 @@ -1271,7 +1164,7 @@ msgstr "Contactos" #: netbox/dcim/tables/devices.py:147 netbox/dcim/tables/sites.py:65 #: netbox/extras/filtersets.py:685 netbox/ipam/forms/bulk_edit.py:404 #: netbox/ipam/forms/filtersets.py:241 netbox/ipam/forms/filtersets.py:466 -#: netbox/ipam/forms/filtersets.py:559 netbox/templates/ipam/vlan.html:16 +#: netbox/ipam/forms/filtersets.py:559 netbox/ipam/ui/panels.py:195 #: netbox/virtualization/forms/filtersets.py:67 #: netbox/virtualization/forms/filtersets.py:147 #: netbox/virtualization/forms/model_forms.py:86 @@ -1303,8 +1196,6 @@ msgstr "Grupo de sitios" #: netbox/circuits/tables/providers.py:61 #: netbox/circuits/tables/virtual_circuits.py:55 #: netbox/circuits/tables/virtual_circuits.py:99 -#: netbox/templates/circuits/circuit.html:22 -#: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Cuenta" @@ -1315,9 +1206,7 @@ msgstr "Lado del término" #: netbox/circuits/forms/filtersets.py:296 netbox/dcim/forms/bulk_edit.py:1540 #: netbox/extras/forms/model_forms.py:706 netbox/ipam/forms/filtersets.py:154 #: netbox/ipam/forms/filtersets.py:642 netbox/ipam/forms/model_forms.py:329 -#: netbox/templates/dcim/macaddress.html:25 -#: netbox/templates/extras/configcontext.html:36 -#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/ipam/ui/panels.py:121 netbox/templates/extras/configcontext.html:36 #: netbox/templates/ipam/vlan_edit.html:42 #: netbox/tenancy/forms/filtersets.py:116 #: netbox/users/forms/model_forms.py:375 @@ -1325,18 +1214,16 @@ msgid "Assignment" msgstr "Asignación" #: netbox/circuits/forms/filtersets.py:311 -#: netbox/circuits/forms/model_forms.py:250 +#: netbox/circuits/forms/model_forms.py:279 #: netbox/circuits/tables/circuits.py:187 netbox/dcim/forms/bulk_edit.py:118 #: netbox/dcim/forms/bulk_import.py:115 netbox/dcim/forms/model_forms.py:135 #: netbox/dcim/tables/sites.py:69 netbox/extras/forms/filtersets.py:600 #: netbox/ipam/filtersets.py:1034 netbox/ipam/forms/bulk_edit.py:423 #: netbox/ipam/forms/bulk_import.py:515 netbox/ipam/forms/model_forms.py:561 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/vlans.py:94 -#: netbox/templates/circuits/circuitgroupassignment.html:22 -#: netbox/templates/dcim/interface.html:359 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:8 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 #: netbox/templates/ipam/panels/fhrp_groups.html:9 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/tenant.html:20 #: netbox/tenancy/forms/bulk_edit.py:44 netbox/tenancy/forms/bulk_import.py:46 #: netbox/tenancy/forms/filtersets.py:63 #: netbox/tenancy/forms/filtersets.py:126 @@ -1362,23 +1249,38 @@ msgstr "Asignación" msgid "Group" msgstr "Grupo" -#: netbox/circuits/forms/model_forms.py:237 -#: netbox/templates/circuits/circuitgroup.html:25 +#: netbox/circuits/forms/model_forms.py:53 +#: netbox/dcim/forms/model_forms.py:147 +msgid "Add ASNs" +msgstr "Agregar ASN" + +#: netbox/circuits/forms/model_forms.py:58 +#: netbox/dcim/forms/model_forms.py:152 +msgid "Remove ASNs" +msgstr "Eliminar ASN" + +#: netbox/circuits/forms/model_forms.py:79 +#: netbox/dcim/forms/model_forms.py:198 +#, python-brace-format +msgid "{count} ASNs currently assigned" +msgstr "{count} ASN actualmente asignados" + +#: netbox/circuits/forms/model_forms.py:266 msgid "Circuit Group" msgstr "Grupo de circuitos" -#: netbox/circuits/forms/model_forms.py:257 +#: netbox/circuits/forms/model_forms.py:286 msgid "Circuit type" msgstr "Tipo de circuito" -#: netbox/circuits/forms/model_forms.py:268 +#: netbox/circuits/forms/model_forms.py:297 msgid "Group Assignment" msgstr "Asignación de grupo" #: netbox/circuits/models/base.py:18 netbox/dcim/models/cables.py:81 -#: netbox/dcim/models/device_component_templates.py:353 -#: netbox/dcim/models/device_component_templates.py:588 -#: netbox/dcim/models/device_component_templates.py:661 +#: netbox/dcim/models/device_component_templates.py:343 +#: netbox/dcim/models/device_component_templates.py:578 +#: netbox/dcim/models/device_component_templates.py:651 #: netbox/dcim/models/device_components.py:573 #: netbox/dcim/models/device_components.py:1156 #: netbox/dcim/models/device_components.py:1204 @@ -1415,8 +1317,8 @@ msgstr "ID de circuito único" #: netbox/dcim/models/modules.py:219 netbox/dcim/models/power.py:95 #: netbox/dcim/models/racks.py:301 netbox/dcim/models/racks.py:685 #: netbox/dcim/models/sites.py:163 netbox/dcim/models/sites.py:287 -#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:528 -#: netbox/ipam/models/ip.py:757 netbox/ipam/models/vlans.py:228 +#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:538 +#: netbox/ipam/models/ip.py:767 netbox/ipam/models/vlans.py:228 #: netbox/virtualization/models/clusters.py:70 #: netbox/virtualization/models/virtualmachines.py:80 #: netbox/vpn/models/l2vpn.py:36 netbox/vpn/models/tunnels.py:38 @@ -1536,7 +1438,7 @@ msgstr "terminación de circuito" msgid "circuit terminations" msgstr "terminaciones de circuitos" -#: netbox/circuits/models/circuits.py:360 +#: netbox/circuits/models/circuits.py:367 msgid "A circuit termination must attach to a terminating object." msgstr "" "La terminación de un circuito se debe conectar a un objeto de terminación." @@ -1641,7 +1543,7 @@ msgid "virtual circuits" msgstr "circuitos virtuales" #: netbox/circuits/models/virtual_circuits.py:135 netbox/ipam/models/ip.py:201 -#: netbox/ipam/models/ip.py:764 netbox/vpn/models/tunnels.py:109 +#: netbox/ipam/models/ip.py:774 netbox/vpn/models/tunnels.py:109 msgid "role" msgstr "papel" @@ -1689,30 +1591,13 @@ msgstr "terminaciones de circuitos virtuales" #: netbox/ipam/tables/vlans.py:33 netbox/ipam/tables/vlans.py:86 #: netbox/ipam/tables/vlans.py:205 netbox/ipam/tables/vrfs.py:26 #: netbox/ipam/tables/vrfs.py:65 netbox/netbox/tables/tables.py:325 -#: netbox/netbox/ui/panels.py:198 netbox/netbox/ui/panels.py:207 -#: netbox/templates/circuits/circuitgroup.html:28 -#: netbox/templates/circuits/circuittype.html:22 -#: netbox/templates/circuits/provideraccount.html:28 -#: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/circuits/virtualcircuittype.html:22 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:17 +#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 #: netbox/templates/core/plugin.html:54 #: netbox/templates/core/rq_worker.html:43 -#: netbox/templates/dcim/consoleport.html:28 -#: netbox/templates/dcim/consoleserverport.html:28 -#: netbox/templates/dcim/devicebay.html:24 -#: netbox/templates/dcim/frontport.html:28 #: netbox/templates/dcim/inc/interface_vlans_table.html:5 #: netbox/templates/dcim/inc/panels/inventory_items.html:18 -#: netbox/templates/dcim/interface.html:38 -#: netbox/templates/dcim/interface.html:240 -#: netbox/templates/dcim/inventoryitem.html:28 -#: netbox/templates/dcim/inventoryitemrole.html:18 -#: netbox/templates/dcim/modulebay.html:30 -#: netbox/templates/dcim/poweroutlet.html:28 -#: netbox/templates/dcim/powerport.html:28 -#: netbox/templates/dcim/rearport.html:28 -#: netbox/templates/dcim/virtualdevicecontext.html:18 +#: netbox/templates/dcim/panels/component_inventory_items.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:64 #: netbox/templates/extras/configcontext.html:13 #: netbox/templates/extras/configcontextprofile.html:13 #: netbox/templates/extras/configtemplate.html:13 @@ -1726,18 +1611,6 @@ msgstr "terminaciones de circuitos virtuales" #: netbox/templates/extras/savedfilter.html:13 #: netbox/templates/extras/tableconfig.html:13 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 -#: netbox/templates/ipam/asnrange.html:15 -#: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 -#: netbox/templates/ipam/role.html:22 -#: netbox/templates/ipam/routetarget.html:13 -#: netbox/templates/ipam/service.html:26 -#: netbox/templates/ipam/servicetemplate.html:15 -#: netbox/templates/ipam/vlan.html:35 netbox/templates/ipam/vlangroup.html:30 -#: netbox/templates/ipam/vlantranslationpolicy.html:14 -#: netbox/templates/tenancy/contact.html:35 -#: netbox/templates/tenancy/contactgroup.html:21 -#: netbox/templates/tenancy/contactrole.html:18 -#: netbox/templates/tenancy/tenantgroup.html:29 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:8 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:8 #: netbox/tenancy/tables/contacts.py:38 netbox/tenancy/tables/contacts.py:53 @@ -1767,17 +1640,13 @@ msgstr "Nombre" #: netbox/circuits/tables/virtual_circuits.py:27 #: netbox/netbox/navigation/menu.py:278 netbox/netbox/navigation/menu.py:282 #: netbox/netbox/navigation/menu.py:284 -#: netbox/templates/circuits/provider.html:57 -#: netbox/templates/circuits/provideraccount.html:48 -#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Circuitos" #: netbox/circuits/tables/circuits.py:53 #: netbox/circuits/tables/virtual_circuits.py:42 -#: netbox/templates/circuits/circuit.html:26 -#: netbox/templates/circuits/virtualcircuit.html:35 -#: netbox/templates/dcim/interface.html:192 +#: netbox/circuits/ui/panels.py:75 netbox/circuits/ui/panels.py:118 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:15 msgid "Circuit ID" msgstr "ID de circuito" @@ -1791,13 +1660,11 @@ msgid "Side Z" msgstr "Lado Z" #: netbox/circuits/tables/circuits.py:78 -#: netbox/templates/circuits/circuit.html:65 msgid "Commit Rate" msgstr "Tasa comprometida" #: netbox/circuits/tables/circuits.py:85 netbox/dcim/forms/filtersets.py:1973 -#: netbox/templates/tenancy/contact.html:94 -#: netbox/tenancy/tables/contacts.py:67 +#: netbox/tenancy/tables/contacts.py:67 netbox/tenancy/views.py:416 msgid "Assignments" msgstr "Asignaciones" @@ -1819,10 +1686,7 @@ msgid "Site Group" msgstr "Grupo de sitios" #: netbox/circuits/tables/circuits.py:145 -#: netbox/templates/circuits/providernetwork.html:17 -#: netbox/templates/circuits/virtualcircuit.html:27 -#: netbox/templates/circuits/virtualcircuittermination.html:30 -#: netbox/templates/dcim/interface.html:188 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:11 msgid "Provider Network" msgstr "Red del proveedor" @@ -1838,8 +1702,7 @@ msgstr "Cantidad de cuentas" msgid "ASN Count" msgstr "Cantidad de ASN" -#: netbox/circuits/tables/virtual_circuits.py:64 -#: netbox/templates/circuits/virtualcircuit.html:87 +#: netbox/circuits/tables/virtual_circuits.py:64 netbox/circuits/views.py:802 #: netbox/vpn/tables/tunnels.py:59 netbox/vpn/views.py:139 #: netbox/vpn/views.py:685 msgid "Terminations" @@ -1868,9 +1731,9 @@ msgstr "Terminaciones" #: netbox/dcim/forms/filtersets.py:1868 netbox/dcim/forms/filtersets.py:1880 #: netbox/dcim/forms/filtersets.py:1895 netbox/dcim/forms/filtersets.py:1937 #: netbox/dcim/forms/filtersets.py:2032 netbox/dcim/forms/filtersets.py:2056 -#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:748 -#: netbox/dcim/forms/model_forms.py:963 netbox/dcim/forms/model_forms.py:1375 -#: netbox/dcim/forms/model_forms.py:1869 netbox/dcim/forms/model_forms.py:1942 +#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:774 +#: netbox/dcim/forms/model_forms.py:989 netbox/dcim/forms/model_forms.py:1401 +#: netbox/dcim/forms/model_forms.py:1895 netbox/dcim/forms/model_forms.py:1968 #: netbox/dcim/forms/object_create.py:207 netbox/dcim/tables/connections.py:23 #: netbox/dcim/tables/connections.py:42 netbox/dcim/tables/connections.py:61 #: netbox/dcim/tables/devices.py:293 netbox/dcim/tables/devices.py:388 @@ -1882,24 +1745,11 @@ msgstr "Terminaciones" #: netbox/dcim/tables/modules.py:82 netbox/extras/forms/filtersets.py:405 #: netbox/ipam/forms/bulk_import.py:309 netbox/ipam/forms/filtersets.py:649 #: netbox/ipam/forms/model_forms.py:325 netbox/ipam/tables/vlans.py:156 -#: netbox/templates/circuits/virtualcircuittermination.html:56 -#: netbox/templates/dcim/consoleport.html:20 -#: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device_edit.html:12 -#: netbox/templates/dcim/devicebay.html:20 -#: netbox/templates/dcim/devicebay.html:48 -#: netbox/templates/dcim/frontport.html:20 -#: netbox/templates/dcim/interface.html:30 -#: netbox/templates/dcim/interface.html:236 -#: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/modulebay.html:20 +#: netbox/templates/dcim/panels/installed_device.html:9 +#: netbox/templates/dcim/panels/interface_connection.html:60 #: netbox/templates/dcim/panels/virtual_chassis_members.html:8 -#: netbox/templates/dcim/poweroutlet.html:20 -#: netbox/templates/dcim/powerport.html:20 -#: netbox/templates/dcim/rearport.html:20 -#: netbox/templates/dcim/virtualchassis.html:55 #: netbox/templates/dcim/virtualchassis_edit.html:63 -#: netbox/templates/dcim/virtualdevicecontext.html:22 #: netbox/templates/wireless/panels/wirelesslink_interface.html:8 #: netbox/virtualization/filtersets.py:160 #: netbox/virtualization/forms/bulk_edit.py:108 @@ -1917,6 +1767,15 @@ msgstr "Terminaciones" msgid "Device" msgstr "Dispositivo" +#: netbox/circuits/ui/panels.py:37 netbox/netbox/navigation/menu.py:301 +msgid "Group Assignments" +msgstr "Tareas grupales" + +#: netbox/circuits/ui/panels.py:46 netbox/ipam/ui/panels.py:36 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Asignar grupo" + #: netbox/core/api/views.py:51 msgid "This user does not have permission to synchronize this data source." msgstr "Este usuario no tiene permiso para sincronizar esta fuente de datos." @@ -1963,14 +1822,14 @@ msgid "Syncing" msgstr "Sincronizando" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:43 netbox/templates/core/job.html:59 +#: netbox/core/tables/jobs.py:43 msgid "Completed" msgstr "Completado" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35 #: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259 -#: netbox/dcim/choices.py:1992 netbox/dcim/choices.py:2082 +#: netbox/dcim/choices.py:2013 netbox/dcim/choices.py:2103 #: netbox/virtualization/choices.py:48 msgid "Failed" msgstr "Con error" @@ -1994,7 +1853,6 @@ msgstr "Pendiente" #: netbox/core/choices.py:55 netbox/core/constants.py:24 #: netbox/core/tables/jobs.py:34 netbox/core/tables/tasks.py:39 -#: netbox/templates/core/job.html:46 msgid "Scheduled" msgstr "Programado" @@ -2033,10 +1891,9 @@ msgstr "30 días" #: netbox/core/choices.py:102 netbox/core/tables/jobs.py:31 #: netbox/core/tables/tasks.py:80 netbox/extras/tables/tables.py:436 #: netbox/extras/tables/tables.py:742 -#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision.html:23 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:42 netbox/templates/core/rq_task.html:16 -#: netbox/templates/core/rq_task.html:73 +#: netbox/templates/core/rq_task.html:16 netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 #: netbox/templates/extras/journalentry.html:22 @@ -2058,7 +1915,6 @@ msgid "Finished" msgstr "Finalizado" #: netbox/core/constants.py:22 netbox/core/tables/jobs.py:40 -#: netbox/templates/core/job.html:55 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Iniciado" @@ -2090,13 +1946,12 @@ msgid "Warning" msgstr "Advertencia" #: netbox/core/constants.py:33 netbox/netbox/tables/columns.py:589 -#: netbox/templates/core/job.html:26 msgid "Error" msgstr "Error" #: netbox/core/data_backends.py:46 netbox/core/tables/plugins.py:54 #: netbox/templates/core/plugin.html:88 -#: netbox/templates/dcim/interface.html:291 +#: netbox/templates/dcim/panels/interface_wireless.html:10 msgid "Local" msgstr "Local" @@ -2155,7 +2010,7 @@ msgid "User name" msgstr "Nombre de usuario" #: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47 -#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2040 +#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2061 #: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386 #: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712 #: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233 @@ -2166,8 +2021,6 @@ msgstr "Nombre de usuario" #: netbox/extras/tables/tables.py:188 netbox/extras/tables/tables.py:319 #: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:520 #: netbox/netbox/preferences.py:46 netbox/netbox/preferences.py:71 -#: netbox/templates/core/datasource.html:42 -#: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 #: netbox/templates/extras/eventrule.html:17 #: netbox/templates/extras/savedfilter.html:25 @@ -2181,7 +2034,7 @@ msgid "Enabled" msgstr "Habilitado" #: netbox/core/forms/bulk_edit.py:30 netbox/core/forms/filtersets.py:54 -#: netbox/core/tables/data.py:31 netbox/templates/core/datasource.html:50 +#: netbox/core/tables/data.py:31 netbox/core/ui/panels.py:12 msgid "Sync interval" msgstr "Intervalo de sincronización" @@ -2195,17 +2048,17 @@ msgstr "Intervalo de sincronización" msgid "Parameters" msgstr "Parámetros" -#: netbox/core/forms/bulk_edit.py:37 netbox/templates/core/datasource.html:72 +#: netbox/core/forms/bulk_edit.py:37 netbox/core/ui/panels.py:22 msgid "Ignore rules" msgstr "Ignorar las reglas" #: netbox/core/forms/filtersets.py:33 netbox/core/forms/model_forms.py:100 -#: netbox/extras/forms/model_forms.py:280 +#: netbox/core/ui/panels.py:7 netbox/extras/forms/model_forms.py:280 #: netbox/extras/forms/model_forms.py:613 #: netbox/extras/forms/model_forms.py:702 #: netbox/extras/forms/model_forms.py:755 netbox/extras/tables/tables.py:230 #: netbox/extras/tables/tables.py:600 netbox/extras/tables/tables.py:630 -#: netbox/extras/tables/tables.py:672 netbox/templates/core/datasource.html:31 +#: netbox/extras/tables/tables.py:672 #: netbox/templates/core/inc/datafile_panel.html:7 #: netbox/templates/extras/configtemplate.html:37 #: netbox/templates/extras/object_render_config.html:19 @@ -2232,15 +2085,14 @@ msgstr "Creación" #: netbox/extras/forms/filtersets.py:580 netbox/extras/tables/tables.py:283 #: netbox/extras/tables/tables.py:350 netbox/extras/tables/tables.py:376 #: netbox/extras/tables/tables.py:395 netbox/extras/tables/tables.py:427 -#: netbox/extras/tables/tables.py:747 netbox/templates/core/job.html:11 -#: netbox/templates/core/objectchange.html:52 +#: netbox/extras/tables/tables.py:747 #: netbox/templates/extras/tableconfig.html:21 #: netbox/tenancy/tables/contacts.py:84 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Tipo de objeto" #: netbox/core/forms/filtersets.py:95 netbox/core/tables/jobs.py:46 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:61 +#: netbox/core/ui/panels.py:65 netbox/templates/core/rq_task.html:61 msgid "Queue" msgstr "Fila" @@ -2277,11 +2129,10 @@ msgid "Completed before" msgstr "Completado antes" #: netbox/core/forms/filtersets.py:141 netbox/core/forms/filtersets.py:170 -#: netbox/dcim/forms/bulk_edit.py:458 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/model_forms.py:336 netbox/extras/forms/filtersets.py:575 -#: netbox/extras/forms/filtersets.py:595 netbox/extras/tables/tables.py:403 -#: netbox/extras/tables/tables.py:443 -#: netbox/templates/core/objectchange.html:36 +#: netbox/core/ui/panels.py:73 netbox/dcim/forms/bulk_edit.py:458 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:362 +#: netbox/extras/forms/filtersets.py:575 netbox/extras/forms/filtersets.py:595 +#: netbox/extras/tables/tables.py:403 netbox/extras/tables/tables.py:443 #: netbox/templates/extras/savedfilter.html:21 #: netbox/templates/extras/tableconfig.html:29 #: netbox/templates/inc/user_menu.html:31 netbox/users/filtersets.py:135 @@ -2294,7 +2145,6 @@ msgstr "Usuario" #: netbox/core/forms/filtersets.py:149 netbox/core/tables/change_logging.py:16 #: netbox/core/tables/jobs.py:72 netbox/extras/tables/tables.py:785 #: netbox/extras/tables/tables.py:840 -#: netbox/templates/core/objectchange.html:32 msgid "Time" msgstr "Hora" @@ -2308,21 +2158,19 @@ msgstr "Antes" #: netbox/core/forms/filtersets.py:163 netbox/core/tables/change_logging.py:30 #: netbox/extras/forms/model_forms.py:490 -#: netbox/templates/core/objectchange.html:46 #: netbox/templates/extras/eventrule.html:71 msgid "Action" msgstr "Acción" #: netbox/core/forms/model_forms.py:55 netbox/core/tables/data.py:57 -#: netbox/templates/core/datafile.html:21 #: netbox/templates/extras/report/base.html:33 #: netbox/templates/extras/script/base.html:32 msgid "Source" msgstr "Fuente" #: netbox/core/forms/model_forms.py:57 -#: netbox/templates/core/datasource.html:14 -#: netbox/templates/core/datasource.html:20 +#: netbox/templates/core/datasource.html:10 +#: netbox/templates/core/datasource.html:16 #: netbox/utilities/templatetags/buttons.py:156 msgid "Sync" msgstr "Sincronizar" @@ -2350,7 +2198,7 @@ msgstr "" msgid "Rack Elevations" msgstr "Elevaciones de rack" -#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1911 +#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1932 #: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340 #: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144 #: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320 @@ -2494,13 +2342,13 @@ msgid "Config revision #{id}" msgstr "Revisión de configuración #{id}" #: netbox/core/models/data.py:45 netbox/dcim/models/cables.py:50 -#: netbox/dcim/models/device_component_templates.py:210 -#: netbox/dcim/models/device_component_templates.py:245 -#: netbox/dcim/models/device_component_templates.py:281 -#: netbox/dcim/models/device_component_templates.py:346 -#: netbox/dcim/models/device_component_templates.py:437 -#: netbox/dcim/models/device_component_templates.py:583 -#: netbox/dcim/models/device_component_templates.py:656 +#: netbox/dcim/models/device_component_templates.py:200 +#: netbox/dcim/models/device_component_templates.py:235 +#: netbox/dcim/models/device_component_templates.py:271 +#: netbox/dcim/models/device_component_templates.py:336 +#: netbox/dcim/models/device_component_templates.py:427 +#: netbox/dcim/models/device_component_templates.py:573 +#: netbox/dcim/models/device_component_templates.py:646 #: netbox/dcim/models/device_components.py:370 #: netbox/dcim/models/device_components.py:397 #: netbox/dcim/models/device_components.py:428 @@ -2514,15 +2362,14 @@ msgstr "Revisión de configuración #{id}" msgid "type" msgstr "tipo" -#: netbox/core/models/data.py:50 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:183 netbox/extras/tables/tables.py:850 -#: netbox/templates/core/datasource.html:62 -#: netbox/templates/core/plugin.html:66 +#: netbox/core/models/data.py:50 netbox/core/ui/panels.py:17 +#: netbox/extras/choices.py:37 netbox/extras/models/models.py:183 +#: netbox/extras/tables/tables.py:850 netbox/templates/core/plugin.html:66 msgid "URL" msgstr "URL" #: netbox/core/models/data.py:60 -#: netbox/dcim/models/device_component_templates.py:442 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:605 #: netbox/extras/models/models.py:81 netbox/extras/models/models.py:319 #: netbox/extras/models/models.py:507 netbox/extras/models/models.py:586 @@ -2598,7 +2445,7 @@ msgstr "ruta" msgid "File path relative to the data source's root" msgstr "Ruta del archivo relativa a la raíz de la fuente de datos" -#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:509 +#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:519 msgid "size" msgstr "tamaño" @@ -2750,27 +2597,24 @@ msgid "Full Name" msgstr "Nombre completo" #: netbox/core/tables/change_logging.py:38 netbox/core/tables/jobs.py:23 -#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:286 -#: netbox/extras/tables/tables.py:379 netbox/extras/tables/tables.py:398 -#: netbox/extras/tables/tables.py:430 netbox/extras/tables/tables.py:514 -#: netbox/extras/tables/tables.py:583 netbox/extras/tables/tables.py:752 -#: netbox/extras/tables/tables.py:793 netbox/extras/tables/tables.py:847 -#: netbox/netbox/tables/tables.py:343 -#: netbox/templates/core/objectchange.html:58 +#: netbox/core/ui/panels.py:83 netbox/extras/choices.py:41 +#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:379 +#: netbox/extras/tables/tables.py:398 netbox/extras/tables/tables.py:430 +#: netbox/extras/tables/tables.py:514 netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:752 netbox/extras/tables/tables.py:793 +#: netbox/extras/tables/tables.py:847 netbox/netbox/tables/tables.py:343 #: netbox/templates/extras/eventrule.html:78 #: netbox/templates/extras/journalentry.html:18 #: netbox/tenancy/tables/contacts.py:87 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "Objeto" -#: netbox/core/tables/change_logging.py:43 -#: netbox/templates/core/objectchange.html:74 +#: netbox/core/tables/change_logging.py:43 netbox/core/ui/panels.py:89 msgid "Request ID" msgstr "ID de solicitud" #: netbox/core/tables/change_logging.py:46 netbox/core/tables/jobs.py:79 #: netbox/extras/tables/tables.py:796 netbox/extras/tables/tables.py:853 -#: netbox/templates/core/objectchange.html:68 msgid "Message" msgstr "Mensaje" @@ -2783,11 +2627,11 @@ msgstr "Está activo" msgid "Last Synced" msgstr "Última sincronización" -#: netbox/core/tables/data.py:37 netbox/templates/core/datasource.html:118 +#: netbox/core/tables/data.py:37 msgid "Files" msgstr "Expedientes" -#: netbox/core/tables/data.py:61 netbox/templates/core/datafile.html:25 +#: netbox/core/tables/data.py:61 msgid "Path" msgstr "Ruta" @@ -2811,7 +2655,7 @@ msgstr "ID" msgid "Interval" msgstr "Intervalo" -#: netbox/core/tables/jobs.py:49 +#: netbox/core/tables/jobs.py:49 netbox/core/views.py:255 msgid "Log Entries" msgstr "Entradas de registro" @@ -2831,7 +2675,7 @@ msgstr "No hay entradas de registro" msgid "Version" msgstr "Versión" -#: netbox/core/tables/plugins.py:21 netbox/templates/core/datafile.html:32 +#: netbox/core/tables/plugins.py:21 msgid "Last Updated" msgstr "Última actualización" @@ -2927,7 +2771,61 @@ msgstr "PID" msgid "No workers found" msgstr "No se encontró ningún proceso" -#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:447 +#: netbox/core/ui/panels.py:13 +msgid "Last synced" +msgstr "Última sincronización" + +#: netbox/core/ui/panels.py:29 +msgid "Backend" +msgstr "Backend" + +#: netbox/core/ui/panels.py:33 netbox/extras/tables/tables.py:234 +#: netbox/extras/tables/tables.py:604 netbox/extras/tables/tables.py:634 +#: netbox/extras/tables/tables.py:676 +#: netbox/templates/core/inc/datafile_panel.html:4 +#: netbox/templates/core/inc/datafile_panel.html:17 +#: netbox/templates/extras/configtemplate.html:47 +#: netbox/templates/extras/object_render_config.html:23 +#: netbox/templates/generic/bulk_import.html:35 +msgid "Data File" +msgstr "Archivo de datos" + +#: netbox/core/ui/panels.py:38 +msgid "SHA256 hash" +msgstr "Hash SHA256" + +#: netbox/core/ui/panels.py:43 +msgid "Content" +msgstr "Contenido" + +#: netbox/core/ui/panels.py:47 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 +msgid "Job" +msgstr "Trabajo" + +#: netbox/core/ui/panels.py:50 netbox/core/ui/panels.py:79 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 +#: netbox/extras/forms/filtersets.py:335 +#: netbox/extras/forms/model_forms.py:338 +#: netbox/extras/forms/model_forms.py:398 +#: netbox/extras/forms/model_forms.py:435 +#: netbox/tenancy/forms/filtersets.py:121 +msgid "Object type" +msgstr "Tipo de objeto" + +#: netbox/core/ui/panels.py:56 +msgid "Created by" +msgstr "Creado por" + +#: netbox/core/ui/panels.py:60 +msgid "Scheduling" +msgstr "Programación" + +#: netbox/core/ui/panels.py:69 netbox/users/ui/panels.py:53 +msgid "Change" +msgstr "Cambiar" + +#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "No se encontró el trabajo {job_id} " @@ -2937,55 +2835,63 @@ msgstr "No se encontró el trabajo {job_id} " msgid "Job {id} not found." msgstr "No se encontró el trabajo {id}." -#: netbox/core/views.py:95 +#: netbox/core/views.py:125 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Trabajo pendiente {id} sincronizar {datasource}" -#: netbox/core/views.py:199 netbox/templates/extras/htmx/script_result.html:43 +#: netbox/core/views.py:237 netbox/extras/forms/filtersets.py:179 +#: netbox/extras/forms/filtersets.py:380 netbox/extras/forms/filtersets.py:403 +#: netbox/extras/forms/filtersets.py:499 +#: netbox/extras/forms/model_forms.py:696 +#: netbox/templates/extras/eventrule.html:84 +msgid "Data" +msgstr "Datos" + +#: netbox/core/views.py:248 netbox/templates/extras/htmx/script_result.html:43 msgid "Log" msgstr "Registro" -#: netbox/core/views.py:383 +#: netbox/core/views.py:467 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Revisión de la configuración restaurada #{id}" -#: netbox/core/views.py:486 +#: netbox/core/views.py:570 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Trabajo {id} se ha eliminado." -#: netbox/core/views.py:488 +#: netbox/core/views.py:572 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Error al eliminar el trabajo {id}: {error}" -#: netbox/core/views.py:497 +#: netbox/core/views.py:581 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Trabajo {id} se ha vuelto a poner como pendiente." -#: netbox/core/views.py:506 +#: netbox/core/views.py:590 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Trabajo {id} ha sido puesto como pendiente." -#: netbox/core/views.py:515 +#: netbox/core/views.py:599 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Trabajo {id} se ha detenido." -#: netbox/core/views.py:517 +#: netbox/core/views.py:601 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Error al detener el trabajo {id}" -#: netbox/core/views.py:671 +#: netbox/core/views.py:755 msgid "Plugins catalog could not be loaded" msgstr "No se pudo cargar el catálogo de complementos" -#: netbox/core/views.py:707 +#: netbox/core/views.py:791 #, python-brace-format msgid "Plugin {name} not found" msgstr "No se encontró el complemento {name}." @@ -3008,7 +2914,7 @@ msgstr "El modo de interfaz no admite las VLAN etiquetadas" msgid "Position (U)" msgstr "Posición (U)" -#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:47 +#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:49 msgid "Facility ID" msgstr "ID de instalación" @@ -3035,8 +2941,8 @@ msgid "Staging" msgstr "Entorno de pruebas" #: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208 -#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1934 -#: netbox/dcim/choices.py:2083 netbox/virtualization/choices.py:23 +#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1955 +#: netbox/dcim/choices.py:2104 netbox/virtualization/choices.py:23 #: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282 msgid "Decommissioning" msgstr "Desmantelamiento" @@ -3102,7 +3008,7 @@ msgstr "Obsoleto" msgid "Millimeters" msgstr "Milímetros" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1956 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1977 msgid "Inches" msgstr "Pulgadas" @@ -3130,21 +3036,17 @@ msgstr "Obsoleto" #: netbox/dcim/forms/bulk_import.py:1211 netbox/dcim/forms/filtersets.py:265 #: netbox/dcim/forms/filtersets.py:780 netbox/dcim/forms/filtersets.py:796 #: netbox/dcim/forms/model_forms.py:93 netbox/dcim/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:188 netbox/dcim/forms/model_forms.py:514 -#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1709 +#: netbox/dcim/forms/model_forms.py:214 netbox/dcim/forms/model_forms.py:540 +#: netbox/dcim/forms/model_forms.py:561 netbox/dcim/forms/model_forms.py:1252 +#: netbox/dcim/forms/model_forms.py:1735 #: netbox/dcim/forms/object_import.py:177 netbox/dcim/tables/devices.py:702 #: netbox/dcim/tables/devices.py:737 netbox/dcim/tables/devices.py:965 #: netbox/dcim/tables/devices.py:1052 netbox/dcim/tables/devices.py:1205 #: netbox/ipam/forms/bulk_import.py:601 netbox/ipam/forms/model_forms.py:758 #: netbox/ipam/tables/fhrp.py:56 netbox/ipam/tables/ip.py:329 #: netbox/ipam/tables/services.py:42 netbox/netbox/tables/tables.py:329 -#: netbox/netbox/ui/panels.py:206 netbox/templates/dcim/interface.html:113 -#: netbox/templates/ipam/service.html:30 -#: netbox/templates/tenancy/contactgroup.html:29 -#: netbox/templates/tenancy/tenantgroup.html:37 -#: netbox/tenancy/forms/bulk_edit.py:33 netbox/tenancy/forms/bulk_edit.py:62 -#: netbox/tenancy/forms/bulk_import.py:31 +#: netbox/netbox/ui/panels.py:207 netbox/tenancy/forms/bulk_edit.py:33 +#: netbox/tenancy/forms/bulk_edit.py:62 netbox/tenancy/forms/bulk_import.py:31 #: netbox/tenancy/forms/bulk_import.py:64 #: netbox/tenancy/forms/model_forms.py:26 #: netbox/tenancy/forms/model_forms.py:67 @@ -3178,7 +3080,7 @@ msgid "Rear" msgstr "Vista posterior" #: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258 -#: netbox/dcim/choices.py:2081 netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:2102 netbox/virtualization/choices.py:47 msgid "Staged" msgstr "Preparado" @@ -3211,7 +3113,7 @@ msgid "Top to bottom" msgstr "De arriba a abajo" #: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280 -#: netbox/dcim/choices.py:1566 +#: netbox/dcim/choices.py:1587 msgid "Passive" msgstr "Pasivo" @@ -3240,8 +3142,8 @@ msgid "Proprietary" msgstr "Proprietario" #: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853 -#: netbox/dcim/choices.py:1478 netbox/dcim/choices.py:1480 -#: netbox/dcim/choices.py:1716 netbox/dcim/choices.py:1718 +#: netbox/dcim/choices.py:1499 netbox/dcim/choices.py:1501 +#: netbox/dcim/choices.py:1737 netbox/dcim/choices.py:1739 #: netbox/netbox/navigation/menu.py:212 msgid "Other" msgstr "Otros" @@ -3254,348 +3156,350 @@ msgstr "ITA/Internacional" msgid "Physical" msgstr "Físico" -#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1153 +#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1162 msgid "Virtual" msgstr "Virtual" -#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1355 +#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 -#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125 -#: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150 -#: netbox/netbox/navigation/menu.py:154 -#: netbox/templates/dcim/interface.html:285 +#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1151 +#: netbox/dcim/forms/model_forms.py:1615 netbox/dcim/ui/panels.py:546 +#: netbox/netbox/navigation/menu.py:150 netbox/netbox/navigation/menu.py:154 msgid "Wireless" msgstr "inalámbrico" -#: netbox/dcim/choices.py:1151 +#: netbox/dcim/choices.py:1160 msgid "Virtual interfaces" msgstr "Interfaces virtuales" -#: netbox/dcim/choices.py:1154 netbox/dcim/forms/bulk_edit.py:1399 -#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107 -#: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:117 +#: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 +#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1133 +#: netbox/dcim/tables/devices.py:741 #: netbox/virtualization/forms/bulk_edit.py:177 #: netbox/virtualization/forms/bulk_import.py:171 #: netbox/virtualization/tables/virtualmachines.py:137 msgid "Bridge" msgstr "Puente" -#: netbox/dcim/choices.py:1155 +#: netbox/dcim/choices.py:1164 msgid "Link Aggregation Group (LAG)" msgstr "Grupo de agregación de enlaces (LAG)" -#: netbox/dcim/choices.py:1159 +#: netbox/dcim/choices.py:1168 msgid "FastEthernet (100 Mbps)" msgstr "Fast Ethernet (100 Mbps)" -#: netbox/dcim/choices.py:1168 +#: netbox/dcim/choices.py:1177 msgid "GigabitEthernet (1 Gbps)" msgstr "Gigabit Ethernet (1 Gbps)" -#: netbox/dcim/choices.py:1186 +#: netbox/dcim/choices.py:1195 msgid "2.5/5 Gbps Ethernet" msgstr "Ethernet de 2,5/5 Gbps" -#: netbox/dcim/choices.py:1193 +#: netbox/dcim/choices.py:1202 msgid "10 Gbps Ethernet" msgstr "Ethernet de 10 Gbps" -#: netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1218 msgid "25 Gbps Ethernet" msgstr "Ethernet de 25 Gbps" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1228 msgid "40 Gbps Ethernet" msgstr "Ethernet de 40 Gbps" -#: netbox/dcim/choices.py:1230 +#: netbox/dcim/choices.py:1239 msgid "50 Gbps Ethernet" msgstr "Ethernet de 50 Gbps" -#: netbox/dcim/choices.py:1240 +#: netbox/dcim/choices.py:1249 msgid "100 Gbps Ethernet" msgstr "Ethernet de 100 Gbps" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1270 msgid "200 Gbps Ethernet" msgstr "Ethernet de 200 Gbps" -#: netbox/dcim/choices.py:1275 +#: netbox/dcim/choices.py:1284 msgid "400 Gbps Ethernet" msgstr "Ethernet de 400 Gbps" -#: netbox/dcim/choices.py:1293 +#: netbox/dcim/choices.py:1302 msgid "800 Gbps Ethernet" msgstr "Ethernet de 800 Gbps" -#: netbox/dcim/choices.py:1302 +#: netbox/dcim/choices.py:1311 +msgid "1.6 Tbps Ethernet" +msgstr "Ethernet de 1,6 Tbps" + +#: netbox/dcim/choices.py:1319 msgid "Pluggable transceivers" msgstr "Transceivers" -#: netbox/dcim/choices.py:1339 +#: netbox/dcim/choices.py:1359 msgid "Backplane Ethernet" msgstr "Ethernet de placa base" -#: netbox/dcim/choices.py:1371 +#: netbox/dcim/choices.py:1392 msgid "Cellular" msgstr "Celular" -#: netbox/dcim/choices.py:1423 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/choices.py:1444 netbox/dcim/forms/filtersets.py:425 #: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112 #: netbox/dcim/forms/filtersets.py:1910 -#: netbox/templates/dcim/inventoryitem.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:66 msgid "Serial" msgstr "Serial" -#: netbox/dcim/choices.py:1438 +#: netbox/dcim/choices.py:1459 msgid "Coaxial" msgstr "Coaxial" -#: netbox/dcim/choices.py:1459 +#: netbox/dcim/choices.py:1480 msgid "Stacking" msgstr "Apilamiento" -#: netbox/dcim/choices.py:1511 +#: netbox/dcim/choices.py:1532 msgid "Half" msgstr "Half" -#: netbox/dcim/choices.py:1512 +#: netbox/dcim/choices.py:1533 msgid "Full" msgstr "Full" -#: netbox/dcim/choices.py:1513 netbox/netbox/preferences.py:32 +#: netbox/dcim/choices.py:1534 netbox/netbox/preferences.py:32 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Auto" -#: netbox/dcim/choices.py:1525 +#: netbox/dcim/choices.py:1546 msgid "Access" msgstr "Acceso" -#: netbox/dcim/choices.py:1526 netbox/ipam/tables/vlans.py:148 +#: netbox/dcim/choices.py:1547 netbox/ipam/tables/vlans.py:148 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Etiquetado" -#: netbox/dcim/choices.py:1527 +#: netbox/dcim/choices.py:1548 msgid "Tagged (All)" msgstr "Etiquetado (Todos)" -#: netbox/dcim/choices.py:1528 netbox/templates/ipam/vlan_edit.html:26 +#: netbox/dcim/choices.py:1549 netbox/templates/ipam/vlan_edit.html:26 msgid "Q-in-Q (802.1ad)" msgstr "Q-in-Q (802.1ad)" -#: netbox/dcim/choices.py:1557 +#: netbox/dcim/choices.py:1578 msgid "IEEE Standard" msgstr "Estándar IEEE" -#: netbox/dcim/choices.py:1568 +#: netbox/dcim/choices.py:1589 msgid "Passive 24V (2-pair)" msgstr "Pasivo 24 V (2 pares)" -#: netbox/dcim/choices.py:1569 +#: netbox/dcim/choices.py:1590 msgid "Passive 24V (4-pair)" msgstr "Pasivo de 24 V (4 pares)" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1591 msgid "Passive 48V (2-pair)" msgstr "Pasivo 48 V (2 pares)" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1592 msgid "Passive 48V (4-pair)" msgstr "Pasivo de 48 V (4 pares)" -#: netbox/dcim/choices.py:1644 +#: netbox/dcim/choices.py:1665 msgid "Copper" msgstr "Cobre" -#: netbox/dcim/choices.py:1667 +#: netbox/dcim/choices.py:1688 msgid "Fiber Optic" msgstr "Fibra óptica" -#: netbox/dcim/choices.py:1703 netbox/dcim/choices.py:1917 +#: netbox/dcim/choices.py:1724 netbox/dcim/choices.py:1938 msgid "USB" msgstr "USB" -#: netbox/dcim/choices.py:1759 +#: netbox/dcim/choices.py:1780 msgid "Single" msgstr "Individual" -#: netbox/dcim/choices.py:1761 +#: netbox/dcim/choices.py:1782 msgid "1C1P" msgstr "1 Conector, 1 Puerto" -#: netbox/dcim/choices.py:1762 +#: netbox/dcim/choices.py:1783 msgid "1C2P" msgstr "1 Conector, 2 Puertos" -#: netbox/dcim/choices.py:1763 +#: netbox/dcim/choices.py:1784 msgid "1C4P" msgstr "1 Conector, 4 Puertos" -#: netbox/dcim/choices.py:1764 +#: netbox/dcim/choices.py:1785 msgid "1C6P" msgstr "1 Conector, 6 Puertos" -#: netbox/dcim/choices.py:1765 +#: netbox/dcim/choices.py:1786 msgid "1C8P" msgstr "1 Conector, 8 Puertos" -#: netbox/dcim/choices.py:1766 +#: netbox/dcim/choices.py:1787 msgid "1C12P" msgstr "1 Conector, 12 Puertos" -#: netbox/dcim/choices.py:1767 +#: netbox/dcim/choices.py:1788 msgid "1C16P" msgstr "1 Conector, 16 Puertos" -#: netbox/dcim/choices.py:1771 +#: netbox/dcim/choices.py:1792 msgid "Trunk" msgstr "Troncal" -#: netbox/dcim/choices.py:1773 +#: netbox/dcim/choices.py:1794 msgid "2C1P trunk" msgstr "Troncal 2C1P" -#: netbox/dcim/choices.py:1774 +#: netbox/dcim/choices.py:1795 msgid "2C2P trunk" msgstr "Troncal 2C2P" -#: netbox/dcim/choices.py:1775 +#: netbox/dcim/choices.py:1796 msgid "2C4P trunk" msgstr "Troncal 2C4P" -#: netbox/dcim/choices.py:1776 +#: netbox/dcim/choices.py:1797 msgid "2C4P trunk (shuffle)" msgstr "Troncal 2C4P (redistribución)" -#: netbox/dcim/choices.py:1777 +#: netbox/dcim/choices.py:1798 msgid "2C6P trunk" msgstr "Troncal 2C6P" -#: netbox/dcim/choices.py:1778 +#: netbox/dcim/choices.py:1799 msgid "2C8P trunk" msgstr "Troncal 28CP" -#: netbox/dcim/choices.py:1779 +#: netbox/dcim/choices.py:1800 msgid "2C12P trunk" msgstr "Troncal 2C12P" -#: netbox/dcim/choices.py:1780 +#: netbox/dcim/choices.py:1801 msgid "4C1P trunk" msgstr "Troncal 4C1P" -#: netbox/dcim/choices.py:1781 +#: netbox/dcim/choices.py:1802 msgid "4C2P trunk" msgstr "Troncal 4CP2" -#: netbox/dcim/choices.py:1782 +#: netbox/dcim/choices.py:1803 msgid "4C4P trunk" msgstr "Troncal 4C4P" -#: netbox/dcim/choices.py:1783 +#: netbox/dcim/choices.py:1804 msgid "4C4P trunk (shuffle)" msgstr "Troncal 4C4P (redistribución)" -#: netbox/dcim/choices.py:1784 +#: netbox/dcim/choices.py:1805 msgid "4C6P trunk" msgstr "Troncal 4C6P" -#: netbox/dcim/choices.py:1785 +#: netbox/dcim/choices.py:1806 msgid "4C8P trunk" msgstr "Troncal 48P" -#: netbox/dcim/choices.py:1786 +#: netbox/dcim/choices.py:1807 msgid "8C4P trunk" msgstr "Troncal 8C4P" -#: netbox/dcim/choices.py:1790 +#: netbox/dcim/choices.py:1811 msgid "Breakout" msgstr "Desagregación " -#: netbox/dcim/choices.py:1792 +#: netbox/dcim/choices.py:1813 msgid "1C4P:4C1P breakout" msgstr "1C4P: desagregación 4C1P" -#: netbox/dcim/choices.py:1793 +#: netbox/dcim/choices.py:1814 msgid "1C6P:6C1P breakout" msgstr "1C6P: desagregación 6C1P" -#: netbox/dcim/choices.py:1794 +#: netbox/dcim/choices.py:1815 msgid "2C4P:8C1P breakout (shuffle)" msgstr "2C4P: desagregación 8C1P (redistribución)" -#: netbox/dcim/choices.py:1852 +#: netbox/dcim/choices.py:1873 msgid "Copper - Twisted Pair (UTP/STP)" msgstr "Cobre - Par trenzado (UTP/STP)" -#: netbox/dcim/choices.py:1866 +#: netbox/dcim/choices.py:1887 msgid "Copper - Twinax (DAC)" msgstr "Cobre - Twinax (DAC)" -#: netbox/dcim/choices.py:1873 +#: netbox/dcim/choices.py:1894 msgid "Copper - Coaxial" msgstr "Cobre - Coaxial" -#: netbox/dcim/choices.py:1888 +#: netbox/dcim/choices.py:1909 msgid "Fiber - Multimode" msgstr "Fibra-Multimodo" -#: netbox/dcim/choices.py:1899 +#: netbox/dcim/choices.py:1920 msgid "Fiber - Single-mode" msgstr "Fibra-Monomodo" -#: netbox/dcim/choices.py:1907 +#: netbox/dcim/choices.py:1928 msgid "Fiber - Other" msgstr "Fibra - Otras" -#: netbox/dcim/choices.py:1932 netbox/dcim/forms/filtersets.py:1402 +#: netbox/dcim/choices.py:1953 netbox/dcim/forms/filtersets.py:1402 msgid "Connected" msgstr "Conectado" -#: netbox/dcim/choices.py:1951 netbox/netbox/choices.py:177 +#: netbox/dcim/choices.py:1972 netbox/netbox/choices.py:177 msgid "Kilometers" msgstr "Kilómetros" -#: netbox/dcim/choices.py:1952 netbox/netbox/choices.py:178 +#: netbox/dcim/choices.py:1973 netbox/netbox/choices.py:178 #: netbox/templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Metros" -#: netbox/dcim/choices.py:1953 +#: netbox/dcim/choices.py:1974 msgid "Centimeters" msgstr "Centímetros" -#: netbox/dcim/choices.py:1954 netbox/netbox/choices.py:179 +#: netbox/dcim/choices.py:1975 netbox/netbox/choices.py:179 msgid "Miles" msgstr "Millas" -#: netbox/dcim/choices.py:1955 netbox/netbox/choices.py:180 +#: netbox/dcim/choices.py:1976 netbox/netbox/choices.py:180 #: netbox/templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Pies" -#: netbox/dcim/choices.py:2003 +#: netbox/dcim/choices.py:2024 msgid "Redundant" msgstr "Redundante" -#: netbox/dcim/choices.py:2024 +#: netbox/dcim/choices.py:2045 msgid "Single phase" msgstr "Monofásico" -#: netbox/dcim/choices.py:2025 +#: netbox/dcim/choices.py:2046 msgid "Three-phase" msgstr "Trifásico" -#: netbox/dcim/choices.py:2041 netbox/extras/choices.py:53 +#: netbox/dcim/choices.py:2062 netbox/extras/choices.py:53 #: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70 #: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Discapacitado" -#: netbox/dcim/choices.py:2042 +#: netbox/dcim/choices.py:2063 msgid "Faulty" msgstr "Defectuoso" @@ -3877,8 +3781,9 @@ msgstr "Profundidad total" #: netbox/dcim/filtersets.py:1323 netbox/dcim/forms/filtersets.py:920 #: netbox/dcim/forms/filtersets.py:1634 netbox/dcim/forms/filtersets.py:1979 -#: netbox/dcim/forms/model_forms.py:1915 netbox/dcim/models/devices.py:1313 -#: netbox/dcim/models/devices.py:1336 netbox/virtualization/filtersets.py:230 +#: netbox/dcim/forms/model_forms.py:1941 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1336 netbox/dcim/ui/panels.py:366 +#: netbox/dcim/ui/panels.py:504 netbox/virtualization/filtersets.py:230 #: netbox/virtualization/filtersets.py:318 #: netbox/virtualization/forms/filtersets.py:191 #: netbox/virtualization/forms/filtersets.py:245 @@ -3966,7 +3871,6 @@ msgstr "Chasis virtual (ID)" #: netbox/dcim/forms/object_create.py:329 netbox/dcim/tables/devices.py:215 #: netbox/netbox/navigation/menu.py:82 #: netbox/templates/dcim/device_edit.html:95 -#: netbox/templates/dcim/virtualchassis.html:10 #: netbox/templates/dcim/virtualchassis_edit.html:28 msgid "Virtual Chassis" msgstr "Chasis virtual" @@ -4026,7 +3930,7 @@ msgstr "Está asignado" msgid "Is primary" msgstr "Es primaria" -#: netbox/dcim/filtersets.py:2060 netbox/templates/dcim/interface.html:81 +#: netbox/dcim/filtersets.py:2060 #: netbox/virtualization/forms/model_forms.py:386 #: netbox/virtualization/ui/panels.py:62 msgid "802.1Q Mode" @@ -4043,27 +3947,25 @@ msgstr "VID asignado" #: netbox/dcim/filtersets.py:2074 netbox/dcim/forms/bulk_edit.py:1512 #: netbox/dcim/forms/bulk_import.py:1034 netbox/dcim/forms/filtersets.py:1687 -#: netbox/dcim/forms/model_forms.py:1555 +#: netbox/dcim/forms/model_forms.py:1581 #: netbox/dcim/models/device_components.py:867 -#: netbox/dcim/tables/devices.py:667 netbox/ipam/filtersets.py:360 -#: netbox/ipam/filtersets.py:372 netbox/ipam/filtersets.py:511 -#: netbox/ipam/filtersets.py:618 netbox/ipam/filtersets.py:630 -#: netbox/ipam/forms/bulk_edit.py:190 netbox/ipam/forms/bulk_edit.py:240 -#: netbox/ipam/forms/bulk_edit.py:281 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:248 netbox/ipam/forms/bulk_import.py:284 -#: netbox/ipam/forms/filtersets.py:70 netbox/ipam/forms/filtersets.py:194 -#: netbox/ipam/forms/filtersets.py:348 netbox/ipam/forms/model_forms.py:68 -#: netbox/ipam/forms/model_forms.py:203 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:303 netbox/ipam/forms/model_forms.py:466 -#: netbox/ipam/forms/model_forms.py:480 netbox/ipam/forms/model_forms.py:494 -#: netbox/ipam/models/ip.py:224 netbox/ipam/models/ip.py:518 -#: netbox/ipam/models/ip.py:747 netbox/ipam/models/vrfs.py:61 -#: netbox/ipam/tables/ip.py:187 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:311 netbox/ipam/tables/ip.py:413 -#: netbox/templates/dcim/interface.html:170 -#: netbox/templates/ipam/ipaddress.html:18 -#: netbox/templates/ipam/iprange.html:47 netbox/templates/ipam/prefix.html:19 -#: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 +#: netbox/dcim/tables/devices.py:667 netbox/dcim/ui/panels.py:507 +#: netbox/ipam/filtersets.py:360 netbox/ipam/filtersets.py:372 +#: netbox/ipam/filtersets.py:511 netbox/ipam/filtersets.py:618 +#: netbox/ipam/filtersets.py:630 netbox/ipam/forms/bulk_edit.py:190 +#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:281 +#: netbox/ipam/forms/bulk_import.py:163 netbox/ipam/forms/bulk_import.py:248 +#: netbox/ipam/forms/bulk_import.py:284 netbox/ipam/forms/filtersets.py:70 +#: netbox/ipam/forms/filtersets.py:194 netbox/ipam/forms/filtersets.py:348 +#: netbox/ipam/forms/model_forms.py:68 netbox/ipam/forms/model_forms.py:203 +#: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:303 +#: netbox/ipam/forms/model_forms.py:466 netbox/ipam/forms/model_forms.py:480 +#: netbox/ipam/forms/model_forms.py:494 netbox/ipam/models/ip.py:224 +#: netbox/ipam/models/ip.py:528 netbox/ipam/models/ip.py:757 +#: netbox/ipam/models/vrfs.py:61 netbox/ipam/tables/ip.py:187 +#: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:311 +#: netbox/ipam/tables/ip.py:413 netbox/ipam/ui/panels.py:102 +#: netbox/ipam/ui/panels.py:111 netbox/ipam/ui/panels.py:139 #: netbox/virtualization/forms/bulk_edit.py:226 #: netbox/virtualization/forms/bulk_import.py:218 #: netbox/virtualization/forms/filtersets.py:250 @@ -4086,9 +3988,9 @@ msgid "L2VPN (ID)" msgstr "L2VPN (ID)" #: netbox/dcim/filtersets.py:2092 netbox/dcim/forms/filtersets.py:1692 -#: netbox/dcim/tables/devices.py:607 netbox/ipam/filtersets.py:1087 -#: netbox/ipam/forms/filtersets.py:613 netbox/ipam/tables/vlans.py:116 -#: netbox/templates/dcim/interface.html:104 netbox/templates/ipam/vlan.html:82 +#: netbox/dcim/tables/devices.py:607 netbox/dcim/ui/panels.py:487 +#: netbox/ipam/filtersets.py:1087 netbox/ipam/forms/filtersets.py:613 +#: netbox/ipam/tables/vlans.py:116 netbox/ipam/ui/panels.py:206 #: netbox/virtualization/forms/filtersets.py:255 #: netbox/vpn/forms/bulk_import.py:285 netbox/vpn/forms/filtersets.py:268 #: netbox/vpn/forms/model_forms.py:407 netbox/vpn/forms/model_forms.py:425 @@ -4102,10 +4004,9 @@ msgid "VLAN Translation Policy (ID)" msgstr "Política de traducción de VLAN (ID)" #: netbox/dcim/filtersets.py:2105 netbox/dcim/forms/filtersets.py:1658 -#: netbox/dcim/forms/model_forms.py:1572 +#: netbox/dcim/forms/model_forms.py:1598 #: netbox/dcim/models/device_components.py:668 #: netbox/ipam/forms/filtersets.py:531 netbox/ipam/forms/model_forms.py:703 -#: netbox/templates/ipam/vlantranslationpolicy.html:11 #: netbox/virtualization/forms/bulk_edit.py:231 #: netbox/virtualization/forms/filtersets.py:265 #: netbox/virtualization/forms/model_forms.py:364 @@ -4149,9 +4050,6 @@ msgid "LAG interface (ID)" msgstr "Interfaz LAG (ID)" #: netbox/dcim/filtersets.py:2185 netbox/dcim/tables/devices.py:1194 -#: netbox/templates/dcim/interface.html:149 -#: netbox/templates/dcim/macaddress.html:11 -#: netbox/templates/dcim/macaddress.html:14 #: netbox/virtualization/ui/panels.py:71 msgid "MAC Address" msgstr "Dirección MAC" @@ -4160,15 +4058,14 @@ msgstr "Dirección MAC" msgid "Primary MAC address (ID)" msgstr "Dirección MAC principal (ID)" -#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1559 +#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1585 #: netbox/virtualization/filtersets.py:331 #: netbox/virtualization/forms/model_forms.py:302 msgid "Primary MAC address" msgstr "Dirección MAC principal" #: netbox/dcim/filtersets.py:2225 netbox/dcim/filtersets.py:2237 -#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1895 -#: netbox/templates/dcim/virtualdevicecontext.html:15 +#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1921 msgid "Virtual Device Context" msgstr "Contexto de dispositivo virtual" @@ -4227,6 +4124,7 @@ msgstr "Panel de alimentación (ID)" #: netbox/netbox/forms/bulk_import.py:27 netbox/netbox/forms/mixins.py:131 #: netbox/netbox/tables/columns.py:495 #: netbox/templates/circuits/inc/circuit_termination.html:29 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:29 #: netbox/templates/generic/bulk_edit.html:78 #: netbox/templates/inc/panels/tags.html:5 #: netbox/utilities/forms/fields/fields.py:101 @@ -4234,14 +4132,12 @@ msgid "Tags" msgstr "Etiquetas" #: netbox/dcim/forms/bulk_create.py:116 netbox/dcim/forms/filtersets.py:1842 -#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:595 -#: netbox/dcim/forms/model_forms.py:661 netbox/dcim/forms/object_create.py:155 +#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:621 +#: netbox/dcim/forms/model_forms.py:687 netbox/dcim/forms/object_create.py:155 #: netbox/dcim/forms/object_create.py:256 netbox/dcim/tables/devices.py:169 -#: netbox/templates/dcim/frontport.html:132 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/panels/front_port_mappings.html:9 +#: netbox/templates/dcim/panels/rear_port_mappings.html:9 #: netbox/templates/dcim/panels/virtual_chassis_members.html:9 -#: netbox/templates/dcim/rearport.html:126 -#: netbox/templates/dcim/virtualchassis.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:67 msgid "Position" msgstr "Posición" @@ -4272,7 +4168,7 @@ msgid "Contact E-mail" msgstr "Correo electrónico de contacto" #: netbox/dcim/forms/bulk_edit.py:152 netbox/dcim/forms/bulk_import.py:138 -#: netbox/dcim/forms/model_forms.py:147 +#: netbox/dcim/forms/model_forms.py:157 msgid "Time zone" msgstr "Zona horaria" @@ -4287,17 +4183,16 @@ msgstr "Zona horaria" #: netbox/dcim/forms/filtersets.py:546 netbox/dcim/forms/filtersets.py:695 #: netbox/dcim/forms/filtersets.py:801 netbox/dcim/forms/filtersets.py:884 #: netbox/dcim/forms/filtersets.py:1096 netbox/dcim/forms/filtersets.py:1907 -#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:223 -#: netbox/dcim/forms/model_forms.py:354 netbox/dcim/forms/model_forms.py:366 -#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:540 -#: netbox/dcim/forms/model_forms.py:1239 netbox/dcim/forms/model_forms.py:1722 +#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:249 +#: netbox/dcim/forms/model_forms.py:380 netbox/dcim/forms/model_forms.py:392 +#: netbox/dcim/forms/model_forms.py:462 netbox/dcim/forms/model_forms.py:566 +#: netbox/dcim/forms/model_forms.py:1265 netbox/dcim/forms/model_forms.py:1748 #: netbox/dcim/forms/object_import.py:188 netbox/dcim/tables/devices.py:101 #: netbox/dcim/tables/devices.py:176 netbox/dcim/tables/devices.py:1035 #: netbox/dcim/tables/devicetypes.py:87 netbox/dcim/tables/devicetypes.py:322 #: netbox/dcim/tables/modules.py:47 netbox/dcim/tables/modules.py:90 #: netbox/dcim/tables/racks.py:51 netbox/dcim/tables/racks.py:121 -#: netbox/templates/dcim/inventoryitem.html:48 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/panels/installed_module.html:13 #: netbox/templates/dcim/panels/module_type.html:7 msgid "Manufacturer" msgstr "Fabricante" @@ -4322,7 +4217,7 @@ msgid "Height (U)" msgstr "Altura (U)" #: netbox/dcim/forms/bulk_edit.py:244 netbox/dcim/forms/bulk_edit.py:387 -#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:39 +#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:41 msgid "Descending units" msgstr "Unidades descendentes" @@ -4356,10 +4251,10 @@ msgstr "Profundidad de montaje" #: netbox/dcim/forms/filtersets.py:362 netbox/dcim/forms/filtersets.py:441 #: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:651 #: netbox/dcim/forms/filtersets.py:683 netbox/dcim/forms/filtersets.py:755 -#: netbox/dcim/forms/model_forms.py:237 netbox/dcim/forms/model_forms.py:318 +#: netbox/dcim/forms/model_forms.py:263 netbox/dcim/forms/model_forms.py:344 #: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:55 #: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:162 -#: netbox/dcim/views.py:891 netbox/dcim/views.py:1019 +#: netbox/dcim/views.py:893 netbox/dcim/views.py:1021 #: netbox/extras/forms/bulk_edit.py:57 netbox/extras/forms/bulk_edit.py:137 #: netbox/extras/forms/bulk_edit.py:191 netbox/extras/forms/bulk_edit.py:219 #: netbox/extras/forms/bulk_edit.py:315 netbox/extras/forms/bulk_edit.py:341 @@ -4370,7 +4265,7 @@ msgstr "Profundidad de montaje" #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 #: netbox/templates/extras/tableconfig.html:41 -#: netbox/templates/extras/tag.html:32 netbox/templates/ipam/role.html:30 +#: netbox/templates/extras/tag.html:32 msgid "Weight" msgstr "Peso" @@ -4389,18 +4284,18 @@ msgid "Weight unit" msgstr "Unidad de peso" #: netbox/dcim/forms/bulk_edit.py:290 netbox/dcim/forms/filtersets.py:335 -#: netbox/dcim/forms/model_forms.py:233 netbox/dcim/forms/model_forms.py:272 +#: netbox/dcim/forms/model_forms.py:259 netbox/dcim/forms/model_forms.py:298 msgid "Rack Type" msgstr "Tipo de rack" #: netbox/dcim/forms/bulk_edit.py:292 netbox/dcim/forms/bulk_edit.py:440 -#: netbox/dcim/forms/model_forms.py:236 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/model_forms.py:262 netbox/dcim/forms/model_forms.py:343 msgid "Outer Dimensions" msgstr "Dimensiones exteriores" -#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:238 -#: netbox/dcim/forms/model_forms.py:319 netbox/dcim/ui/panels.py:135 -#: netbox/dcim/views.py:885 netbox/dcim/views.py:1017 +#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:345 netbox/dcim/ui/panels.py:137 +#: netbox/dcim/views.py:887 netbox/dcim/views.py:1019 #: netbox/extras/tables/tables.py:278 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 #: netbox/templates/extras/imageattachment.html:40 @@ -4408,8 +4303,8 @@ msgid "Dimensions" msgstr "Dimensiones" #: netbox/dcim/forms/bulk_edit.py:297 netbox/dcim/forms/filtersets.py:336 -#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:240 -#: netbox/dcim/views.py:890 netbox/dcim/views.py:1018 +#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:266 +#: netbox/dcim/views.py:892 netbox/dcim/views.py:1020 #: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "Numeración" @@ -4420,13 +4315,14 @@ msgid "Rack type" msgstr "Tipo de rack" #: netbox/dcim/forms/bulk_edit.py:363 netbox/dcim/forms/bulk_edit.py:708 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/templates/dcim/modulebay.html:70 +#: netbox/dcim/forms/bulk_edit.py:763 msgid "Serial Number" msgstr "Número de serie" #: netbox/dcim/forms/bulk_edit.py:366 netbox/dcim/forms/filtersets.py:429 #: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1116 #: netbox/dcim/forms/filtersets.py:1914 +#: netbox/templates/dcim/panels/installed_module.html:25 msgid "Asset tag" msgstr "Etiqueta de activo" @@ -4447,13 +4343,12 @@ msgstr "Flujo de aire" #: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/filtersets.py:501 #: netbox/dcim/forms/filtersets.py:874 netbox/dcim/forms/filtersets.py:1086 #: netbox/dcim/forms/filtersets.py:1186 netbox/dcim/forms/filtersets.py:1325 -#: netbox/dcim/forms/model_forms.py:282 netbox/dcim/forms/model_forms.py:326 -#: netbox/dcim/forms/model_forms.py:586 netbox/dcim/forms/model_forms.py:871 +#: netbox/dcim/forms/model_forms.py:308 netbox/dcim/forms/model_forms.py:352 +#: netbox/dcim/forms/model_forms.py:612 netbox/dcim/forms/model_forms.py:897 #: netbox/dcim/forms/object_create.py:303 netbox/dcim/tables/devices.py:165 #: netbox/dcim/tables/power.py:67 netbox/dcim/tables/racks.py:204 #: netbox/ipam/forms/filtersets.py:486 #: netbox/templates/dcim/inc/cable_termination.html:16 -#: netbox/templates/dcim/powerfeed.html:28 #: netbox/templates/dcim/rack/base.html:4 #: netbox/virtualization/forms/model_forms.py:107 msgid "Rack" @@ -4463,14 +4358,14 @@ msgstr "Rack" #: netbox/dcim/forms/filtersets.py:360 netbox/dcim/forms/filtersets.py:440 #: netbox/dcim/forms/filtersets.py:532 netbox/dcim/forms/filtersets.py:677 #: netbox/dcim/forms/filtersets.py:822 netbox/dcim/forms/filtersets.py:1043 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:787 -#: netbox/dcim/forms/model_forms.py:1790 +#: netbox/dcim/forms/model_forms.py:470 netbox/dcim/forms/model_forms.py:813 +#: netbox/dcim/forms/model_forms.py:1816 #: netbox/templates/dcim/device_edit.html:22 msgid "Hardware" msgstr "Hardware" #: netbox/dcim/forms/bulk_edit.py:490 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:397 msgid "Default platform" msgstr "Plataforma predeterminada" @@ -4487,29 +4382,29 @@ msgstr "Altura en U" msgid "Exclude from utilization" msgstr "Excluir de la utilización" -#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:385 -#: netbox/dcim/forms/model_forms.py:1022 netbox/dcim/forms/model_forms.py:1064 -#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1119 -#: netbox/dcim/forms/model_forms.py:1140 netbox/dcim/forms/model_forms.py:1180 -#: netbox/dcim/forms/model_forms.py:1198 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:411 +#: netbox/dcim/forms/model_forms.py:1048 netbox/dcim/forms/model_forms.py:1090 +#: netbox/dcim/forms/model_forms.py:1117 netbox/dcim/forms/model_forms.py:1145 +#: netbox/dcim/forms/model_forms.py:1166 netbox/dcim/forms/model_forms.py:1206 +#: netbox/dcim/forms/model_forms.py:1224 #: netbox/dcim/forms/object_create.py:119 netbox/dcim/tables/devicetypes.py:84 -#: netbox/dcim/ui/panels.py:125 netbox/templates/dcim/devicebay.html:52 +#: netbox/dcim/ui/panels.py:127 msgid "Device Type" msgstr "Tipo de dispositivo" -#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:412 -#: netbox/dcim/views.py:1590 netbox/extras/forms/model_forms.py:601 +#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:438 +#: netbox/dcim/views.py:1592 netbox/extras/forms/model_forms.py:601 msgid "Schema" msgstr "Esquema" #: netbox/dcim/forms/bulk_edit.py:549 netbox/dcim/forms/bulk_edit.py:556 #: netbox/dcim/forms/bulk_edit.py:787 netbox/dcim/forms/bulk_import.py:460 #: netbox/dcim/forms/bulk_import.py:1459 netbox/dcim/forms/filtersets.py:690 -#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:418 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/tables/modules.py:43 +#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:444 +#: netbox/dcim/forms/model_forms.py:457 netbox/dcim/tables/modules.py:43 #: netbox/extras/forms/filtersets.py:413 #: netbox/extras/forms/model_forms.py:626 netbox/extras/tables/tables.py:627 -#: netbox/templates/account/base.html:7 netbox/templates/dcim/cable.html:23 +#: netbox/templates/account/base.html:7 #: netbox/templates/extras/configcontext.html:21 #: netbox/templates/inc/user_menu.html:38 netbox/vpn/forms/bulk_edit.py:213 #: netbox/vpn/forms/filtersets.py:203 netbox/vpn/forms/model_forms.py:378 @@ -4517,22 +4412,21 @@ msgid "Profile" msgstr "Perfil" #: netbox/dcim/forms/bulk_edit.py:588 netbox/dcim/forms/filtersets.py:1379 -#: netbox/dcim/forms/model_forms.py:443 netbox/dcim/forms/model_forms.py:1023 -#: netbox/dcim/forms/model_forms.py:1065 netbox/dcim/forms/model_forms.py:1092 -#: netbox/dcim/forms/model_forms.py:1120 netbox/dcim/forms/model_forms.py:1141 -#: netbox/dcim/forms/model_forms.py:1181 netbox/dcim/forms/model_forms.py:1199 +#: netbox/dcim/forms/model_forms.py:469 netbox/dcim/forms/model_forms.py:1049 +#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1118 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1167 +#: netbox/dcim/forms/model_forms.py:1207 netbox/dcim/forms/model_forms.py:1225 #: netbox/dcim/forms/object_create.py:120 netbox/dcim/tables/modules.py:52 -#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2848 -#: netbox/templates/dcim/modulebay.html:66 +#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2851 msgid "Module Type" msgstr "Tipo de módulo" -#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:388 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:414 msgid "Chassis" msgstr "Chasis" #: netbox/dcim/forms/bulk_edit.py:611 netbox/dcim/models/devices.py:390 -#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:142 +#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:144 msgid "VM role" msgstr "Función de máquina virtual" @@ -4542,8 +4436,8 @@ msgstr "Función de máquina virtual" #: netbox/dcim/forms/bulk_import.py:561 netbox/dcim/forms/bulk_import.py:686 #: netbox/dcim/forms/bulk_import.py:690 netbox/dcim/forms/filtersets.py:775 #: netbox/dcim/forms/filtersets.py:806 netbox/dcim/forms/filtersets.py:925 -#: netbox/dcim/forms/model_forms.py:509 netbox/dcim/forms/model_forms.py:546 -#: netbox/dcim/forms/model_forms.py:670 +#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:572 +#: netbox/dcim/forms/model_forms.py:696 #: netbox/virtualization/forms/bulk_import.py:145 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/filtersets.py:207 @@ -4553,20 +4447,21 @@ msgstr "Plantilla de configuración" #: netbox/dcim/forms/bulk_edit.py:657 netbox/dcim/forms/bulk_edit.py:1040 #: netbox/dcim/forms/bulk_import.py:592 netbox/dcim/forms/filtersets.py:133 -#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:616 -#: netbox/dcim/forms/model_forms.py:986 netbox/dcim/forms/model_forms.py:1003 +#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:642 +#: netbox/dcim/forms/model_forms.py:1012 netbox/dcim/forms/model_forms.py:1029 #: netbox/extras/filtersets.py:729 +#: netbox/templates/dcim/panels/installed_device.html:13 msgid "Device type" msgstr "Tipo de dispositivo" #: netbox/dcim/forms/bulk_edit.py:668 netbox/dcim/forms/bulk_import.py:573 -#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:624 +#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:650 msgid "Device role" msgstr "Función del dispositivo" #: netbox/dcim/forms/bulk_edit.py:691 netbox/dcim/forms/bulk_import.py:598 #: netbox/dcim/forms/filtersets.py:789 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/model_forms.py:557 netbox/dcim/forms/model_forms.py:629 +#: netbox/dcim/forms/model_forms.py:583 netbox/dcim/forms/model_forms.py:655 #: netbox/dcim/tables/devices.py:191 netbox/extras/filtersets.py:745 #: netbox/virtualization/forms/bulk_edit.py:131 #: netbox/virtualization/forms/bulk_import.py:135 @@ -4578,7 +4473,7 @@ msgstr "Plataforma" #: netbox/dcim/forms/bulk_edit.py:716 netbox/dcim/forms/bulk_import.py:617 #: netbox/dcim/forms/filtersets.py:830 netbox/dcim/forms/filtersets.py:1000 -#: netbox/dcim/forms/model_forms.py:638 netbox/dcim/tables/devices.py:211 +#: netbox/dcim/forms/model_forms.py:664 netbox/dcim/tables/devices.py:211 #: netbox/extras/filtersets.py:778 netbox/extras/forms/filtersets.py:406 #: netbox/ipam/forms/filtersets.py:457 netbox/ipam/forms/filtersets.py:491 #: netbox/virtualization/filtersets.py:148 @@ -4607,7 +4502,8 @@ msgid "Virtualization" msgstr "Virtualización" #: netbox/dcim/forms/bulk_edit.py:744 netbox/dcim/forms/bulk_import.py:759 -#: netbox/dcim/forms/model_forms.py:765 netbox/dcim/forms/model_forms.py:1011 +#: netbox/dcim/forms/model_forms.py:791 netbox/dcim/forms/model_forms.py:1037 +#: netbox/templates/dcim/panels/installed_module.html:17 msgid "Module type" msgstr "Tipo de módulo" @@ -4617,25 +4513,15 @@ msgstr "Tipo de módulo" #: netbox/dcim/forms/bulk_edit.py:1146 netbox/dcim/forms/bulk_edit.py:1173 #: netbox/dcim/forms/bulk_edit.py:1200 netbox/dcim/forms/bulk_edit.py:1218 #: netbox/dcim/forms/bulk_edit.py:1236 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/object_create.py:48 netbox/templates/dcim/cable.html:36 -#: netbox/templates/dcim/consoleport.html:32 -#: netbox/templates/dcim/consoleserverport.html:32 -#: netbox/templates/dcim/devicebay.html:28 -#: netbox/templates/dcim/frontport.html:32 +#: netbox/dcim/forms/object_create.py:48 #: netbox/templates/dcim/inc/panels/inventory_items.html:19 -#: netbox/templates/dcim/interface.html:42 -#: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:34 -#: netbox/templates/dcim/poweroutlet.html:32 -#: netbox/templates/dcim/powerport.html:32 -#: netbox/templates/dcim/rearport.html:32 +#: netbox/templates/dcim/panels/component_inventory_items.html:9 #: netbox/templates/extras/customfield.html:26 #: netbox/templates/generic/bulk_import.html:193 msgid "Label" msgstr "Etiqueta" #: netbox/dcim/forms/bulk_edit.py:807 netbox/dcim/forms/filtersets.py:1224 -#: netbox/templates/dcim/cable.html:54 msgid "Length" msgstr "Longitud" @@ -4645,34 +4531,29 @@ msgid "Length unit" msgstr "Unidad de longitud" #: netbox/dcim/forms/bulk_edit.py:830 -#: netbox/templates/dcim/virtualchassis.html:13 msgid "Domain" msgstr "Dominio" #: netbox/dcim/forms/bulk_edit.py:886 netbox/dcim/forms/bulk_import.py:1646 -#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:865 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:891 msgid "Power panel" msgstr "Panel de alimentación" #: netbox/dcim/forms/bulk_edit.py:908 netbox/dcim/forms/bulk_import.py:1682 #: netbox/dcim/forms/filtersets.py:1338 -#: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Suministro" #: netbox/dcim/forms/bulk_edit.py:914 netbox/dcim/forms/bulk_import.py:1687 #: netbox/dcim/forms/filtersets.py:1343 -#: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Fase" #: netbox/dcim/forms/bulk_edit.py:920 netbox/dcim/forms/filtersets.py:1348 -#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Tensión" #: netbox/dcim/forms/bulk_edit.py:924 netbox/dcim/forms/filtersets.py:1352 -#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Amperaje" @@ -4685,7 +4566,7 @@ msgid "Maximum draw" msgstr "Consumo máximo" #: netbox/dcim/forms/bulk_edit.py:1018 -#: netbox/dcim/models/device_component_templates.py:292 +#: netbox/dcim/models/device_component_templates.py:282 #: netbox/dcim/models/device_components.py:440 msgid "Maximum power draw (watts)" msgstr "Consumo máximo de energía (vatios)" @@ -4695,14 +4576,14 @@ msgid "Allocated draw" msgstr "Consumo asignado" #: netbox/dcim/forms/bulk_edit.py:1024 -#: netbox/dcim/models/device_component_templates.py:299 +#: netbox/dcim/models/device_component_templates.py:289 #: netbox/dcim/models/device_components.py:447 msgid "Allocated power draw (watts)" msgstr "Consumo de energía asignado (vatios)" #: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_import.py:892 -#: netbox/dcim/forms/model_forms.py:1080 netbox/dcim/forms/model_forms.py:1445 -#: netbox/dcim/forms/model_forms.py:1774 netbox/dcim/forms/object_import.py:56 +#: netbox/dcim/forms/model_forms.py:1106 netbox/dcim/forms/model_forms.py:1471 +#: netbox/dcim/forms/model_forms.py:1800 netbox/dcim/forms/object_import.py:56 msgid "Power port" msgstr "Puerto de alimentación" @@ -4711,23 +4592,23 @@ msgid "Feed leg" msgstr "Fase de alimentación" #: netbox/dcim/forms/bulk_edit.py:1112 netbox/dcim/forms/bulk_edit.py:1433 -#: netbox/dcim/forms/filtersets.py:1719 +#: netbox/dcim/forms/filtersets.py:1719 netbox/dcim/ui/panels.py:478 msgid "Management only" msgstr "Solo administración" #: netbox/dcim/forms/bulk_edit.py:1122 netbox/dcim/forms/bulk_edit.py:1439 #: netbox/dcim/forms/bulk_import.py:985 netbox/dcim/forms/filtersets.py:1643 #: netbox/dcim/forms/filtersets.py:1728 netbox/dcim/forms/object_import.py:91 -#: netbox/dcim/models/device_component_templates.py:462 -#: netbox/dcim/models/device_components.py:839 +#: netbox/dcim/models/device_component_templates.py:452 +#: netbox/dcim/models/device_components.py:839 netbox/dcim/ui/panels.py:480 msgid "PoE mode" msgstr "Modo PoE" #: netbox/dcim/forms/bulk_edit.py:1128 netbox/dcim/forms/bulk_edit.py:1445 #: netbox/dcim/forms/bulk_import.py:991 netbox/dcim/forms/filtersets.py:1648 #: netbox/dcim/forms/filtersets.py:1733 netbox/dcim/forms/object_import.py:96 -#: netbox/dcim/models/device_component_templates.py:469 -#: netbox/dcim/models/device_components.py:846 +#: netbox/dcim/models/device_component_templates.py:459 +#: netbox/dcim/models/device_components.py:846 netbox/dcim/ui/panels.py:481 msgid "PoE type" msgstr "Tipo de PoE" @@ -4736,36 +4617,26 @@ msgstr "Tipo de PoE" msgid "Wireless role" msgstr "Función inalámbrica" -#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:786 -#: netbox/dcim/forms/model_forms.py:1390 netbox/dcim/tables/devices.py:330 -#: netbox/templates/dcim/consoleport.html:24 -#: netbox/templates/dcim/consoleserverport.html:24 -#: netbox/templates/dcim/frontport.html:24 -#: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/modulebay.html:26 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/poweroutlet.html:24 -#: netbox/templates/dcim/powerport.html:24 -#: netbox/templates/dcim/rearport.html:24 +#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:812 +#: netbox/dcim/forms/model_forms.py:1416 netbox/dcim/tables/devices.py:330 +#: netbox/templates/dcim/panels/installed_module.html:9 msgid "Module" msgstr "Módulo" #: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/tables/devices.py:746 -#: netbox/templates/dcim/interface.html:134 +#: netbox/dcim/ui/panels.py:495 msgid "LAG" msgstr "DESFASE" -#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1472 +#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1498 msgid "Virtual device contexts" msgstr "Contextos de dispositivos virtuales" #: netbox/dcim/forms/bulk_edit.py:1424 netbox/dcim/forms/bulk_import.py:819 #: netbox/dcim/forms/bulk_import.py:845 netbox/dcim/forms/filtersets.py:1429 #: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1607 -#: netbox/dcim/tables/devices.py:651 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 -#: netbox/templates/dcim/consoleport.html:40 -#: netbox/templates/dcim/consoleserverport.html:40 +#: netbox/dcim/tables/devices.py:651 netbox/dcim/ui/panels.py:474 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:64 msgid "Speed" msgstr "Velocidad" @@ -4782,7 +4653,7 @@ msgid "Mode" msgstr "Modo" #: netbox/dcim/forms/bulk_edit.py:1461 netbox/dcim/forms/bulk_import.py:1000 -#: netbox/dcim/forms/model_forms.py:1521 netbox/ipam/forms/bulk_import.py:177 +#: netbox/dcim/forms/model_forms.py:1547 netbox/ipam/forms/bulk_import.py:177 #: netbox/ipam/forms/filtersets.py:582 netbox/ipam/models/vlans.py:93 #: netbox/virtualization/forms/bulk_edit.py:205 #: netbox/virtualization/forms/bulk_import.py:184 @@ -4791,16 +4662,15 @@ msgid "VLAN group" msgstr "Grupo de VLAN" #: netbox/dcim/forms/bulk_edit.py:1470 netbox/dcim/forms/bulk_import.py:1007 -#: netbox/dcim/forms/model_forms.py:1527 netbox/dcim/tables/devices.py:616 -#: netbox/templates/dcim/interface.html:91 -#: netbox/virtualization/forms/bulk_edit.py:213 +#: netbox/dcim/forms/model_forms.py:1553 netbox/dcim/tables/devices.py:616 +#: netbox/dcim/ui/panels.py:484 netbox/virtualization/forms/bulk_edit.py:213 #: netbox/virtualization/forms/bulk_import.py:191 #: netbox/virtualization/forms/model_forms.py:331 msgid "Untagged VLAN" msgstr "VLAN sin etiquetar" #: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/bulk_import.py:1014 -#: netbox/dcim/forms/model_forms.py:1536 netbox/dcim/tables/devices.py:622 +#: netbox/dcim/forms/model_forms.py:1562 netbox/dcim/tables/devices.py:622 #: netbox/virtualization/forms/bulk_edit.py:221 #: netbox/virtualization/forms/bulk_import.py:198 #: netbox/virtualization/forms/model_forms.py:340 @@ -4816,30 +4686,29 @@ msgid "Remove tagged VLANs" msgstr "Eliminar VLAN etiquetadas" #: netbox/dcim/forms/bulk_edit.py:1502 netbox/dcim/forms/bulk_import.py:1027 -#: netbox/dcim/forms/model_forms.py:1545 +#: netbox/dcim/forms/model_forms.py:1571 #: netbox/virtualization/forms/bulk_import.py:211 #: netbox/virtualization/forms/model_forms.py:349 msgid "Q-in-Q Service VLAN" msgstr "VLAN de servicio Q-in-Q" -#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1508 +#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1534 #: netbox/wireless/forms/filtersets.py:26 msgid "Wireless LAN group" msgstr "Grupo de LAN inalámbrica" -#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1513 -#: netbox/dcim/tables/devices.py:660 netbox/netbox/navigation/menu.py:156 -#: netbox/templates/dcim/interface.html:355 +#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1539 +#: netbox/dcim/tables/devices.py:660 netbox/dcim/ui/panels.py:561 +#: netbox/netbox/navigation/menu.py:156 #: netbox/wireless/tables/wirelesslan.py:20 msgid "Wireless LANs" msgstr "LAN inalámbricas" #: netbox/dcim/forms/bulk_edit.py:1531 netbox/dcim/forms/filtersets.py:1574 -#: netbox/dcim/forms/model_forms.py:1579 netbox/ipam/forms/bulk_edit.py:227 -#: netbox/ipam/forms/bulk_edit.py:313 netbox/ipam/forms/filtersets.py:191 -#: netbox/netbox/navigation/menu.py:112 -#: netbox/templates/dcim/interface.html:146 -#: netbox/templates/ipam/prefix.html:91 +#: netbox/dcim/forms/model_forms.py:1605 netbox/dcim/ui/panels.py:499 +#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:313 +#: netbox/ipam/forms/filtersets.py:191 netbox/netbox/navigation/menu.py:112 +#: netbox/templates/ipam/panels/prefix_addressing.html:4 #: netbox/virtualization/forms/filtersets.py:218 #: netbox/virtualization/forms/model_forms.py:369 #: netbox/virtualization/ui/panels.py:68 @@ -4847,26 +4716,25 @@ msgid "Addressing" msgstr "Direccionamiento" #: netbox/dcim/forms/bulk_edit.py:1532 netbox/dcim/forms/filtersets.py:821 -#: netbox/dcim/forms/model_forms.py:1580 +#: netbox/dcim/forms/model_forms.py:1606 #: netbox/virtualization/forms/model_forms.py:370 msgid "Operation" msgstr "Operación" #: netbox/dcim/forms/bulk_edit.py:1533 netbox/dcim/forms/filtersets.py:1575 -#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1124 -#: netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1150 +#: netbox/dcim/forms/model_forms.py:1608 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1581 -#: netbox/templates/dcim/interface.html:110 -#: netbox/virtualization/forms/bulk_edit.py:237 +#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1607 +#: netbox/dcim/ui/panels.py:491 netbox/virtualization/forms/bulk_edit.py:237 #: netbox/virtualization/forms/model_forms.py:371 msgid "Related Interfaces" msgstr "Interfaces relacionadas" #: netbox/dcim/forms/bulk_edit.py:1536 netbox/dcim/forms/filtersets.py:1576 -#: netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1611 #: netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/filtersets.py:219 #: netbox/virtualization/forms/model_forms.py:374 @@ -4975,7 +4843,7 @@ msgstr "Sitio para padres" msgid "Rack's location (if any)" msgstr "Ubicación del bastidor (si existe)" -#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:331 +#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:357 #: netbox/dcim/tables/racks.py:209 #: netbox/templates/dcim/rackreservation.html:7 msgid "Units" @@ -5057,7 +4925,7 @@ msgid "Assigned platform" msgstr "Plataforma asignada" #: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/bulk_import.py:614 -#: netbox/dcim/forms/model_forms.py:651 +#: netbox/dcim/forms/model_forms.py:677 msgid "Virtual chassis" msgstr "Chasis virtual" @@ -5073,7 +4941,7 @@ msgstr "Ubicación asignada (si la hay)" msgid "Assigned rack (if any)" msgstr "Bastidor asignado (si lo hay)" -#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:634 msgid "Face" msgstr "Cara" @@ -5099,7 +4967,7 @@ msgstr "" msgid "The device in which this module is installed" msgstr "El dispositivo en el que está instalado este módulo" -#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:755 +#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:781 msgid "Module bay" msgstr "Compartimento de módulos" @@ -5111,7 +4979,7 @@ msgstr "El compartimiento del módulo en el que está instalado este módulo" msgid "The type of module" msgstr "El tipo de módulo" -#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:773 +#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:799 msgid "Replicate components" msgstr "Replicar componentes" @@ -5123,11 +4991,11 @@ msgstr "" "Rellenar automáticamente los componentes asociados a este tipo de módulo " "(activado de forma predeterminada)" -#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:779 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:805 msgid "Adopt components" msgstr "Adopte componentes" -#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:782 +#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:808 msgid "Adopt already existing components" msgstr "Adopte los componentes ya existentes" @@ -5152,13 +5020,13 @@ msgstr "Puerto de alimentación local que alimenta esta toma" msgid "Electrical phase (for three-phase circuits)" msgstr "Fase eléctrica (para circuitos trifásicos)" -#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1483 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1509 #: netbox/virtualization/forms/bulk_import.py:168 #: netbox/virtualization/forms/model_forms.py:310 msgid "Parent interface" msgstr "Interfaz principal" -#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1491 +#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1517 #: netbox/virtualization/forms/bulk_import.py:175 #: netbox/virtualization/forms/model_forms.py:318 msgid "Bridged interface" @@ -5390,6 +5258,7 @@ msgid "Side B name" msgstr "Nombre de la cara B" #: netbox/dcim/forms/bulk_import.py:1456 +#: netbox/templates/dcim/panels/connection.html:60 #: netbox/wireless/forms/bulk_import.py:133 msgid "Connection status" msgstr "Estado de conexión" @@ -5423,11 +5292,9 @@ msgstr "" "{color} no coincidía con ningún nombre de color usado y tenía más de seis " "caracteres: hexadecimal no válido." -#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:900 +#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:926 #: netbox/dcim/tables/devices.py:1124 #: netbox/templates/dcim/panels/virtual_chassis_members.html:10 -#: netbox/templates/dcim/virtualchassis.html:17 -#: netbox/templates/dcim/virtualchassis.html:57 msgid "Master" msgstr "Maestro" @@ -5455,9 +5322,8 @@ msgstr "Tipo de alimentación (AC/DC)" msgid "Single or three-phase" msgstr "Monofásico o trifásico" -#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1875 -#: netbox/dcim/ui/panels.py:108 -#: netbox/templates/dcim/virtualdevicecontext.html:30 +#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1901 +#: netbox/dcim/ui/panels.py:110 netbox/dcim/ui/panels.py:354 #: netbox/virtualization/ui/panels.py:28 msgid "Primary IPv4" msgstr "IPv4 principal" @@ -5466,9 +5332,8 @@ msgstr "IPv4 principal" msgid "IPv4 address with mask, e.g. 1.2.3.4/24" msgstr "Dirección IPv4 con máscara, p. ej. 1.2.3.4/24" -#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1884 -#: netbox/dcim/ui/panels.py:113 -#: netbox/templates/dcim/virtualdevicecontext.html:41 +#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1910 +#: netbox/dcim/ui/panels.py:115 netbox/dcim/ui/panels.py:359 #: netbox/virtualization/ui/panels.py:33 msgid "Primary IPv6" msgstr "IPv6 principal" @@ -5478,8 +5343,7 @@ msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64" msgstr "Dirección IPv6 con longitud de prefijo, por ejemplo, 2001:db8: :1/64" #: netbox/dcim/forms/common.py:19 netbox/dcim/models/device_components.py:615 -#: netbox/templates/dcim/interface.html:57 -#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/dcim/ui/panels.py:476 netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/ui/panels.py:61 msgid "MTU" msgstr "MUT" @@ -5521,18 +5385,15 @@ msgstr "No puede adoptar {model} {name} porque ya pertenece a un módulo" msgid "A {model} named {name} already exists" msgstr "UN {model} llamado {name} ya existe" -#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:853 +#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:879 #: netbox/dcim/tables/power.py:63 #: netbox/templates/dcim/inc/cable_termination.html:40 -#: netbox/templates/dcim/powerfeed.html:24 -#: netbox/templates/dcim/powerpanel.html:19 #: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "Panel de alimentación" -#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:880 -#: netbox/templates/dcim/powerfeed.html:21 -#: netbox/templates/dcim/powerport.html:80 +#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:906 +#: netbox/dcim/views.py:3106 msgid "Power Feed" msgstr "Alimentación eléctrica" @@ -5560,12 +5421,12 @@ msgstr "Recuento de estantes" msgid "Function" msgstr "Función" -#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:341 -#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1164 +#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:367 +#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1166 msgid "Reservation" msgstr "Reservación" -#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:390 +#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:416 #: netbox/netbox/views/generic/feature_views.py:97 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" @@ -5588,7 +5449,7 @@ msgstr "Función de subdispositivo" msgid "Module count" msgstr "Recuento de módulos" -#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:548 msgid "Device Role" msgstr "Función del dispositivo" @@ -5626,16 +5487,9 @@ msgstr "Ocupado" #: netbox/dcim/forms/filtersets.py:1420 netbox/dcim/forms/filtersets.py:1460 #: netbox/dcim/forms/filtersets.py:1500 netbox/dcim/forms/filtersets.py:1535 #: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/tables/devices.py:381 -#: netbox/dcim/tables/devices.py:682 netbox/ipam/tables/vlans.py:174 +#: netbox/dcim/tables/devices.py:682 netbox/dcim/ui/panels.py:377 +#: netbox/dcim/ui/panels.py:516 netbox/ipam/tables/vlans.py:174 #: netbox/templates/circuits/inc/circuit_termination_fields.html:16 -#: netbox/templates/dcim/consoleport.html:55 -#: netbox/templates/dcim/consoleserverport.html:55 -#: netbox/templates/dcim/frontport.html:66 -#: netbox/templates/dcim/interface.html:215 -#: netbox/templates/dcim/powerfeed.html:110 -#: netbox/templates/dcim/poweroutlet.html:73 -#: netbox/templates/dcim/powerport.html:59 -#: netbox/templates/dcim/rearport.html:66 msgid "Connection" msgstr "Conexión" @@ -5651,13 +5505,12 @@ msgstr "Amable" msgid "Mgmt only" msgstr "Solo administración" -#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1567 -#: netbox/dcim/models/device_components.py:792 -#: netbox/templates/dcim/interface.html:160 +#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1593 +#: netbox/dcim/models/device_components.py:792 netbox/dcim/ui/panels.py:506 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1653 +#: netbox/dcim/forms/filtersets.py:1653 netbox/dcim/ui/panels.py:482 #: netbox/virtualization/forms/filtersets.py:260 msgid "802.1Q mode" msgstr "Modo 802.1Q" @@ -5674,18 +5527,17 @@ msgstr "Frecuencia de canal (MHz)" msgid "Channel width (MHz)" msgstr "Ancho de canal (MHz)" -#: netbox/dcim/forms/filtersets.py:1680 -#: netbox/templates/dcim/interface.html:96 +#: netbox/dcim/forms/filtersets.py:1680 netbox/dcim/ui/panels.py:485 msgid "Transmit power (dBm)" msgstr "Potencia de transmisión (dBm)" #: netbox/dcim/forms/filtersets.py:1751 netbox/dcim/forms/filtersets.py:1795 -#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable.html:12 -#: netbox/templates/dcim/cable_trace.html:46 -#: netbox/templates/dcim/frontport.html:74 +#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/htmx/cable_edit.html:53 #: netbox/templates/dcim/inc/connection_endpoints.html:4 -#: netbox/templates/dcim/rearport.html:74 +#: netbox/templates/dcim/panels/connection.html:14 +#: netbox/templates/dcim/panels/connection.html:51 +#: netbox/templates/dcim/panels/interface_connection.html:13 #: netbox/templates/dcim/trace/cable.html:7 msgid "Cable" msgstr "Cable" @@ -5725,9 +5577,7 @@ msgstr "Tipo de ámbito" #: netbox/ipam/forms/bulk_edit.py:382 netbox/ipam/forms/filtersets.py:195 #: netbox/ipam/forms/model_forms.py:225 netbox/ipam/forms/model_forms.py:603 #: netbox/ipam/forms/model_forms.py:613 netbox/ipam/tables/ip.py:193 -#: netbox/ipam/tables/vlans.py:40 netbox/templates/ipam/prefix.html:48 -#: netbox/templates/ipam/vlangroup.html:38 -#: netbox/virtualization/forms/bulk_edit.py:74 +#: netbox/ipam/tables/vlans.py:40 netbox/virtualization/forms/bulk_edit.py:74 #: netbox/virtualization/forms/filtersets.py:53 #: netbox/virtualization/forms/model_forms.py:73 #: netbox/virtualization/tables/clusters.py:81 @@ -5750,28 +5600,29 @@ msgstr "Tipo de ámbito (aplicación y modelo)" #: netbox/dcim/forms/mixins.py:126 msgid "Scope name" -msgstr "" +msgstr "Nombre del ámbito" #: netbox/dcim/forms/mixins.py:127 msgid "Name of the assigned scope object (if not using ID)" msgstr "" +"Nombre del objeto de ámbito asignado (si no se utiliza el identificador)" #: netbox/dcim/forms/mixins.py:139 msgid "scope_name and scope_id are mutually exclusive." -msgstr "" +msgstr "scope_name y scope_id se excluyen mutuamente." #: netbox/dcim/forms/mixins.py:143 msgid "scope_type must be specified when using scope_name" -msgstr "" +msgstr "Se debe especificar scope_type al usar scope_name" #: netbox/dcim/forms/mixins.py:145 msgid "scope_type must be specified when using scope_id" -msgstr "" +msgstr "Se debe especificar scope_type al usar scope_id" #: netbox/dcim/forms/mixins.py:154 #, python-brace-format msgid "{scope_type} \"{name}\" not found." -msgstr "" +msgstr "{scope_type} »{name}«no se encontró." #: netbox/dcim/forms/mixins.py:162 #, python-brace-format @@ -5779,6 +5630,8 @@ msgid "" "Multiple {scope_type} objects match \"{name}\". Use scope_id to specify the " "intended object." msgstr "" +"Múltiples {scope_type} los objetos coinciden»{name}». Utilice scope_id para " +"especificar el objeto deseado." #: netbox/dcim/forms/mixins.py:180 netbox/dcim/tables/devices.py:260 msgid "Rear ports" @@ -5794,31 +5647,31 @@ msgstr "" "coincidir con el número seleccionado de posiciones del puerto trasero " "({rearport_count})." -#: netbox/dcim/forms/model_forms.py:158 +#: netbox/dcim/forms/model_forms.py:169 msgid "Contact Info" msgstr "Información de contacto" -#: netbox/dcim/forms/model_forms.py:211 +#: netbox/dcim/forms/model_forms.py:237 msgid "Rack Role" msgstr "Rol del rack" -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:380 -#: netbox/dcim/forms/model_forms.py:551 +#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:406 +#: netbox/dcim/forms/model_forms.py:577 #: netbox/utilities/forms/fields/fields.py:58 msgid "Slug" msgstr "Babosa" -#: netbox/dcim/forms/model_forms.py:276 +#: netbox/dcim/forms/model_forms.py:302 msgid "Select a pre-defined rack type, or set physical characteristics below." msgstr "" "Seleccione un tipo de bastidor predefinido o defina las características " "físicas a continuación." -#: netbox/dcim/forms/model_forms.py:284 +#: netbox/dcim/forms/model_forms.py:310 msgid "Inventory Control" msgstr "Control de inventario" -#: netbox/dcim/forms/model_forms.py:333 +#: netbox/dcim/forms/model_forms.py:359 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -5826,38 +5679,38 @@ msgstr "" "Lista de identificadores de unidades numéricas separados por comas. Se puede" " especificar un rango mediante un guión." -#: netbox/dcim/forms/model_forms.py:414 netbox/extras/forms/model_forms.py:603 +#: netbox/dcim/forms/model_forms.py:440 netbox/extras/forms/model_forms.py:603 msgid "Enter a valid JSON schema to define supported attributes." msgstr "" "Introduzca un esquema JSON válido para definir los atributos admitidos." -#: netbox/dcim/forms/model_forms.py:445 +#: netbox/dcim/forms/model_forms.py:471 msgid "Profile & Attributes" msgstr "Perfil y atributos" -#: netbox/dcim/forms/model_forms.py:597 netbox/dcim/models/devices.py:579 +#: netbox/dcim/forms/model_forms.py:623 netbox/dcim/models/devices.py:579 msgid "The lowest-numbered unit occupied by the device" msgstr "La unidad con el número más bajo ocupado por el dispositivo" -#: netbox/dcim/forms/model_forms.py:662 +#: netbox/dcim/forms/model_forms.py:688 msgid "The position in the virtual chassis this device is identified by" msgstr "" "La posición en el chasis virtual por la que se identifica este dispositivo" -#: netbox/dcim/forms/model_forms.py:667 +#: netbox/dcim/forms/model_forms.py:693 msgid "The priority of the device in the virtual chassis" msgstr "La prioridad del dispositivo en el chasis virtual" -#: netbox/dcim/forms/model_forms.py:776 +#: netbox/dcim/forms/model_forms.py:802 msgid "Automatically populate components associated with this module type" msgstr "" "Rellenar automáticamente los componentes asociados a este tipo de módulo" -#: netbox/dcim/forms/model_forms.py:882 +#: netbox/dcim/forms/model_forms.py:908 msgid "Characteristics" msgstr "Características" -#: netbox/dcim/forms/model_forms.py:1038 +#: netbox/dcim/forms/model_forms.py:1064 #, python-brace-format msgid "" "Alphanumeric ranges are supported for bulk creation. Mixed cases and types " @@ -5872,107 +5725,95 @@ msgstr "" "{module}, si está presente, se reemplazará automáticamente por " "el valor de posición al crear un nuevo módulo." -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "Plantilla de puerto de consola" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "Plantilla de puerto de servidor de consola" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "Plantilla de puerto frontal" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "Plantilla de interfaz" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "Plantilla de toma de corriente" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "Plantilla de puerto de alimentación" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "Plantilla de puerto trasero" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "Puerto de consola" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "Puerto de servidor de consola" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "Puerto frontal" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "Puerto trasero" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "Puerto de alimentación" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "Toma de corriente" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "Asignación de componentes" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "Un InventoryItem solo se puede asignar a un único componente." -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "Interfaz LAG" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "Filtre las VLAN disponibles para la asignación por grupo." -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "Dispositivo infantil" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -5980,43 +5821,41 @@ msgstr "" "Los dispositivos secundarios primero deben crearse y asignarse al sitio y al" " rack del dispositivo principal." -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "Puerto de consola" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "Puerto de servidor de consola" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "Puerto frontal" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "toma de corriente" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "Puerto trasero" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "Artículo de inventario" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "Función del artículo de inventario" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "Interfaz VM" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -6030,7 +5869,7 @@ msgstr "Interfaz VM" msgid "Virtual Machine" msgstr "Máquina virtual" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "Una dirección MAC solo se puede asignar a un único objeto." @@ -6054,9 +5893,9 @@ msgstr "" "{pattern_count} se esperan." #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "Miembros" @@ -6259,135 +6098,135 @@ msgstr "" "Una plantilla de componente debe estar asociada a un tipo de dispositivo o a" " un tipo de módulo." -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "plantilla de puerto de consola" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "plantillas de puertos de consola" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "plantilla de puerto de servidor de consola" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "plantillas de puertos de servidor de consola" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "sorteo máximo" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "sorteo asignado" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "plantilla de puerto de alimentación" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "plantillas de puertos de alimentación" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "" "El sorteo asignado no puede superar el sorteo máximo ({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "pierna de alimentación" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "Fase (para alimentaciones trifásicas)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "plantilla de toma de corriente" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "plantillas de tomas de corriente" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Puerto de alimentación principal ({power_port}) debe pertenecer al mismo " "tipo de dispositivo" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Puerto de alimentación principal ({power_port}) debe pertenecer al mismo " "tipo de módulo" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "solo administración" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "interfaz de puente" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "función inalámbrica" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "plantilla de interfaz" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "plantillas de interfaz" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" "Interfaz de puente ({bridge}) debe pertenecer al mismo tipo de dispositivo" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Interfaz de puente ({bridge}) debe pertenecer al mismo tipo de módulo" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "" "Puerto trasero ({rear_port}) debe pertenecer al mismo tipo de dispositivo" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "posiciones" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "plantilla de puerto frontal" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "plantillas de puertos frontales" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " @@ -6396,15 +6235,15 @@ msgstr "" "El número de posiciones no puede ser inferior al número de plantillas de " "puertos traseros mapeadas ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "plantilla de puerto trasero" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "plantillas de puertos traseros" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " @@ -6413,35 +6252,35 @@ msgstr "" "El número de posiciones no puede ser inferior al número de plantillas de " "puertos frontales mapeadas ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "posición" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "" "Identificador al que se debe hacer referencia al cambiar el nombre de los " "componentes instalados" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "plantilla de bahía de módulos" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "plantillas de compartimentos de módulos" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "plantilla de compartimento de dispositivos" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "plantillas de compartimentos de dispositivos" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -6451,21 +6290,21 @@ msgstr "" "configurarse como «principal» para permitir compartimentos para " "dispositivos." -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "ID de pieza" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "Identificador de pieza asignado por el fabricante" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "plantilla de artículos de inventario" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "plantillas de artículos de inventario" @@ -6600,10 +6439,10 @@ msgid "tagged VLANs" msgstr "VLAN etiquetadas" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "SVLAN Q-in-Q" @@ -7779,11 +7618,11 @@ msgstr "Agregar componentes" msgid "Disconnect Selected" msgstr "Desconectar seleccionado" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "Terminación A" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "Terminación B" @@ -7828,6 +7667,8 @@ msgstr "Nombre del color" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "Accesible" @@ -7864,7 +7705,7 @@ msgstr "Altura en U" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "Dirección IP" @@ -7913,16 +7754,14 @@ msgid "Power outlets" msgstr "tomas de corriente" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7955,18 +7794,17 @@ msgid "Device Site" msgstr "Sitio del dispositivo" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Bahía de módulos" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "Artículos de inventario" @@ -7990,13 +7828,13 @@ msgstr "Consumo máximo (W)" msgid "Allocated draw (W)" msgstr "Sorteo asignado (W)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "Direcciones IP" @@ -8004,18 +7842,18 @@ msgstr "Direcciones IP" msgid "Primary MAC" msgstr "MAC principal" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "Direcciones MAC" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Grupos FHRP" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -8024,7 +7862,6 @@ msgid "Tunnel" msgstr "Túnel" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Solo administración" @@ -8032,7 +7869,7 @@ msgstr "Solo administración" msgid "VDCs" msgstr "VDC" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "Circuito virtual" @@ -8041,7 +7878,7 @@ msgstr "Circuito virtual" msgid "Mappings" msgstr "Mapeos" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "Dispositivo instalado" @@ -8065,7 +7902,7 @@ msgstr "Serie instalada" msgid "Installed Asset Tag" msgstr "Etiqueta de activo instalada" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "Módulo instalado" @@ -8082,7 +7919,6 @@ msgid "Module Status" msgstr "Estado del módulo" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "Componente" @@ -8100,7 +7936,7 @@ msgstr "Tipos de estanterías" msgid "Device Types" msgstr "Tipos de dispositivos" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "Tipos de módulos" @@ -8123,8 +7959,8 @@ msgstr "Profundidad total" msgid "Device Count" msgstr "Recuento de dispositivos" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -8134,8 +7970,8 @@ msgstr "Recuento de dispositivos" msgid "Console Ports" msgstr "Puertos de consola" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -8145,8 +7981,8 @@ msgstr "Puertos de consola" msgid "Console Server Ports" msgstr "Puertos de servidor de consola" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -8156,8 +7992,8 @@ msgstr "Puertos de servidor de consola" msgid "Power Ports" msgstr "Puertos de alimentación" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -8167,8 +8003,8 @@ msgstr "Puertos de alimentación" msgid "Power Outlets" msgstr "Tomas de corriente" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -8177,8 +8013,8 @@ msgstr "Tomas de corriente" msgid "Front Ports" msgstr "Puertos frontales" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -8188,16 +8024,16 @@ msgstr "Puertos frontales" msgid "Rear Ports" msgstr "Puertos traseros" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Bahías de dispositivos" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8212,11 +8048,10 @@ msgid "Module Count" msgstr "Recuento de módulos" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Fuentes de alimentación" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "Utilización máxima" @@ -8231,7 +8066,7 @@ msgid "Racks" msgstr "Bastidores" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Altura" @@ -8279,85 +8114,123 @@ msgstr "Grupos de VLAN" msgid "Test case must set peer_termination_type" msgstr "El caso de prueba debe establecer peer_termination_type" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} milímetros" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "Número de serie" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "Peso máximo" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "Administración" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "IP fuera de banda" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "Padre/hijo" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "Nombre del modelo" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "Elemento principal" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "ID de pieza" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "Dispositivo conectado" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "Utilización (asignada)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "Características eléctricas" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{} V" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{} A" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "Principal para la interfaz" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "Miembros de chasis virtuales" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "Utilización de energía" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "Traducción de VLAN" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "Desconectado {count} {type}" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "Regiones infantiles" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "Grupos de niños" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "Dispositivos no rakeados" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "Ubicaciones para niños" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "Reservaciones" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "Funciones de dispositivos secundarios" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "Plataformas infantiles" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "Servicios de aplicaciones" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8365,43 +8238,71 @@ msgstr "Servicios de aplicaciones" msgid "Config Context" msgstr "Contexto de configuración" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "Configuración de renderizado" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "Máquinas virtuales" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "Contextos de dispositivos virtuales" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "VLAN" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "Miembros del GAL" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "Traducción de VLAN" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "Interfaces puenteadas" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "Interfaces infantiles" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Dispositivo instalado {device} en la bahía {device_bay}." -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Dispositivo eliminado {device} desde la bahía {device_bay}." -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "Niños" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "Miembro agregado {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" "No se puede eliminar el dispositivo maestro {device} desde el chasis " "virtual." -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Eliminado {device} desde un chasis virtual {chassis}" @@ -8497,10 +8398,9 @@ msgstr "Sí" msgid "No" msgstr "No" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "Enlace" @@ -8958,15 +8858,6 @@ msgstr "Uno o más tipos de objetos asignados" msgid "Field data type (e.g. text, integer, etc.)" msgstr "Tipo de datos de campo (por ejemplo, texto, entero, etc.)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "Tipo de objeto" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "Tipo de objeto (para campos de objetos o de varios objetos)" @@ -9072,7 +8963,7 @@ msgstr "La clasificación de entrada" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -9098,15 +8989,14 @@ msgstr "Nombres de usuario separados por comas y entre comillas dobles" #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "Grupos" @@ -9132,13 +9022,6 @@ msgstr "Tipo de campo" msgid "Choices" msgstr "Opciones" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "Datos" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10456,17 +10339,6 @@ msgstr "Extensión de archivo" msgid "As Attachment" msgstr "Como archivo adjunto" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "Archivo de datos" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10482,9 +10354,8 @@ msgstr "Imagen" msgid "Filename" msgstr "Nombre de archivo" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "Tamaño" @@ -10537,6 +10408,7 @@ msgid "Please try reconfiguring the widget, or remove it from your dashboard." msgstr "Intente reconfigurar el widget o elimínelo de su panel de control." #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10682,7 +10554,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "Texto plano" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "Servicio" @@ -10745,7 +10617,6 @@ msgstr "Exportación de L2VPN (identificador)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "Prefijo" @@ -10795,7 +10666,6 @@ msgstr "Número de VLAN (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "Dirección" @@ -10852,7 +10722,7 @@ msgstr "Grupo FHRP (ID)" msgid "IP address (ID)" msgstr "Dirección IP (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "dirección IP" @@ -10919,8 +10789,8 @@ msgstr "Es privado" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "RIR" @@ -10931,15 +10801,13 @@ msgstr "Fecha añadida" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Grupo VLAN" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10954,7 +10822,7 @@ msgid "Prefix length" msgstr "Longitud del prefijo" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "Es una piscina" @@ -10973,23 +10841,21 @@ msgstr "Asignación de VLAN" msgid "Treat as populated" msgstr "Tratar como poblado" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "Nombre DNS" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protocolo" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "ID de grupo" @@ -11010,9 +10876,8 @@ msgid "Authentication key" msgstr "Clave de autenticación" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -11041,23 +10906,22 @@ msgstr "Sitio y grupo" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "Política" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "Puertos" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "Importar destinos de ruta" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "Exportar destinos de ruta" @@ -11087,7 +10951,6 @@ msgstr "ID de ámbito" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "Grupo FHRP" @@ -11205,7 +11068,7 @@ msgid "Exported by VRF" msgstr "Exportado por VRF" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "Privada" @@ -11214,7 +11077,7 @@ msgstr "Privada" msgid "Address family" msgstr "Familia de direcciones" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "Alcance" @@ -11242,18 +11105,10 @@ msgstr "Dispositivo/VM" msgid "Parent Prefix" msgstr "Prefijo principal" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "Nombre DNS" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLAN" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "Contiene el identificador de VLAN" @@ -11271,26 +11126,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Q-in-Q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "IDENTIFICADOR DE VLAN" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "Objetivo de ruta" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "Agregado" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "Gama ASN" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "Rango de IP" @@ -11345,8 +11198,7 @@ msgstr "Dirección IP virtual" msgid "Assignment already exists" msgstr "La asignación ya existe" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "ID de VLAN" @@ -11365,7 +11217,6 @@ msgstr "" "para este fin." #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "Regla de traducción de VLAN" @@ -11378,7 +11229,6 @@ msgstr "" "especificar un rango mediante un guión." #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "Plantilla de servicio de aplicaciones" @@ -11555,7 +11405,7 @@ msgstr "" "Todas las direcciones IP incluidas en este prefijo se consideran " "utilizables." -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "marca utilizada" @@ -11567,12 +11417,12 @@ msgstr "prefijos" msgid "Cannot create prefix with /0 mask." msgstr "No se puede crear un prefijo con la máscara /0." -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "tabla global" @@ -11581,112 +11431,112 @@ msgstr "tabla global" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Se encuentra un prefijo duplicado en {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "dirección de inicio" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "Dirección IPv4 o IPv6 (con máscara)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "dirección final" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "Estado operativo de esta gama" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "La función principal de esta gama" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "marca poblada" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "Impedir la creación de direcciones IP dentro de este rango" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "Indique el espacio se ha utilizado en su totalidad" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "Rango IP" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "Intervalos de IP" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "Las versiones de la dirección IP inicial y final deben coincidir" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "Las máscaras de direcciones IP iniciales y finales deben coincidir" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" "La dirección final debe ser mayor que la dirección inicial ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Las direcciones definidas se superponen con el rango {overlapping_range} en " "VRF {vrf}" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "El rango definido supera el tamaño máximo admitido ({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "dirección" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "El estado operativo de esta IP" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "La función funcional de esta propiedad intelectual" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (interior)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "La IP para la que esta dirección es la IP «externa»" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Nombre de host o FQDN (no distingue mayúsculas de minúsculas)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "direcciones IP" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "No se puede crear una dirección IP con la máscara /0." -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip} es un ID de red, que no puede asignarse a una interfaz." -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." @@ -11694,17 +11544,17 @@ msgstr "" "{ip} es una dirección de transmisión, que puede no estar asignada a una " "interfaz." -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Se encontró una dirección IP duplicada en {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "No se puede crear la dirección IP {ip} rango interior {range}." -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -11712,7 +11562,7 @@ msgstr "" "No se puede reasignar la dirección IP mientras esté designada como la IP " "principal del objeto principal" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" @@ -11720,7 +11570,7 @@ msgstr "" "No se puede reasignar la dirección IP mientras esté designada como IP OOB " "para el objeto principal" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Solo a las direcciones IPv6 se les puede asignar el estado SLAAC" @@ -11919,17 +11769,17 @@ msgid "Added" msgstr "Añadido" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "Prefijos" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "Utilización" @@ -11956,7 +11806,7 @@ msgid "Pool" msgstr "Piscina" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "Marcado como utilizado" @@ -11964,7 +11814,7 @@ msgstr "Marcado como utilizado" msgid "Start address" msgstr "Dirección de inicio" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "Marcado como poblado" @@ -11994,17 +11844,14 @@ msgid "VID" msgstr "VÍDEO" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "Reglas" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "VID local" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "VID remoto" @@ -12024,16 +11871,71 @@ msgstr "Objetivos de importación" msgid "Export Targets" msgstr "Objetivos de exportación" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "Crear grupo" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Asignar grupo" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "Distinguidor de rutas" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "Espacio IP único" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "Número AS" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Familia" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "Fecha añadida" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "Dirección inicial" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "Dirección final" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (exterior)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "IP principal" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "LA PUNTA DEL PUCHERO" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "Tipo de autenticación" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "Clave de autenticación" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Función de Q-in-Q" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "VLAN de clientes" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "Agregar una VLAN" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -12071,26 +11973,79 @@ msgstr "" "Solo se permiten caracteres alfanuméricos, asteriscos, guiones, puntos y " "guiones bajos en los nombres DNS" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "Interfaces de dispositivos" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "Interfaces de VM" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "Importación de VRF" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "Exportación de VRF" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "Importación de VPNs L2" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "Exportación de VPNs L2" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "Prefijos duplicados" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "Prefijos principales" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "Prefijos infantiles" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "Rangos infantiles" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "IP duplicadas" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "Servicios de aplicaciones" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "IPs relacionadas" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "Reglas de traducción de VLAN" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "Agregar regla" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "Direcciones IP virtuales" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "Agregar dirección IP" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "Agregar un prefijo" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "Es posible que este campo no esté en blanco." @@ -12605,7 +12560,6 @@ msgid "Contact Groups" msgstr "Grupos de contactos" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Funciones de contacto" @@ -12625,11 +12579,6 @@ msgstr "Elevaciones" msgid "Modules" msgstr "Módulos" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "Contextos de dispositivos virtuales" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "Perfiles de tipo de módulo" @@ -12643,12 +12592,11 @@ msgid "Device Components" msgstr "Componentes del dispositivo" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Funciones de los artículos de inventario" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "Conexiones" @@ -12689,7 +12637,6 @@ msgid "VLAN Translation Policies" msgstr "Políticas de traducción de VLAN" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "Reglas de traducción de VLAN" @@ -12768,7 +12715,6 @@ msgid "Circuit Terminations" msgstr "Terminaciones de circuitos" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "Circuitos virtuales" @@ -12784,18 +12730,11 @@ msgstr "Terminaciones de circuitos virtuales" msgid "Circuit Groups" msgstr "Grupos de circuitos" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "Tareas grupales" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "Proveedores" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Cuentas de proveedores" @@ -12891,7 +12830,7 @@ msgid "Journal Entries" msgstr "Entradas del diario" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Registro de cambios" @@ -12944,6 +12883,7 @@ msgstr "Tareas en segundo plano" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12962,8 +12902,9 @@ msgstr "Clon" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -12975,8 +12916,9 @@ msgstr "Editar" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -13250,7 +13192,7 @@ msgstr "Plugin ficticio" msgid "Copy" msgstr "Copiar" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -13258,11 +13200,19 @@ msgstr "" "Opción de decodificación no válida: {decoding}! Debe ser uno de " "{image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" +"Valor max_items no válido: {max_items}! Debe ser un entero positivo o " +"ninguno." + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "Coordenadas GPS" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "Objetos relacionados" @@ -13540,8 +13490,7 @@ msgid "Account Details" msgstr "Detalles de la cuenta" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "Correo electrónico" @@ -13563,16 +13512,15 @@ msgid "Assigned Groups" msgstr "Grupos asignados" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13647,55 +13595,21 @@ msgstr "Código fuente" msgid "Community" msgstr "Comunidad" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "Fecha de instalación" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "Fecha de terminación" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "Intercambiar terminaciones de circuitos" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "Cambie estas terminaciones por circuito %(circuit)s?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "Un lado" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Lado Z" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "Asignar circuito" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "Asignación de grupos de circuitos" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "Agregar circuito" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "Tipo de circuito" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "Punto de terminación" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "Marcado como conectado" @@ -13705,13 +13619,14 @@ msgstr "a" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "Rastrear" @@ -13725,37 +13640,30 @@ msgstr "Quitar el cable" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "Desconectar" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "Conectar" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "Río abajo" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "Aguas arriba" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "Conexión cruzada" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "Panel de conexión/puerto" @@ -13763,39 +13671,10 @@ msgstr "Panel de conexión/puerto" msgid "Add circuit" msgstr "Añadir circuito" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "Cuenta de proveedor" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "Agregar un circuito virtual" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "Agregar terminación" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "Terminación de circuito virtual" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "Agregar circuito virtual" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "Tipo de circuito virtual" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "Datos de configuración" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "Comentar" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13818,31 +13697,11 @@ msgstr "Nuevo valor" msgid "Changed" msgstr "Cambiado" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "bytes" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "Hash SHA256" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "Contenido" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "Última sincronización" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "Backend" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "No hay parámetros definidos" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "Elevaciones de estanterías" @@ -13901,72 +13760,11 @@ msgstr "Se ha eliminado el archivo de datos asociado a este objeto" msgid "Data Synced" msgstr "Datos sincronizados" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "Trabajo" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "Creado por" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "Programación" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "cada %(interval)s minutos" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "Cambiar" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "Diferencia" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "Anterior" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "Próxima" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "Objeto creado" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "Objeto eliminado" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "Sin cambios" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "Datos previos al cambio" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Advertencia: comparación del cambio no atómico con el registro de cambios " -"anterior" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "Datos posteriores al cambio" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Ver todos %(count)s Cambios" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -13982,6 +13780,61 @@ msgstr "días" msgid "Indefinite" msgstr "Indefinido" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "Comentar" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "Datos de configuración" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "No hay parámetros definidos" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "Diferencia" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "Anterior" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "Próxima" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "Objeto creado" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "Objeto eliminado" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "Sin cambios" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "Datos posteriores al cambio" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "Datos previos al cambio" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Advertencia: comparación del cambio no atómico con el registro de cambios " +"anterior" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Ver todos %(count)s Cambios" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "No instalado" @@ -14272,22 +14125,13 @@ msgstr "Segmentos" msgid "Incomplete" msgstr "Incompleto" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "No conectado" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT para" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "NATA" @@ -14295,7 +14139,7 @@ msgstr "NATA" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "Copiar al portapapeles" @@ -14345,10 +14189,6 @@ msgstr "Eliminar" msgid "Local Config Context Data" msgstr "Datos de contexto de configuración local" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "Bahía de dispositivos" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -14376,34 +14216,6 @@ msgstr "Bahía" msgid "Add Device" msgstr "Agregar dispositivo" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "Posiciones" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "Marcado como conectado" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "Estado de conexión" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "Mapeos de puertos" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "No hay mapeos definidos" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "Un lado" @@ -14429,6 +14241,8 @@ msgid "Path Status" msgstr "Estado de la ruta" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "No accesible" @@ -14437,8 +14251,6 @@ msgid "Path Endpoints" msgstr "Puntos finales de ruta" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "No conectado" @@ -14484,94 +14296,10 @@ msgstr "Elevación del bastidor" msgid "Loading..." msgstr "Cargando..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "Agregar interfaz secundaria" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "Velocidad/dúplex" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "Modo PoE" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "Tipo de PoE" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "Interfaces puenteadas" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "Traducción de VLAN" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "Enlace inalámbrico" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "Canal" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "Frecuencia de canal" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "megahercio" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "Ancho de canal" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "Agregar dirección IP" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "Agregar dirección MAC" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "Artículo principal" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "ID de pieza" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "Etiqueta de activo" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "Principal para la interfaz" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "Agregar tipo de dispositivo" @@ -14580,6 +14308,64 @@ msgstr "Agregar tipo de dispositivo" msgid "Add Module Type" msgstr "Agregar tipo de módulo" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "Estado de la ruta" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "Puntos finales de ruta" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "No conectado" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "Mapeos de puertos" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "No hay mapeos definidos" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "Enlace inalámbrico" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "Canal" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "Frecuencia del canal" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "megahercio" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "Anchura del canal" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "No hay ningún perfil asignado" @@ -14599,7 +14385,7 @@ msgstr "Asignado" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "VA" @@ -14623,44 +14409,6 @@ msgstr "Solo imágenes" msgid "Labels only" msgstr "Solo etiquetas" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "Dispositivo conectado" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "Utilización (asignada)" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "Características eléctricas" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "UN" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "Pierna de alimentación" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "Añadir fuentes de alimentación" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "Sorteo máximo" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "Sorteo asignado" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "Añadir reserva" @@ -14700,10 +14448,6 @@ msgstr "Agregar sitio" msgid "Attachment" msgstr "Fijación" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "Agregar miembro" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14755,10 +14499,6 @@ msgstr "" "¿Estás seguro de que quieres eliminar? %(device)s desde un " "chasis virtual %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "Identificador" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -15097,6 +14837,10 @@ msgstr "" msgid "Journal Entry" msgstr "Entrada de diario" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "Creado por" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "Grupo de notificaciones" @@ -15592,37 +15336,15 @@ msgstr "Cerrar sesión" msgid "Log In" msgstr "Iniciar sesión" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Familia" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "Fecha añadida" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "Agregar prefijo" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "Número AS" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "Tipo de autenticación" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "Clave de autenticación" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "Direcciones IP virtuales" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "Global" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15657,15 +15379,6 @@ msgstr "Mostrar disponible" msgid "Show All" msgstr "Mostrar todo" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "Global" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (exterior)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "Asignar una dirección IP" @@ -15682,51 +15395,43 @@ msgstr "Resultados de la búsqueda" msgid "Bulk Add IP Addresses" msgstr "Agregar direcciones IP de forma masiva" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "Dirección inicial" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "Dirección final" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "Detalles de direccionamiento" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "Marcado como totalmente utilizado" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "IP para niños" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "IPs disponibles" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "Primera IP disponible" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "Detalles del prefijo" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "Dirección de red" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "Máscara de red" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "Máscara Wildcard" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "Dirección de transmisión" @@ -15738,58 +15443,14 @@ msgstr "Agregar rango de IP" msgid "Hide Depth Indicators" msgstr "Ocultar indicadores de profundidad" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "Agregar agregado" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "Importación de VRF" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "Exportación de VRF" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "Importación de VPNs L2" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "Exportación de VPNs L2" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Función de Q-in-Q" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "Agregar un prefijo" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "VLAN de clientes" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "Agregar una VLAN" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "Agregar VLAN" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "Agregar regla" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "Distinguidor de rutas" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "Espacio IP único" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15859,61 +15520,14 @@ msgstr "" "Haga clic aquí para intentar cargar NetBox de " "nuevo." -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "Contacto" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "Título" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "Teléfono" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "Grupo de contacto" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "Agregar grupo de contactos" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "Función de contacto" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "Añadir un contacto" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "Agregar inquilino" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "Grupo de inquilinos" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "Agregar grupo de inquilinos" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -16024,16 +15638,28 @@ msgstr "Política IPSec" msgid "PFS Group" msgstr "Grupo PFS" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "Agregar terminación" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "Añadir túnel" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "Frecuencia de canal" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "megahercio" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "Ancho de canal" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "Agregar LAN inalámbrica" @@ -16068,6 +15694,20 @@ msgstr "Rol de contacto (ID)" msgid "Contact role (slug)" msgstr "Rol de contacto (babosa)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "Contacto" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "Función de contacto" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "Grupo de contactos" @@ -16100,6 +15740,15 @@ msgstr "Agregar grupos" msgid "Remove groups" msgstr "Eliminar grupos" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "Título" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "Teléfono" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -16112,6 +15761,17 @@ msgstr "" msgid "Assigned contact" msgstr "Contacto asignado" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "Grupo de inquilinos" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "Grupo de contacto" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "grupo de contacto" @@ -16213,6 +15873,14 @@ msgstr "Enlace de contacto" msgid "Contact Description" msgstr "Descripción del contacto" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "Agregar grupo de inquilinos" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "Agregar grupo de contactos" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -17520,10 +17188,6 @@ msgstr "Añadido {count} dispositivos para agrupar {cluster}" msgid "Assigned VLANs" msgstr "VLAN asignadas" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "Interfaces infantiles" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPSec - Transporte" diff --git a/netbox/translations/fr/LC_MESSAGES/django.mo b/netbox/translations/fr/LC_MESSAGES/django.mo index 8f74b31535cf3040ae06437ed4208efa87f9f1d8..1967204aacf2c161eba7483aaf035050e5c07a39 100644 GIT binary patch delta 76053 zcmXWkcfgKSAHebZu|g$#RCw&Y_sZUTlO07yvPImo5+$Tmypbd+m4+EbC8N?1rDe24 zTBMD;(Dw&I+3_K zcOud76KfNR+tbq$EpZ%H#;sTezs2mBqgYy^8WzHa*dE*C0vv)z@Mf%CJS~w2S78o( z0dpl1$;4}1zwC3I%5MGrMc z$cz&M(Ei6N<0q!Yih1Y&OJe!S=nH5EJ25}LgLZTp4ftZbpH?cAbE5+k!4+5zr{NxK zjSWkOC7O%La#Xy}MQ!{G>tnStX^AX28tdQ$wEh`vjNf7pEL}D&(H*Db7(9%vuu-|R z#0Z>=&GE-*weo3+>Xau%H%S2H|3`2S7?8^DhFGm6Q5Bz8FuqiRJf}T#~YWT#j2zwno-{#-QA0^ z6dpn|_6wTovQ@*{*T8I)8=#xEC1%9-=%(%*@Arw`l;pw=M#qXNv3wW0%kM?kdMW0^ zC$I=^N0;am!9=X**&SoQp{-Ugn}Ao<-NVVC~Rh zIvPk7G_b~K$L-Jn2B1qd6b*D7WogT9K#)DIoajy{BTv@yC1|3~?KES#1|+}0p1(T(!G4Z|DqEA*7qY!ouq z0G(h{H1q9}T=-(SD^~1AU%402S8b&m(h>!547%3yurxl8X6PuIxtxvD5(6+Vx`gA= z3{1m;FLdO(wE53lHW&11XHAs5-j&8lW?1AIrm{6Qgs{=axsGMn6M# zqk&&S2hP+yl=Gkgrehw@e`PLg&(7o{; zdMf@x1G~OOuo_-VxfQzhL+~2U|HHAt2J|%SiXKK^6eqDb{*4Auq-DrVEp#R=qup^7 zte$lvEjS1;c4{vTtYYFzi5Uswh87#Cr}3c zn681naWeWIcn@v=37V-N&?Wf;?f2@o$?%0DZ`*KeZbu`YiaxjqUHkvV`sdIY?uq61 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.Mui2Gpg@`;(JU6=OrF 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 SB*R98v}#<-HLUdr*Z%>ViH+I- delta 75506 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 at5W(-Ck|X0!#6u^V2dce{module}, s'il est présent, sera automatiquement remplacé par " "la valeur de position lors de la création d'un nouveau module." -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "Modèle de port de console" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "Modèle de port de serveur de console" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "Modèle de port avant" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "Modèle d'interface" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "Modèle de prise de courant" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "Modèle de port d'alimentation" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "Modèle de port arrière" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "Port de console" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "Port du serveur de consoles" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "Port avant" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "Port arrière" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "Port d'alimentation" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "Prise de courant" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "Affectation des composants" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "Un item d'inventaire ne peut être attribué qu'à un seul composant." -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "Interface LAG" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "Filtrez les VLAN disponibles pour une attribution par groupe." -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "Appareil pour enfants" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -5994,43 +5834,41 @@ msgstr "" "Les appareils enfants doivent d'abord être créés et affectés au site et à la" " baie de l'appareil parent." -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "Port de console" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "Port du serveur de console" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "Port avant" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "prise de courant" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "Port arrière" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "Article d'inventaire" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "Rôle de l'article d'inventaire" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "Interface de machine virtuelle" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -6044,7 +5882,7 @@ msgstr "Interface de machine virtuelle" msgid "Virtual Machine" msgstr "Machine virtuelle" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "Une adresse MAC ne peut être attribuée qu'à un seul objet." @@ -6068,9 +5906,9 @@ msgstr "" "sont attendus." #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "Membres" @@ -6276,133 +6114,133 @@ msgstr "" "Un modèle de composant doit être associé à un type d'appareil ou à un type " "de module." -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "modèle de port de console" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "modèles de ports de console" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "modèle de port de serveur de console" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "modèles de ports de serveur de console" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "tirage maximum" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "tirage au sort alloué" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "modèle de port d'alimentation" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "modèles de ports d'alimentation" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "" "Le tirage alloué ne peut pas dépasser le tirage maximum ({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "patte d'alimentation" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "Phase (pour les alimentations triphasées)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "modèle de prise de courant" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "modèles de prises de courant" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Port d'alimentation parent ({power_port}) doit appartenir au même type " "d'appareil" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Port d'alimentation parent ({power_port}) doit appartenir au même type de " "module" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "gestion uniquement" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "interface de pont" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "rôle sans fil" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "modèle d'interface" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "modèles d'interface" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "Interface de pont ({bridge}) doit appartenir au même type d'appareil" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Interface de pont ({bridge}) doit appartenir au même type de module" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "Port arrière ({rear_port}) doit appartenir au même type d'appareil" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "positions" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "modèle de port avant" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "modèles de port avant" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " @@ -6411,15 +6249,15 @@ msgstr "" "Le nombre de positions ne peut pas être inférieur au nombre de modèles de " "ports arrière mappés ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "modèle de port arrière" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "modèles de port arrière" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " @@ -6428,34 +6266,34 @@ msgstr "" "Le nombre de positions ne peut pas être inférieur au nombre de modèles de " "ports frontaux mappés ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "position" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "" "Identifiant à référencer lors du changement de nom des composants installés" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "modèle de baie modulaire" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "modèles de baies de modules" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "modèle de baie pour appareils" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "modèles de baies d'appareils" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -6464,21 +6302,21 @@ msgstr "" "Rôle du sous-appareil du type d'appareil ({device_type}) doit être défini " "sur « parent » pour autoriser les baies de périphériques." -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "ID de pièce" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "Identifiant de pièce attribué par le fabricant" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "modèle d'article d'inventaire" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "modèles d'articles d'inventaire" @@ -6614,10 +6452,10 @@ msgid "tagged VLANs" msgstr "VLAN étiquetés" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "SVLAN Q-in-Q" @@ -7795,11 +7633,11 @@ msgstr "Ajouter des composants" msgid "Disconnect Selected" msgstr "Déconnecter la sélection" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "Terminaison A" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "Terminaison B" @@ -7844,6 +7682,8 @@ msgstr "Nom de la couleur" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "Joignable" @@ -7880,7 +7720,7 @@ msgstr "Hauteur en U" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "Adresse IP" @@ -7929,16 +7769,14 @@ msgid "Power outlets" msgstr "Prises de courant" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7971,18 +7809,17 @@ msgid "Device Site" msgstr "Site de l'appareil" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Module Bay" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "Articles d'inventaire" @@ -8006,13 +7843,13 @@ msgstr "Tirage maximal (W)" msgid "Allocated draw (W)" msgstr "Tirage alloué (W)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "Adresses IP" @@ -8020,18 +7857,18 @@ msgstr "Adresses IP" msgid "Primary MAC" msgstr "MAC principal" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "Adresses MAC" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Groupes FHRP" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -8040,7 +7877,6 @@ msgid "Tunnel" msgstr "Tunnel" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Gestion uniquement" @@ -8048,7 +7884,7 @@ msgstr "Gestion uniquement" msgid "VDCs" msgstr "VDC" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "Circuit virtuel" @@ -8057,7 +7893,7 @@ msgstr "Circuit virtuel" msgid "Mappings" msgstr "Cartographies" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "Appareil installé" @@ -8081,7 +7917,7 @@ msgstr "Série installée" msgid "Installed Asset Tag" msgstr "Tag d'actif installé" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "Module installé" @@ -8098,7 +7934,6 @@ msgid "Module Status" msgstr "État du module" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "Composant" @@ -8116,7 +7951,7 @@ msgstr "Types de baie" msgid "Device Types" msgstr "Types d'appareils" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "Types de modules" @@ -8139,8 +7974,8 @@ msgstr "Pleine profondeur" msgid "Device Count" msgstr "Nombre d'appareils" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -8150,8 +7985,8 @@ msgstr "Nombre d'appareils" msgid "Console Ports" msgstr "Ports de console" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -8161,8 +7996,8 @@ msgstr "Ports de console" msgid "Console Server Ports" msgstr "Ports du serveur de consoles" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -8172,8 +8007,8 @@ msgstr "Ports du serveur de consoles" msgid "Power Ports" msgstr "Ports d'alimentation" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -8183,8 +8018,8 @@ msgstr "Ports d'alimentation" msgid "Power Outlets" msgstr "Prises de courant" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -8193,8 +8028,8 @@ msgstr "Prises de courant" msgid "Front Ports" msgstr "Ports avant" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -8204,16 +8039,16 @@ msgstr "Ports avant" msgid "Rear Ports" msgstr "Ports arrière" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Baies pour appareils" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8228,11 +8063,10 @@ msgid "Module Count" msgstr "Nombre de modules" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Alimentations" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "Utilisation maximale" @@ -8247,7 +8081,7 @@ msgid "Racks" msgstr "Baies" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Hauteur" @@ -8295,85 +8129,123 @@ msgstr "Groupes VLAN" msgid "Test case must set peer_termination_type" msgstr "Le scénario de test doit définir peer_termination_type" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} millimètres" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "Numéro de série" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "Poids maximum" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "Gestion" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "IP hors bande" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "Parent/enfant" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "Nom du modèle" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "Article parent" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "Identifiant de la pièce" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "Appareil connecté" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "Utilisation (allouée)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "Caractéristiques électriques" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{V}" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{} UNE" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "Principale pour l'interface" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "Membres virtuels du châssis" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "Utilisation de l'énergie" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "Traduction VLAN" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "Déconnecté {count} {type}" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "Régions enfants" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "Groupes enfants" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "Appareils non mis en baie" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "Localisations des enfants" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "Réservations" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "Rôles d'appareils enfants" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "Plateformes pour enfants" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "Services d'application" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8381,43 +8253,71 @@ msgstr "Services d'application" msgid "Config Context" msgstr "Contexte de configuration" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "Configuration du rendu" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "Machines virtuelles" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "Contextes des appareils virtuels" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "VLAN" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "Membres du LAG" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "Traduction VLAN" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "Interfaces pontées" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "Interfaces pour enfants" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Appareil installé {device} dans la baie {device_bay}." -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Appareil retiré {device} depuis la baie {device_bay}." -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "Enfants" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "Membre ajouté {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" "Impossible de supprimer le périphérique principal {device} depuis le châssis" " virtuel." -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Supprimé {device} depuis un châssis virtuel {chassis}" @@ -8514,10 +8414,9 @@ msgstr "Oui" msgid "No" msgstr "Non" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "Lien" @@ -8980,15 +8879,6 @@ msgstr "Un ou plusieurs types d'objets attribués" msgid "Field data type (e.g. text, integer, etc.)" msgstr "Type de données de champ (par exemple texte, entier, etc.)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "Type d'objet" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "Type d'objet (pour les champs d'objets ou multi-objets)" @@ -9093,7 +8983,7 @@ msgstr "La classification de l'entrée" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -9120,15 +9010,14 @@ msgstr "" #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "Groupes" @@ -9154,13 +9043,6 @@ msgstr "Type de champ" msgid "Choices" msgstr "Choix" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "Données" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10488,17 +10370,6 @@ msgstr "Extension de fichier" msgid "As Attachment" msgstr "En tant que pièce jointe" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "Fichier de données" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10514,9 +10385,8 @@ msgstr "Image" msgid "Filename" msgstr "Nom de fichier" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "Taille" @@ -10571,6 +10441,7 @@ msgstr "" "Essayez de reconfigurer le widget ou supprimez-le de votre tableau de bord." #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10717,7 +10588,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "Texte brut" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "Service" @@ -10780,7 +10651,6 @@ msgstr "Exportation de L2VPN (identifiant)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "Préfixe" @@ -10830,7 +10700,6 @@ msgstr "Numéro de VLAN (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "Adresse" @@ -10887,7 +10756,7 @@ msgstr "Groupe FHRP (ID)" msgid "IP address (ID)" msgstr "Adresse IP (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "Adresse IP" @@ -10954,8 +10823,8 @@ msgstr "Est privé" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "RIR" @@ -10966,15 +10835,13 @@ msgstr "Date d'ajout" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Groupe VLAN" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10989,7 +10856,7 @@ msgid "Prefix length" msgstr "Longueur du préfixe" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "C'est une plage d'adresses" @@ -11008,23 +10875,21 @@ msgstr "Attribution de VLAN" msgid "Treat as populated" msgstr "Traiter comme peuplé" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "Nom DNS" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protocole" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "ID de groupe" @@ -11045,9 +10910,8 @@ msgid "Authentication key" msgstr "Clé d'authentification" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -11076,23 +10940,22 @@ msgstr "Site et groupe" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "Politique" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "Ports" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "Importer des cibles d'itinéraire" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "Cibles d'itinéraire d'exportation" @@ -11122,7 +10985,6 @@ msgstr "Identifiant de l'étendue" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "Groupe FHRP" @@ -11238,7 +11100,7 @@ msgid "Exported by VRF" msgstr "Exporté par VRF" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "Privé" @@ -11247,7 +11109,7 @@ msgstr "Privé" msgid "Address family" msgstr "Famille d'adresses" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "Plage" @@ -11275,18 +11137,10 @@ msgstr "Appareil/VM" msgid "Parent Prefix" msgstr "Préfixe parent" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "Nom DNS" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLAN" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "Contient un ID de VLAN" @@ -11304,26 +11158,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Q-en-Q/802.1AD" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "IDENTIFIANT DE VLAN" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "Cible de l'itinéraire" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "Agrégat" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "Plage ASN" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "Plage IP" @@ -11377,8 +11229,7 @@ msgstr "Adresse IP virtuelle" msgid "Assignment already exists" msgstr "L'affectation existe déjà" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "ID de VLAN" @@ -11397,7 +11248,6 @@ msgstr "" "VLAN à cette fin." #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "Règle de traduction VLAN" @@ -11410,7 +11260,6 @@ msgstr "" "plage peut être spécifiée à l'aide d'un trait d'union." #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "Modèle de service d'application" @@ -11588,7 +11437,7 @@ msgstr "" "Toutes les adresses IP comprises dans ce préfixe sont considérées comme " "utilisables" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "marquer comme utilisé" @@ -11600,12 +11449,12 @@ msgstr "préfixes" msgid "Cannot create prefix with /0 mask." msgstr "Impossible de créer un préfixe avec le masque /0." -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "tableau global" @@ -11614,116 +11463,116 @@ msgstr "tableau global" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Préfixe dupliqué trouvé dans {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "adresse de départ" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "Adresse IPv4 ou IPv6 (avec masque)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "adresse finale" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "État opérationnel de cette plage" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "La principale fonction de cette gamme" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "marquer comme peuplé" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "Empêcher la création d'adresses IP dans cette plage" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "Signaler que l'espace est pleinement utilisé" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "plage IP" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "Plages IP" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "Les versions des adresses IP de début et de fin doivent correspondre" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "Les masques d'adresse IP de début et de fin doivent correspondre" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" "L'adresse de fin doit être supérieure à l'adresse de début ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Les adresses définies se chevauchent avec la plage {overlapping_range} en " "VRF {vrf}" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "La plage définie dépasse la taille maximale prise en charge ({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "adresse" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "L'état opérationnel de cette adresse IP" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "Le rôle fonctionnel de cette propriété intellectuelle" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (intérieur)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "" "L'adresse IP pour laquelle cette adresse est l'adresse IP « extérieure »" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Nom d'hôte ou FQDN (pas de distinction majuscules/minuscules)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "Adresses IP" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "Impossible de créer une adresse IP avec le masque /0." -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "" "{ip} est un identifiant réseau, qui ne peut pas être attribué à une " "interface." -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." @@ -11731,17 +11580,17 @@ msgstr "" "{ip} est une adresse de diffusion, qui ne peut pas être attribuée à une " "interface." -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Adresse IP dupliquée trouvée dans {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "Impossible de créer une adresse IP {ip} gamme intérieure {range}." -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -11749,7 +11598,7 @@ msgstr "" "Impossible de réattribuer l'adresse IP lorsqu'elle est désignée comme " "adresse IP principale pour l'objet parent" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" @@ -11757,7 +11606,7 @@ msgstr "" "Impossible de réattribuer l'adresse IP alors qu'elle est désignée comme " "adresse IP OOB pour l'objet parent" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "" "Seules les adresses IPv6 peuvent être de type SLAAC (Configuration " @@ -11959,17 +11808,17 @@ msgid "Added" msgstr "Ajouté" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "Préfixes" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "Utilisation" @@ -11996,7 +11845,7 @@ msgid "Pool" msgstr "Plage d'adresses" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "Marqué comme utilisé" @@ -12004,7 +11853,7 @@ msgstr "Marqué comme utilisé" msgid "Start address" msgstr "Adresse de départ" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "Marqué comme peuplé" @@ -12034,17 +11883,14 @@ msgid "VID" msgstr "VID" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "Règles" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "VID local" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "VID à distance" @@ -12064,16 +11910,71 @@ msgstr "Cibles d'importation" msgid "Export Targets" msgstr "Objectifs d'exportation" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "Créer un groupe" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Associer un groupe" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "Route Distinguisher" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "Espace IP unique" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "Numéro d'AS" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Famille" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "Date d'ajout" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "Adresse de début" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "Adresse de fin" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (externe)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "IP principale" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "OOB IP" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "Type d'authentification" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "Clé d'authentification" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Rôle Q-in-Q" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "VLAN pour les clients" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "Ajouter un VLAN" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -12113,26 +12014,79 @@ msgstr "" "Seuls les caractères alphanumériques, les astérisques, les tirets, les " "points et les traits de soulignement sont autorisés dans les noms DNS" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "Interfaces des appareils" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "Interfaces de machines virtuelles" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "Importer des VRF" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "Exporter des VRF" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "Importer des L2VPN" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "Exporter des L2VPN" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "Préfixes dupliqués" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "Préfixes pour les parents" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "Préfixes pour enfants" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "Plages pour enfants" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "IP dupliquées" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "Services d'application" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "IP associées" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "Règles de traduction VLAN" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "Ajouter une règle" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "Adresses IP virtuelles" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "Ajouter une adresse IP" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "Ajouter un préfixe" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "Ce champ n'est peut-être pas vide." @@ -12650,7 +12604,6 @@ msgid "Contact Groups" msgstr "Groupes de contacts" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Rôles de contact" @@ -12670,11 +12623,6 @@ msgstr "Élévations" msgid "Modules" msgstr "Modules" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "Contextes des appareils virtuels" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "Profils de type de module" @@ -12688,12 +12636,11 @@ msgid "Device Components" msgstr "Composants de l'appareil" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Rôles des articles d'inventaire" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "Connexions" @@ -12734,7 +12681,6 @@ msgid "VLAN Translation Policies" msgstr "Politiques de traduction VLAN" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "Règles de traduction VLAN" @@ -12813,7 +12759,6 @@ msgid "Circuit Terminations" msgstr "Terminaisons de circuits" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "Circuits virtuels" @@ -12829,18 +12774,11 @@ msgstr "Terminaisons de circuits virtuels" msgid "Circuit Groups" msgstr "Groupes de circuits" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "Devoirs de groupe" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "Prestataires" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Comptes des fournisseurs" @@ -12936,7 +12874,7 @@ msgid "Journal Entries" msgstr "Entrées de journal" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Journal des modifications" @@ -12989,6 +12927,7 @@ msgstr "Tâches d'arrière-plan" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -13007,8 +12946,9 @@ msgstr "Cloner" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -13020,8 +12960,9 @@ msgstr "Modifier" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -13298,7 +13239,7 @@ msgstr "Plugin Dummy" msgid "Copy" msgstr "Copier" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -13306,11 +13247,19 @@ msgstr "" "Option de décodage non valide : {decoding}! Ça doit être l'un des " "{image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" +"Valeur max_items non valide : {max_items}! Doit être un entier positif ou " +"Aucun." + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "Coordonnées GPS" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "Objets associés" @@ -13590,8 +13539,7 @@ msgid "Account Details" msgstr "Détails du compte" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "Courrier électronique" @@ -13613,16 +13561,15 @@ msgid "Assigned Groups" msgstr "Groupes associés" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13697,55 +13644,21 @@ msgstr "Code source" msgid "Community" msgstr "Communauté" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "Date d'installation" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "Date de résiliation" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "Échanger les terminaisons du circuit" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "Échanger les terminaisons du circuit %(circuit)s?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "Coté A" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Côté Z" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "Attribuer un circuit" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "Affectation de groupes de circuits" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "Ajouter un circuit" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "Type de circuit" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "Point de terminaison" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "Marqué comme connecté" @@ -13755,13 +13668,14 @@ msgstr "pour" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "Trace" @@ -13775,37 +13689,30 @@ msgstr "Retirez le câble" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "Déconnectez" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "Connecter" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "En aval" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "En amont" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "Connexion croisée" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "Panneau de raccordement et port" @@ -13813,39 +13720,10 @@ msgstr "Panneau de raccordement et port" msgid "Add circuit" msgstr "Ajouter un circuit" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "Compte du fournisseur" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "Ajouter un circuit virtuel" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "Ajouter une terminaison" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "Terminaison du circuit virtuel" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "Ajouter un circuit virtuel" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "Type de circuit virtuel" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "Données de configuration" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "Commentaire" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13868,31 +13746,11 @@ msgstr "Nouvelle valeur" msgid "Changed" msgstr "Modifié" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "octets" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "Hachage SHA256" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "Contenu" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "Dernière synchronisation" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "Backend" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "Aucun paramètre défini" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "Positions en baie" @@ -13951,72 +13809,11 @@ msgstr "Le fichier de données associé à cet objet a été supprimé" msgid "Data Synced" msgstr "Données synchronisées" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "Emploi" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "Créé par" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "Planification" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "chaque %(interval)s minutes" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "Changer" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "Différence" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "Précédent" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "Suivant" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "Objet créé" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "Objet supprimé" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "Aucune modification" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "Données avant modification" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Attention : modification non-atomique vis à vis de la modification " -"précédente" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "Données après modification" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Voir toutes les %(count)s modifications" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -14032,6 +13829,61 @@ msgstr "jours" msgid "Indefinite" msgstr "Indéfini" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "Commentaire" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "Données de configuration" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "Aucun paramètre défini" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "Différence" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "Précédent" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "Suivant" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "Objet créé" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "Objet supprimé" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "Aucune modification" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "Données après modification" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "Données avant modification" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Attention : modification non-atomique vis à vis de la modification " +"précédente" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Voir toutes les %(count)s modifications" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "Non installé" @@ -14321,22 +14173,13 @@ msgstr "Segments" msgid "Incomplete" msgstr "Incomplet" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "Non connecté" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT pour" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "NAT" @@ -14344,7 +14187,7 @@ msgstr "NAT" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "Copier dans le presse-papiers" @@ -14394,10 +14237,6 @@ msgstr "Supprimer" msgid "Local Config Context Data" msgstr "Données contextuelles de configuration locales" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "Baie pour appareils" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -14425,34 +14264,6 @@ msgstr "Baie" msgid "Add Device" msgstr "Ajouter un appareil" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "Positions" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "Marqué comme connecté" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "État de la connexion" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "Cartographie des ports" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "Aucun mappage n'a été défini" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "Côté A" @@ -14478,6 +14289,8 @@ msgid "Path Status" msgstr "État du chemin" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "Non joignable" @@ -14486,8 +14299,6 @@ msgid "Path Endpoints" msgstr "Points de terminaison du chemin" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "Non connecté" @@ -14533,94 +14344,10 @@ msgstr "Position en baie" msgid "Loading..." msgstr "Chargement en cours..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "Ajouter une interface enfant" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "Vitesse/Duplex" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "Mode PoE" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "Type de PoE" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "Interfaces pontées" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "Traduction VLAN" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "Liaison sans fil" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "Canal" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "Fréquence du canal" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "MHz" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "Largeur du canal" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "Ajouter une adresse IP" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "Ajouter une adresse MAC" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "Objet parent" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "Identifiant de la pièce" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "Étiquette d'actif" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "Principale pour l'interface" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "Ajouter un type d'appareil" @@ -14629,6 +14356,64 @@ msgstr "Ajouter un type d'appareil" msgid "Add Module Type" msgstr "Ajouter un type de module" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "État du chemin" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "Points de terminaison du chemin" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "Non connecté" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "Cartographie des ports" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "Aucun mappage n'a été défini" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "Liaison sans fil" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "Canal" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "Fréquence du canal" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "MHz" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "Largeur du canal" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "Aucun profil attribué" @@ -14648,7 +14433,7 @@ msgstr "Alloué" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "VA" @@ -14672,44 +14457,6 @@ msgstr "Images uniquement" msgid "Labels only" msgstr "Étiquettes uniquement" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "Appareil connecté" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "Utilisation (allouée)" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "Caractéristiques électriques" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "A" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "Circuit" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "Ajouter des sources d'alimentation" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "Consommation maximale" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "Puissance alloué" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "Ajouter une réservation" @@ -14749,10 +14496,6 @@ msgstr "Ajouter un site" msgid "Attachment" msgstr "Pièce jointe" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "Ajouter un membre" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14804,10 +14547,6 @@ msgstr "" "Êtes-vous sûr de vouloir supprimer %(device)s du châssis " "virtuel %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "Identifiant" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -15148,6 +14887,10 @@ msgstr "" msgid "Journal Entry" msgstr "Entrée de journal" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "Créé par" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "Groupe de notifications" @@ -15643,37 +15386,15 @@ msgstr "Déconnexion" msgid "Log In" msgstr "Connexion" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Famille" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "Date d'ajout" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "Ajouter un préfixe" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "Numéro d'AS" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "Type d'authentification" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "Clé d'authentification" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "Adresses IP virtuelles" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "Globale" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15708,15 +15429,6 @@ msgstr "Afficher disponible" msgid "Show All" msgstr "Afficher tout" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "Globale" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (externe)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "Attribuer une adresse IP" @@ -15733,51 +15445,43 @@ msgstr "Résultats de recherche" msgid "Bulk Add IP Addresses" msgstr "Ajouter des adresses IP en masse" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "Adresse de début" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "Adresse de fin" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "Détails du préfixe" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "Marqué comme entièrement utilisé" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "IP enfants" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "IP disponibles" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "Première adresse IP disponible" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "Détails du préfixe" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "Adresse réseau" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "Masque de sous-réseau" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "Masque Wildcard" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "Adresse de diffusion" @@ -15789,58 +15493,14 @@ msgstr "Ajouter une plage d'adresses IP" msgid "Hide Depth Indicators" msgstr "Masquer les indicateurs de profondeur" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "Ajouter un agrégat" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "Importer des VRF" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "Exporter des VRF" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "Importer des L2VPN" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "Exporter des L2VPN" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Rôle Q-in-Q" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "Ajouter un préfixe" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "VLAN pour les clients" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "Ajouter un VLAN" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "Ajouter un VLAN" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "Ajouter une règle" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "Route Distinguisher" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "Espace IP unique" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15909,61 +15569,14 @@ msgid "Click here to attempt loading NetBox again." msgstr "" "Cliquez ici pour essayer de recharger NetBox." -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "Contacter" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "Titre" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "Téléphone" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "Groupe de contact" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "Ajouter un groupe de contacts" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "Rôle du contact" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "Ajouter un contact" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "Ajouter un locataire" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "Groupe d'entités" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "Ajouter un groupe d'entités" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -16074,16 +15687,28 @@ msgstr "Politique IPSec" msgid "PFS Group" msgstr "Groupe PFS" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "Ajouter une terminaison" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "Ajouter un tunnel" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "Fréquence du canal" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "MHz" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "Largeur du canal" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "Ajouter un réseau sans fil" @@ -16118,6 +15743,20 @@ msgstr "Rôle du contact (ID)" msgid "Contact role (slug)" msgstr "Rôle de contact (slug)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "Contacter" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "Rôle du contact" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "Groupe de contact" @@ -16150,6 +15789,15 @@ msgstr "Ajouter des groupes" msgid "Remove groups" msgstr "Supprimer des groupes" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "Titre" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "Téléphone" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -16162,6 +15810,17 @@ msgstr "" msgid "Assigned contact" msgstr "Contact associé" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "Groupe d'entités" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "Groupe de contact" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "groupe de contacts" @@ -16263,6 +15922,14 @@ msgstr "Lien de contact" msgid "Contact Description" msgstr "Description du contact" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "Ajouter un groupe d'entités" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "Ajouter un groupe de contacts" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -17567,10 +17234,6 @@ msgstr "Ajouté {count} appareils à mettre en cluster {cluster}" msgid "Assigned VLANs" msgstr "VLAN assignés" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "Interfaces pour enfants" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPSec - Transport" diff --git a/netbox/translations/it/LC_MESSAGES/django.mo b/netbox/translations/it/LC_MESSAGES/django.mo index 9db70a07eee57c4ca9a988ff6077ddba4362cc8e..54e59be1120179df44a8deb1be7bad855f06185c 100644 GIT binary patch delta 76025 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, se presente, verrà automaticamente sostituito con il " "valore della posizione durante la creazione di un nuovo modulo." -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "Modello di porta console" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "Modello di porta del server console" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "Modello di porta anteriore" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "Modello di interfaccia" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "Modello di presa di corrente" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "Modello di porta di alimentazione" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "Modello di porta posteriore" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "Porta console" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "Porta Console Server" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "Porta anteriore" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "Porta posteriore" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "Porta di alimentazione" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "Presa di corrente" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "Assegnazione dei componenti" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "Un InventoryItem può essere assegnato solo a un singolo componente." -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "Interfaccia LAG" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "Filtra le VLAN disponibili per l'assegnazione per gruppo." -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "Dispositivo per bambini" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -5990,43 +5830,41 @@ msgstr "" "I dispositivi secondari devono prima essere creati e assegnati al sito e al " "rack del dispositivo principale." -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "Porta console" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "Porta console server" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "Porta anteriore" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "Presa di corrente" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "Porta posteriore" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "Articolo di inventario" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "Ruolo dell'articolo di inventario" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "Interfaccia VM" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -6040,7 +5878,7 @@ msgstr "Interfaccia VM" msgid "Virtual Machine" msgstr "Macchina virtuale" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "Un indirizzo MAC può essere assegnato a un solo oggetto." @@ -6064,9 +5902,9 @@ msgstr "" "attesi." #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "Membri" @@ -6271,41 +6109,41 @@ msgstr "" "Un modello di componente deve essere associato a un tipo di dispositivo o a " "un tipo di modulo." -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "modello di porta console" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "modelli di porte per console" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "modello di porta console server" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "modelli di porte per console server" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "pareggio massimo" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "pareggio assegnato" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "modello di porta di alimentazione" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "modelli di porte di alimentazione" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." @@ -6313,97 +6151,97 @@ msgstr "" "Il pareggio assegnato non può superare il pareggio massimo " "({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "gamba di alimentazione" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "Fase (per alimentazioni trifase)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "modello di presa di corrente" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "modelli di prese di corrente" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Porta di alimentazione principale ({power_port}) deve appartenere allo " "stesso tipo di dispositivo" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Porta di alimentazione principale ({power_port}) deve appartenere allo " "stesso tipo di modulo" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "solo gestione" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "interfaccia bridge" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "ruolo wireless" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "modello di interfaccia" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "modelli di interfaccia" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" "Interfaccia bridge ({bridge}) deve appartenere allo stesso tipo di " "dispositivo" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "" "Interfaccia bridge ({bridge}) deve appartenere allo stesso tipo di modulo" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "" "Porta posteriore ({rear_port}) deve appartenere allo stesso tipo di " "dispositivo" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "posizioni" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "modello di porta anteriore" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "modelli di porte anteriori" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " @@ -6412,15 +6250,15 @@ msgstr "" "Il numero di posizioni non può essere inferiore al numero di modelli di " "porte posteriori mappati ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "modello di porta posteriore" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "modelli di porte posteriori" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " @@ -6429,35 +6267,35 @@ msgstr "" "Il numero di posizioni non può essere inferiore al numero di modelli di " "porte frontali mappati ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "posizione" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "" "Identificatore a cui fare riferimento quando si rinominano i componenti " "installati" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "modello di alloggiamento del modulo" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "modelli module bay" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "modello di alloggiamento per dispositivi" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "modelli di alloggiamento per dispositivi" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -6466,21 +6304,21 @@ msgstr "" "Ruolo del tipo di dispositivo secondario ({device_type}) deve essere " "impostato su «principale» per consentire gli alloggiamenti dei dispositivi." -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "ID della parte" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "Identificativo del pezzo assegnato dal produttore" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "modello di articolo di inventario" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "modelli di articoli di inventario" @@ -6619,10 +6457,10 @@ msgid "tagged VLANs" msgstr "VLAN contrassegnate" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "SVLAN Q-in-Q" @@ -7807,11 +7645,11 @@ msgstr "Aggiungi componenti" msgid "Disconnect Selected" msgstr "Disconnetti selezionato" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "Terminazione A" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "Terminazione B" @@ -7856,6 +7694,8 @@ msgstr "Nome del colore" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "Raggiungibile" @@ -7892,7 +7732,7 @@ msgstr "Altezza U" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "Indirizzo IP" @@ -7941,16 +7781,14 @@ msgid "Power outlets" msgstr "Prese di corrente" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7983,18 +7821,17 @@ msgid "Device Site" msgstr "Sito del dispositivo" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Modulo Bay" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "Articoli di inventario" @@ -8018,13 +7855,13 @@ msgstr "Assorbimento massimo (W)" msgid "Allocated draw (W)" msgstr "Pareggio assegnato (W)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "Indirizzi IP" @@ -8032,18 +7869,18 @@ msgstr "Indirizzi IP" msgid "Primary MAC" msgstr "MAC primario" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "Indirizzi MAC" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Gruppi FHRP" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -8052,7 +7889,6 @@ msgid "Tunnel" msgstr "Tunnel" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Solo gestione" @@ -8060,7 +7896,7 @@ msgstr "Solo gestione" msgid "VDCs" msgstr "VDC" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "Circuito virtuale" @@ -8069,7 +7905,7 @@ msgstr "Circuito virtuale" msgid "Mappings" msgstr "Mappature" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "Dispositivo installato" @@ -8093,7 +7929,7 @@ msgstr "Seriale installato" msgid "Installed Asset Tag" msgstr "Asset Tag installato" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "Modulo installato" @@ -8110,7 +7946,6 @@ msgid "Module Status" msgstr "Stato del modulo" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "Componente" @@ -8128,7 +7963,7 @@ msgstr "Tipi di rack" msgid "Device Types" msgstr "Tipi di dispositivi" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "Tipi di moduli" @@ -8151,8 +7986,8 @@ msgstr "Profondità completa" msgid "Device Count" msgstr "Numero dispositivi" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -8162,8 +7997,8 @@ msgstr "Numero dispositivi" msgid "Console Ports" msgstr "Porte console" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -8173,8 +8008,8 @@ msgstr "Porte console" msgid "Console Server Ports" msgstr "Porte Console Server" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -8184,8 +8019,8 @@ msgstr "Porte Console Server" msgid "Power Ports" msgstr "Porte di alimentazione" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -8195,8 +8030,8 @@ msgstr "Porte di alimentazione" msgid "Power Outlets" msgstr "Prese di corrente" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -8205,8 +8040,8 @@ msgstr "Prese di corrente" msgid "Front Ports" msgstr "Porte anteriori" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -8216,16 +8051,16 @@ msgstr "Porte anteriori" msgid "Rear Ports" msgstr "Porte posteriori" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Alloggiamenti per dispositivi" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8240,11 +8075,10 @@ msgid "Module Count" msgstr "Numero moduli" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Alimenti di alimentazione" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "Utilizzo massimo" @@ -8259,7 +8093,7 @@ msgid "Racks" msgstr "Scaffali" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Altezza" @@ -8307,85 +8141,123 @@ msgstr "Gruppi VLAN" msgid "Test case must set peer_termination_type" msgstr "Il test case deve impostare peer_termination_type" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} millimetri" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "Numero di serie" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "Peso massimo" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "Direzione" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "IP fuori banda" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "Genitore/figlio" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "Nome del modello" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "Elemento principale" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "ID della parte" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "Dispositivo connesso" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "Utilizzo (allocato)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "Caratteristiche elettriche" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{} V" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{} UN" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "Principale per l'interfaccia" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "Membri dello chassis virtuale" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "Utilizzo dell'energia" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "Traduzione VLAN" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "Disconnesso {count} {type}" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "Regioni per bambini" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "Gruppi di bambini" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "Dispositivi non montati su rack" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "Sedi per bambini" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "Prenotazioni" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "Ruoli dei dispositivi secondari" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "piattaforme per bambini" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "Servizi applicativi" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8393,42 +8265,70 @@ msgstr "Servizi applicativi" msgid "Config Context" msgstr "Contesto di configurazione" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "Configurazione del rendering" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "Macchine virtuali" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "Contesti dei dispositivi virtuali" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "VLAN" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "Membri del GAL" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "Traduzione VLAN" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "Interfacce con ponte" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "Interfacce per bambini" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Dispositivo installato {device} nella baia {device_bay}." -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Dispositivo rimosso {device} dalla baia {device_bay}." -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "Bambini" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "Membro aggiunto {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" "Impossibile rimuovere il dispositivo master {device} dallo chassis virtuale." -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Rimosso {device} da chassis virtuale {chassis}" @@ -8524,10 +8424,9 @@ msgstr "sì" msgid "No" msgstr "No" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "Link" @@ -8990,15 +8889,6 @@ msgstr "Uno o più tipi di oggetti assegnati" msgid "Field data type (e.g. text, integer, etc.)" msgstr "Tipo di dati del campo (ad esempio testo, numero intero, ecc.)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "Tipo di oggetto" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "Tipo di oggetto (per campi oggetto o multioggetto)" @@ -9104,7 +8994,7 @@ msgstr "La classificazione degli ingressi" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -9130,15 +9020,14 @@ msgstr "Nomi utente separati da virgole, racchiusi tra virgolette" #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "Gruppi" @@ -9164,13 +9053,6 @@ msgstr "Tipo di campo" msgid "Choices" msgstr "Scelte" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "Dati" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10485,17 +10367,6 @@ msgstr "Estensione del file" msgid "As Attachment" msgstr "Come allegato" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "File di dati" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10511,9 +10382,8 @@ msgstr "Immagine" msgid "Filename" msgstr "Nome del file" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "Taglia" @@ -10568,6 +10438,7 @@ msgid "Please try reconfiguring the widget, or remove it from your dashboard." msgstr "Prova a riconfigurare il widget o a rimuoverlo dalla dashboard." #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10714,7 +10585,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "Testo in chiaro" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "Servizio" @@ -10777,7 +10648,6 @@ msgstr "Esportazione di L2VPN (identificatore)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "Prefisso" @@ -10827,7 +10697,6 @@ msgstr "Numero VLAN (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "Indirizzo" @@ -10884,7 +10753,7 @@ msgstr "Gruppo FHRP (ID)" msgid "IP address (ID)" msgstr "Indirizzo IP (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "indirizzo IP" @@ -10951,8 +10820,8 @@ msgstr "È privato" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "RIR" @@ -10963,15 +10832,13 @@ msgstr "Data aggiunta" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Gruppo VLAN" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10986,7 +10853,7 @@ msgid "Prefix length" msgstr "Lunghezza del prefisso" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "È una piscina" @@ -11005,23 +10872,21 @@ msgstr "Assegnazione VLAN" msgid "Treat as populated" msgstr "Tratta come popolato" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "Nome DNS" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protocollo" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "ID gruppo" @@ -11042,9 +10907,8 @@ msgid "Authentication key" msgstr "Chiave di autenticazione" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -11073,23 +10937,22 @@ msgstr "Sito e gruppo" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "Politica" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "Porte" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "Importa gli obiettivi del percorso" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "Obiettivi del percorso di esportazione" @@ -11119,7 +10982,6 @@ msgstr "ID ambito" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "Gruppo FHRP" @@ -11232,7 +11094,7 @@ msgid "Exported by VRF" msgstr "Esportato da VRF" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "Privato" @@ -11241,7 +11103,7 @@ msgstr "Privato" msgid "Address family" msgstr "Famiglia di indirizzi" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "Intervallo" @@ -11269,18 +11131,10 @@ msgstr "Dispositivo/VM" msgid "Parent Prefix" msgstr "Prefisso principale" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "Nome DNS" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLAN" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "Contiene l'ID VLAN" @@ -11298,26 +11152,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Q-in-Q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "ID VLAN" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "Obiettivo del percorso" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "Aggregato" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "Gamma ASN" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "Intervallo IP" @@ -11373,8 +11225,7 @@ msgstr "Indirizzo IP virtuale" msgid "Assignment already exists" msgstr "L'assegnazione esiste già" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "ID VLAN" @@ -11393,7 +11244,6 @@ msgstr "" " per questo scopo." #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "Regola di traduzione VLAN" @@ -11406,7 +11256,6 @@ msgstr "" "specificare un intervallo utilizzando un trattino." #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "Modello di servizio applicativo" @@ -11584,7 +11433,7 @@ msgstr "" "Tutti gli indirizzi IP all'interno di questo prefisso sono considerati " "utilizzabili" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "marchio utilizzato" @@ -11596,12 +11445,12 @@ msgstr "prefissi" msgid "Cannot create prefix with /0 mask." msgstr "Impossibile creare un prefisso con la maschera /0." -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "tabella globale" @@ -11610,57 +11459,57 @@ msgstr "tabella globale" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Prefisso duplicato trovato in {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "indirizzo iniziale" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "Indirizzo IPv4 o IPv6 (con maschera)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "indirizzo finale" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "Stato operativo di questa gamma" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "La funzione principale di questa gamma" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "contrassegno popolato" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "" "Impedire la creazione di indirizzi IP all'interno di questo intervallo" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "Segnala lo spazio come completamente utilizzato" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "Intervallo IP" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "Intervalli IP" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "Le versioni iniziali e finali degli indirizzi IP devono corrispondere" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "Le maschere di indirizzo IP iniziale e finale devono corrispondere" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" @@ -11668,57 +11517,57 @@ msgstr "" "L'indirizzo finale deve essere maggiore dell'indirizzo iniziale " "({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Gli indirizzi definiti si sovrappongono all'intervallo {overlapping_range} " "in VRF {vrf}" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "L'intervallo definito supera la dimensione massima supportata ({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "indirizzo" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "Lo stato operativo di questo IP" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "Il ruolo funzionale di questo IP" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (interno)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "L'IP per il quale questo indirizzo è l'IP «esterno»" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Nome host o FQDN (senza distinzione tra maiuscole e minuscole)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "Indirizzi IP" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "Impossibile creare un indirizzo IP con la maschera /0." -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip} è un ID di rete, che non può essere assegnato a un'interfaccia." -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." @@ -11726,17 +11575,17 @@ msgstr "" "{ip} è un indirizzo di trasmissione, che non può essere assegnato a " "un'interfaccia." -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Indirizzo IP duplicato trovato in {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "Impossibile creare l'indirizzo IP {ip} gamma interna {range}." -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -11744,7 +11593,7 @@ msgstr "" "Impossibile riassegnare l'indirizzo IP mentre è designato come IP primario " "per l'oggetto padre" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" @@ -11752,7 +11601,7 @@ msgstr "" "Impossibile riassegnare l'indirizzo IP mentre è designato come IP OOB per " "l'oggetto padre" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Solo agli indirizzi IPv6 può essere assegnato lo stato SLAAC" @@ -11953,17 +11802,17 @@ msgid "Added" msgstr "Aggiunto" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "Prefissi" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "Utilizzo" @@ -11990,7 +11839,7 @@ msgid "Pool" msgstr "Piscina" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "Contrassegnato Utilizzato" @@ -11998,7 +11847,7 @@ msgstr "Contrassegnato Utilizzato" msgid "Start address" msgstr "Indirizzo iniziale" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "Contrassegnato come popolato" @@ -12028,17 +11877,14 @@ msgid "VID" msgstr "VID" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "Regole" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "VID locale" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "VID remoto" @@ -12058,16 +11904,71 @@ msgstr "Obiettivi di importazione" msgid "Export Targets" msgstr "Obiettivi di esportazione" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "Crea gruppo" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Assegna gruppo" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "Distinguitore del percorso" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "Spazio IP unico" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "Numero AS" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Famiglia" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "Data aggiunta" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "Indirizzo di partenza" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "Indirizzo finale" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (esterno)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "IP primario" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "OOB IP" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "Tipo di autenticazione" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "Chiave di autenticazione" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Ruolo Q-in-Q" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "VLAN per i clienti" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "Aggiungi una VLAN" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -12107,26 +12008,79 @@ msgstr "" "Nei nomi DNS sono consentiti solo caratteri alfanumerici, asterischi, " "trattini, punti e trattini bassi" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "Interfacce dei dispositivi" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "Interfacce VM" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "Importazione di VRF" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "Esportazione di VRF" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "Importazione di VPN L2" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "Esportazione di VPN L2" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "Prefissi duplicati" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "Prefissi principali" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "Prefissi per bambini" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "Gamme per bambini" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "IP duplicati" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "Servizi applicativi" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "IP correlati" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "Regole di traduzione VLAN" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "Aggiungi regola" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "Indirizzi IP virtuali" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "Aggiungi indirizzo IP" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "Aggiungere un prefisso" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "Questo campo non può essere vuoto." @@ -12640,7 +12594,6 @@ msgid "Contact Groups" msgstr "Gruppi di contatti" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Ruoli di contatto" @@ -12660,11 +12613,6 @@ msgstr "Elevazioni" msgid "Modules" msgstr "Moduli" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "Contesti dei dispositivi virtuali" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "Profili del tipo di modulo" @@ -12678,12 +12626,11 @@ msgid "Device Components" msgstr "Componenti del dispositivo" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Ruoli degli articoli di inventario" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "Connessioni" @@ -12724,7 +12671,6 @@ msgid "VLAN Translation Policies" msgstr "Politiche di traduzione VLAN" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "Regole di traduzione VLAN" @@ -12803,7 +12749,6 @@ msgid "Circuit Terminations" msgstr "Terminazioni del circuito" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "Circuiti virtuali" @@ -12819,18 +12764,11 @@ msgstr "Terminazioni di circuiti virtuali" msgid "Circuit Groups" msgstr "Gruppi di circuiti" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "Assegnazioni di gruppo" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "Fornitori" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Account dei fornitori" @@ -12926,7 +12864,7 @@ msgid "Journal Entries" msgstr "Voci di diario" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Registro delle modifiche" @@ -12979,6 +12917,7 @@ msgstr "Attività in background" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12997,8 +12936,9 @@ msgstr "Clona" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -13010,8 +12950,9 @@ msgstr "Modifica" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -13289,7 +13230,7 @@ msgstr "Plugin fittizio" msgid "Copy" msgstr "Copia" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -13297,11 +13238,19 @@ msgstr "" "Opzione di decodifica non valida: {decoding}! Deve essere uno dei " "{image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" +"Valore max_items non valido: {max_items}! Deve essere un numero intero " +"positivo o Nessuno." + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "Coordinate GPS" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "Oggetti correlati" @@ -13576,8 +13525,7 @@ msgid "Account Details" msgstr "Dettagli dell'account" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "E-mail" @@ -13599,16 +13547,15 @@ msgid "Assigned Groups" msgstr "Gruppi assegnati" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13683,55 +13630,21 @@ msgstr "Codice sorgente" msgid "Community" msgstr "Comunità" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "Data di installazione" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "Data di cessazione" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "Terminazioni del circuito di scambio" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "Sostituisci queste terminazioni con un circuito %(circuit)s?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "Un lato" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Lato Z" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "Assegna circuito" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "Assegnazione del gruppo di circuiti" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "Aggiungi circuito" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "Tipo di circuito" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "Punto di terminazione" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "Contrassegnata come connessa" @@ -13741,13 +13654,14 @@ msgstr "a" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "Traccia" @@ -13761,37 +13675,30 @@ msgstr "Rimuovere il cavo" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "Disconnetti" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "Connetti" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "A valle" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "A monte" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "Connessione incrociata" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "Pannello di permutazione/porta" @@ -13799,39 +13706,10 @@ msgstr "Pannello di permutazione/porta" msgid "Add circuit" msgstr "Aggiungi circuito" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "Account fornitore" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "Aggiungi un circuito virtuale" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "Aggiungi terminazione" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "Terminazione del circuito virtuale" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "Aggiungi circuito virtuale" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "Tipo di circuito virtuale" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "Dati di configurazione" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "Commento" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13854,31 +13732,11 @@ msgstr "Nuovo valore" msgid "Changed" msgstr "Modificato" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "byte" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "Hash SHA256" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "Contenuto" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "Ultima sincronizzazione" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "Backend" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "Nessun parametro definito" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "Elevazioni dei rack" @@ -13937,72 +13795,11 @@ msgstr "Il file di dati associato a questo oggetto è stato eliminato" msgid "Data Synced" msgstr "Dati sincronizzati" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "Lavoro" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "Creato da" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "Pianificazione" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "ogni %(interval)s verbale" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "Cambia" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "Differenza" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "Precedente" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "Prossimo" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "Oggetto creato" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "Oggetto eliminato" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "Nessuna modifica" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "Dati precedenti alla modifica" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Avvertenza: confronto delle modifiche non atomiche con il record di " -"modifiche precedente" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "Dati successivi alla modifica" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Vedi tutto %(count)s Modifiche" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -14018,6 +13815,61 @@ msgstr "giorni" msgid "Indefinite" msgstr "Indefinito" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "Commento" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "Dati di configurazione" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "Nessun parametro definito" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "Differenza" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "Precedente" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "Prossimo" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "Oggetto creato" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "Oggetto eliminato" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "Nessuna modifica" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "Dati successivi alla modifica" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "Dati precedenti alla modifica" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Avvertenza: confronto delle modifiche non atomiche con il record di " +"modifiche precedente" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Vedi tutto %(count)s Modifiche" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "Non installato" @@ -14306,22 +14158,13 @@ msgstr "Segmenti" msgid "Incomplete" msgstr "Incompleto" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "Non connesso" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT per" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "NAT" @@ -14329,7 +14172,7 @@ msgstr "NAT" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "Copia negli appunti" @@ -14379,10 +14222,6 @@ msgstr "Rimuovi" msgid "Local Config Context Data" msgstr "Dati di contesto di configurazione locale" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "Vano per dispositivi" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -14410,34 +14249,6 @@ msgstr "Baia" msgid "Add Device" msgstr "Aggiungi dispositivo" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "Posizioni" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "Contrassegnato come connesso" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "Stato della connessione" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "Mappature delle porte" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "Nessuna mappatura definita" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "Un lato" @@ -14463,6 +14274,8 @@ msgid "Path Status" msgstr "Stato del percorso" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "Non raggiungibile" @@ -14471,8 +14284,6 @@ msgid "Path Endpoints" msgstr "Punti finali del percorso" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "Non connesso" @@ -14518,94 +14329,10 @@ msgstr "Elevazione del rack" msgid "Loading..." msgstr "Caricamento..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "Aggiungi interfaccia figlio" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "Velocità/Duplex" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "Modalità PoE" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "Tipo PoE" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "Interfacce con ponte" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "Traduzione VLAN" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "Collegamento wireless" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "Canale" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "Frequenza del canale" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "MHz" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "Larghezza del canale" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "Aggiungi indirizzo IP" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "Aggiungi indirizzo MAC" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "Elemento principale" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "ID della parte" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "Etichetta dell'asset" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "Principale per l'interfaccia" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "Aggiungi tipo di dispositivo" @@ -14614,6 +14341,64 @@ msgstr "Aggiungi tipo di dispositivo" msgid "Add Module Type" msgstr "Aggiungi tipo di modulo" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "Stato del percorso" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "Punti finali del percorso" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "Non connesso" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "Mappature delle porte" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "Nessuna mappatura definita" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "Collegamento wireless" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "Canale" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "Frequenza del canale" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "MHz" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "Larghezza del canale" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "Nessun profilo assegnato" @@ -14633,7 +14418,7 @@ msgstr "Assegnata" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "VA" @@ -14657,44 +14442,6 @@ msgstr "Solo immagini" msgid "Labels only" msgstr "Solo etichette" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "Dispositivo connesso" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "Utilizzo (allocato)" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "Caratteristiche elettriche" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "UN" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "Feed Leg" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "Aggiungi alimentatori" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "Estrazione massima" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "Pareggio assegnato" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "Aggiungi prenotazione" @@ -14734,10 +14481,6 @@ msgstr "Aggiungi sito" msgid "Attachment" msgstr "Allegato" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "Aggiungi membro" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14789,10 +14532,6 @@ msgstr "" "Sei sicuro di voler rimuovere %(device)s da chassis " "virtuale %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "Identificatore" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -15133,6 +14872,10 @@ msgstr "" msgid "Journal Entry" msgstr "Inserimento nel diario" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "Creato da" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "Gruppo di notifiche" @@ -15629,37 +15372,15 @@ msgstr "Esci" msgid "Log In" msgstr "Effettua il login" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Famiglia" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "Data aggiunta" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "Aggiungi prefisso" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "Numero AS" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "Tipo di autenticazione" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "Chiave di autenticazione" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "Indirizzi IP virtuali" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "Globale" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15694,15 +15415,6 @@ msgstr "Mostra disponibile" msgid "Show All" msgstr "Mostra tutto" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "Globale" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (esterno)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "Assegna un indirizzo IP" @@ -15719,51 +15431,43 @@ msgstr "Risultati della ricerca" msgid "Bulk Add IP Addresses" msgstr "Aggiungi indirizzi IP in blocco" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "Indirizzo di partenza" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "Indirizzo finale" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "Dettagli di indirizzamento" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "Contrassegnato come completamente utilizzato" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "IP per bambini" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "IP disponibili" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "Primo IP disponibile" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "Dettagli del prefisso" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "Indirizzo di rete" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "Maschera di rete" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "Maschera Wildcard" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "Indirizzo di trasmissione" @@ -15775,58 +15479,14 @@ msgstr "Aggiungi intervallo IP" msgid "Hide Depth Indicators" msgstr "Nascondi indicatori di profondità" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "Aggiungi aggregato" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "Importazione di VRF" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "Esportazione di VRF" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "Importazione di VPN L2" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "Esportazione di VPN L2" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Ruolo Q-in-Q" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "Aggiungere un prefisso" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "VLAN per i clienti" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "Aggiungi una VLAN" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "Aggiungi VLAN" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "Aggiungi regola" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "Distinguitore del percorso" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "Spazio IP unico" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15896,61 +15556,14 @@ msgstr "" "Fare clic qui per provare a caricare nuovamente" " NetBox." -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "Contatto" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "Titolo" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "Telefono" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "Gruppo di contatto" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "Aggiungi gruppo di contatti" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "Ruolo di contatto" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "Aggiungere un contatto" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "Aggiungi inquilino" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "Gruppo di inquilini" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "Aggiungi gruppo di inquilini" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -16061,16 +15674,28 @@ msgstr "Politica IPSec" msgid "PFS Group" msgstr "Gruppo PFS" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "Aggiungi terminazione" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "Aggiungi tunnel" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "Frequenza del canale" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "MHz" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "Larghezza del canale" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "Aggiungi LAN wireless" @@ -16105,6 +15730,20 @@ msgstr "Ruolo di contatto (ID)" msgid "Contact role (slug)" msgstr "Ruolo di contatto (slug)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "Contatto" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "Ruolo di contatto" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "Gruppo di contatti" @@ -16137,6 +15776,15 @@ msgstr "Aggiungere gruppi" msgid "Remove groups" msgstr "Rimuovi gruppi" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "Titolo" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "Telefono" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -16149,6 +15797,17 @@ msgstr "" msgid "Assigned contact" msgstr "Contatto assegnato" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "Gruppo di inquilini" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "Gruppo di contatto" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "gruppo di contatti" @@ -16251,6 +15910,14 @@ msgstr "Link di contatto" msgid "Contact Description" msgstr "Descrizione del contatto" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "Aggiungi gruppo di inquilini" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "Aggiungi gruppo di contatti" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -17548,10 +17215,6 @@ msgstr "Aggiunto {count} dispositivi da raggruppare {cluster}" msgid "Assigned VLANs" msgstr "VLAN assegnate" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "Interfacce per bambini" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPSec - Trasporto" diff --git a/netbox/translations/ja/LC_MESSAGES/django.mo b/netbox/translations/ja/LC_MESSAGES/django.mo index 511be862f63a502ead7541803541cbd70f52061a..3415a3bfe543cc7ffcffbb5a970239efa2e971f2 100644 GIT binary patch delta 75473 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 delta 75619 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, 2024 -# Jeremy Stretch, 2026 # teapot, 2026 +# Jeremy Stretch, 2026 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-14 05:18+0000\n" +"POT-Creation-Date: 2026-03-31 05:31+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" -"Last-Translator: teapot, 2026\n" +"Last-Translator: Jeremy Stretch, 2026\n" "Language-Team: Japanese (https://app.transifex.com/netbox-community/teams/178115/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -46,9 +46,9 @@ msgstr "パスワードは正常に変更されました。" #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 #: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204 -#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1933 -#: netbox/dcim/choices.py:1991 netbox/dcim/choices.py:2058 -#: netbox/dcim/choices.py:2080 netbox/virtualization/choices.py:20 +#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1954 +#: netbox/dcim/choices.py:2012 netbox/dcim/choices.py:2079 +#: netbox/dcim/choices.py:2101 netbox/virtualization/choices.py:20 #: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18 #: netbox/vpn/choices.py:281 msgid "Planned" @@ -62,8 +62,8 @@ msgstr "プロビジョニング" #: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22 #: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155 #: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256 -#: netbox/dcim/choices.py:1990 netbox/dcim/choices.py:2057 -#: netbox/dcim/choices.py:2079 netbox/extras/tables/tables.py:642 +#: netbox/dcim/choices.py:2011 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:2100 netbox/extras/tables/tables.py:642 #: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49 #: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154 #: netbox/templates/extras/configcontext.html:29 @@ -75,8 +75,8 @@ msgid "Active" msgstr "アクティブ" #: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202 -#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:1989 -#: netbox/dcim/choices.py:2059 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:2010 +#: netbox/dcim/choices.py:2080 netbox/dcim/choices.py:2099 #: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44 msgid "Offline" msgstr "オフライン" @@ -89,8 +89,9 @@ msgstr "デプロビジョニング" msgid "Decommissioned" msgstr "廃止" -#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2002 -#: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:153 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2023 +#: netbox/dcim/tables/devices.py:1208 +#: netbox/templates/dcim/interface/attrs/mac_address.html:3 #: netbox/tenancy/choices.py:17 msgid "Primary" msgstr "プライマリ" @@ -109,7 +110,8 @@ msgid "Inactive" msgstr "非アクティブ" #: netbox/circuits/choices.py:107 netbox/dcim/tables/devices.py:714 -#: netbox/templates/dcim/interface.html:293 netbox/vpn/choices.py:63 +#: netbox/templates/dcim/panels/interface_wireless.html:12 +#: netbox/vpn/choices.py:63 msgid "Peer" msgstr "ピア" @@ -185,9 +187,9 @@ msgstr "サイトグループ (slug)" #: netbox/dcim/forms/filtersets.py:1172 netbox/dcim/forms/filtersets.py:1268 #: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:2024 #: netbox/dcim/forms/filtersets.py:2048 netbox/dcim/forms/filtersets.py:2072 -#: netbox/dcim/forms/model_forms.py:155 netbox/dcim/forms/model_forms.py:183 -#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:570 -#: netbox/dcim/forms/model_forms.py:839 netbox/dcim/forms/object_create.py:294 +#: netbox/dcim/forms/model_forms.py:166 netbox/dcim/forms/model_forms.py:209 +#: netbox/dcim/forms/model_forms.py:280 netbox/dcim/forms/model_forms.py:596 +#: netbox/dcim/forms/model_forms.py:865 netbox/dcim/forms/object_create.py:294 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:26 #: netbox/dcim/tables/power.py:90 netbox/dcim/tables/racks.py:111 #: netbox/dcim/tables/racks.py:194 netbox/dcim/tables/sites.py:102 @@ -198,7 +200,6 @@ msgstr "サイトグループ (slug)" #: netbox/ipam/tables/vlans.py:90 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:36 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/ipam/vlan.html:23 #: netbox/templates/ipam/vlan_edit.html:52 #: netbox/virtualization/forms/bulk_edit.py:95 #: netbox/virtualization/forms/bulk_import.py:60 @@ -230,7 +231,6 @@ msgstr "ASN (ID)" #: netbox/circuits/filtersets.py:85 netbox/circuits/forms/filtersets.py:42 #: netbox/ipam/forms/model_forms.py:162 netbox/ipam/models/asns.py:137 #: netbox/ipam/models/asns.py:154 netbox/ipam/tables/asn.py:51 -#: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" @@ -327,14 +327,12 @@ msgstr "検索" #: netbox/circuits/forms/filtersets.py:232 #: netbox/circuits/forms/filtersets.py:259 #: netbox/circuits/forms/filtersets.py:306 -#: netbox/circuits/forms/model_forms.py:139 -#: netbox/circuits/forms/model_forms.py:162 -#: netbox/circuits/forms/model_forms.py:260 +#: netbox/circuits/forms/model_forms.py:168 +#: netbox/circuits/forms/model_forms.py:191 +#: netbox/circuits/forms/model_forms.py:289 #: netbox/circuits/tables/circuits.py:103 #: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 -#: netbox/templates/circuits/circuit.html:15 -#: netbox/templates/circuits/circuitgroupassignment.html:30 -#: netbox/templates/circuits/circuittermination.html:19 +#: netbox/templates/circuits/panels/circuit_termination.html:7 #: netbox/templates/dcim/inc/cable_termination.html:62 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -392,11 +390,9 @@ msgstr "仮想回線タイプ (スラッグ)" #: netbox/circuits/forms/bulk_import.py:248 #: netbox/circuits/forms/filtersets.py:384 #: netbox/circuits/forms/filtersets.py:390 -#: netbox/circuits/forms/model_forms.py:338 -#: netbox/circuits/forms/model_forms.py:353 +#: netbox/circuits/forms/model_forms.py:367 +#: netbox/circuits/forms/model_forms.py:382 #: netbox/circuits/tables/virtual_circuits.py:84 -#: netbox/templates/circuits/virtualcircuit.html:20 -#: netbox/templates/circuits/virtualcircuittermination.html:38 msgid "Virtual circuit" msgstr "仮想回線" @@ -409,12 +405,12 @@ msgstr "インタフェース (ID)" #: netbox/circuits/forms/bulk_edit.py:48 #: netbox/circuits/forms/filtersets.py:68 #: netbox/circuits/forms/model_forms.py:48 -#: netbox/circuits/tables/providers.py:32 netbox/dcim/forms/bulk_edit.py:134 -#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/model_forms.py:142 -#: netbox/dcim/tables/sites.py:74 netbox/ipam/models/asns.py:155 -#: netbox/ipam/tables/asn.py:37 netbox/ipam/views.py:270 -#: netbox/netbox/navigation/menu.py:182 netbox/netbox/navigation/menu.py:185 -#: netbox/templates/circuits/provider.html:23 +#: netbox/circuits/tables/providers.py:32 netbox/circuits/ui/panels.py:92 +#: netbox/dcim/forms/bulk_edit.py:134 netbox/dcim/forms/filtersets.py:225 +#: netbox/dcim/forms/model_forms.py:142 netbox/dcim/tables/sites.py:74 +#: netbox/ipam/models/asns.py:155 netbox/ipam/tables/asn.py:37 +#: netbox/ipam/views.py:365 netbox/netbox/navigation/menu.py:182 +#: netbox/netbox/navigation/menu.py:185 msgid "ASNs" msgstr "ASN" @@ -434,9 +430,9 @@ msgstr "ASN" #: netbox/circuits/forms/filtersets.py:349 #: netbox/circuits/forms/filtersets.py:385 #: netbox/circuits/forms/filtersets.py:408 -#: netbox/circuits/forms/model_forms.py:65 -#: netbox/circuits/forms/model_forms.py:80 -#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:90 +#: netbox/circuits/forms/model_forms.py:109 +#: netbox/circuits/forms/model_forms.py:140 #: netbox/circuits/tables/circuits.py:56 #: netbox/circuits/tables/circuits.py:107 #: netbox/circuits/tables/circuits.py:192 @@ -444,22 +440,14 @@ msgstr "ASN" #: netbox/circuits/tables/providers.py:95 #: netbox/circuits/tables/virtual_circuits.py:46 #: netbox/circuits/tables/virtual_circuits.py:89 -#: netbox/templates/circuits/circuit.html:18 -#: netbox/templates/circuits/circuitgroupassignment.html:26 -#: netbox/templates/circuits/circuittermination.html:25 -#: netbox/templates/circuits/provider.html:20 -#: netbox/templates/circuits/provideraccount.html:20 -#: netbox/templates/circuits/providernetwork.html:20 -#: netbox/templates/circuits/virtualcircuit.html:23 -#: netbox/templates/circuits/virtualcircuittermination.html:26 +#: netbox/templates/circuits/panels/circuit_termination.html:11 #: netbox/templates/dcim/inc/cable_termination.html:58 -#: netbox/templates/dcim/interface.html:184 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:7 msgid "Provider" msgstr "プロバイダ" #: netbox/circuits/forms/bulk_edit.py:86 -#: netbox/circuits/forms/filtersets.py:106 -#: netbox/templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/filtersets.py:106 netbox/circuits/ui/panels.py:106 msgid "Service ID" msgstr "サービス ID" @@ -478,12 +466,7 @@ msgstr "サービス ID" #: netbox/dcim/tables/devicetypes.py:214 netbox/dcim/tables/devicetypes.py:255 #: netbox/dcim/tables/devicetypes.py:274 netbox/dcim/tables/racks.py:30 #: netbox/extras/forms/bulk_edit.py:306 netbox/extras/tables/tables.py:552 -#: netbox/netbox/ui/attrs.py:194 netbox/templates/circuits/circuittype.html:30 -#: netbox/templates/circuits/virtualcircuittype.html:30 -#: netbox/templates/dcim/cable.html:44 netbox/templates/dcim/frontport.html:40 -#: netbox/templates/dcim/inventoryitemrole.html:26 -#: netbox/templates/dcim/poweroutlet.html:48 -#: netbox/templates/dcim/rearport.html:40 netbox/templates/extras/tag.html:26 +#: netbox/netbox/ui/attrs.py:213 netbox/templates/extras/tag.html:26 msgid "Color" msgstr "色" @@ -517,27 +500,14 @@ msgstr "色" #: netbox/dcim/forms/filtersets.py:1602 netbox/dcim/forms/filtersets.py:1707 #: netbox/dcim/forms/filtersets.py:1756 netbox/dcim/forms/filtersets.py:1775 #: netbox/dcim/forms/filtersets.py:1799 netbox/dcim/forms/filtersets.py:1818 -#: netbox/dcim/forms/model_forms.py:820 netbox/dcim/forms/model_forms.py:826 +#: netbox/dcim/forms/model_forms.py:846 netbox/dcim/forms/model_forms.py:852 #: netbox/dcim/forms/object_import.py:85 #: netbox/dcim/forms/object_import.py:114 #: netbox/dcim/forms/object_import.py:127 netbox/dcim/tables/devices.py:182 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 #: netbox/extras/forms/bulk_import.py:48 netbox/extras/tables/tables.py:510 #: netbox/extras/tables/tables.py:578 netbox/netbox/tables/tables.py:339 -#: netbox/templates/circuits/circuit.html:30 -#: netbox/templates/circuits/virtualcircuit.html:39 -#: netbox/templates/circuits/virtualcircuittermination.html:64 -#: netbox/templates/core/datasource.html:38 -#: netbox/templates/dcim/cable.html:15 -#: netbox/templates/dcim/consoleport.html:36 -#: netbox/templates/dcim/consoleserverport.html:36 -#: netbox/templates/dcim/frontport.html:36 -#: netbox/templates/dcim/interface.html:46 -#: netbox/templates/dcim/interface.html:244 -#: netbox/templates/dcim/powerfeed.html:32 -#: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 -#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/dcim/panels/interface_connection.html:68 #: netbox/templates/extras/eventrule.html:74 #: netbox/templates/wireless/panels/wirelesslink_interface.html:16 #: netbox/virtualization/forms/bulk_edit.py:50 @@ -558,10 +528,8 @@ msgstr "タイプ" #: netbox/circuits/forms/bulk_import.py:213 #: netbox/circuits/forms/filtersets.py:159 #: netbox/circuits/forms/filtersets.py:357 -#: netbox/circuits/forms/model_forms.py:117 -#: netbox/circuits/forms/model_forms.py:326 -#: netbox/templates/circuits/virtualcircuit.html:31 -#: netbox/templates/circuits/virtualcircuittermination.html:34 +#: netbox/circuits/forms/model_forms.py:146 +#: netbox/circuits/forms/model_forms.py:355 msgid "Provider account" msgstr "プロバイダアカウント" @@ -603,19 +571,10 @@ msgstr "プロバイダアカウント" #: netbox/ipam/forms/model_forms.py:503 netbox/ipam/tables/ip.py:182 #: netbox/ipam/tables/ip.py:261 netbox/ipam/tables/ip.py:314 #: netbox/ipam/tables/ip.py:389 netbox/ipam/tables/ip.py:416 -#: netbox/ipam/tables/vlans.py:98 netbox/templates/circuits/circuit.html:34 -#: netbox/templates/circuits/virtualcircuit.html:43 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:21 -#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:19 -#: netbox/templates/dcim/cable.html:19 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/powerfeed.html:36 -#: netbox/templates/dcim/poweroutlet.html:40 +#: netbox/ipam/tables/vlans.py:98 netbox/templates/core/rq_task.html:81 +#: netbox/templates/core/system.html:19 #: netbox/templates/extras/inc/script_list_content.html:35 -#: netbox/templates/ipam/ipaddress.html:37 -#: netbox/templates/ipam/iprange.html:61 netbox/templates/ipam/prefix.html:69 -#: netbox/templates/ipam/vlan.html:48 netbox/users/forms/filtersets.py:36 -#: netbox/users/forms/model_forms.py:223 +#: netbox/users/forms/filtersets.py:36 netbox/users/forms/model_forms.py:223 #: netbox/virtualization/forms/bulk_edit.py:60 #: netbox/virtualization/forms/bulk_edit.py:83 #: netbox/virtualization/forms/bulk_import.py:55 @@ -676,21 +635,9 @@ msgstr "ステータス" #: netbox/ipam/forms/filtersets.py:155 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:297 netbox/ipam/forms/filtersets.py:350 #: netbox/ipam/forms/filtersets.py:459 netbox/ipam/forms/filtersets.py:552 -#: netbox/ipam/tables/ip.py:419 netbox/templates/circuits/circuit.html:48 -#: netbox/templates/circuits/circuitgroup.html:36 -#: netbox/templates/circuits/virtualcircuit.html:47 -#: netbox/templates/dcim/cable.html:27 netbox/templates/dcim/powerfeed.html:44 -#: netbox/templates/dcim/virtualdevicecontext.html:52 -#: netbox/templates/ipam/aggregate.html:30 netbox/templates/ipam/asn.html:33 -#: netbox/templates/ipam/asnrange.html:29 -#: netbox/templates/ipam/ipaddress.html:28 -#: netbox/templates/ipam/iprange.html:65 netbox/templates/ipam/prefix.html:29 -#: netbox/templates/ipam/routetarget.html:17 -#: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vlangroup.html:50 -#: netbox/templates/ipam/vrf.html:20 netbox/templates/tenancy/tenant.html:17 -#: netbox/tenancy/forms/filtersets.py:55 netbox/tenancy/forms/forms.py:26 -#: netbox/tenancy/forms/forms.py:50 netbox/tenancy/forms/model_forms.py:51 -#: netbox/tenancy/tables/columns.py:50 +#: netbox/ipam/tables/ip.py:419 netbox/tenancy/forms/filtersets.py:55 +#: netbox/tenancy/forms/forms.py:26 netbox/tenancy/forms/forms.py:50 +#: netbox/tenancy/forms/model_forms.py:51 netbox/tenancy/tables/columns.py:50 #: netbox/virtualization/forms/bulk_edit.py:66 #: netbox/virtualization/forms/bulk_edit.py:126 #: netbox/virtualization/forms/bulk_import.py:67 @@ -725,8 +672,7 @@ msgstr "保証帯域 (Kbps)" #: netbox/circuits/forms/bulk_edit.py:159 #: netbox/circuits/forms/filtersets.py:217 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/templates/circuits/circuit.html:38 +#: netbox/circuits/forms/model_forms.py:165 #: netbox/wireless/forms/bulk_edit.py:121 #: netbox/wireless/forms/filtersets.py:137 #: netbox/wireless/forms/model_forms.py:166 @@ -745,7 +691,7 @@ msgid "Distance unit" msgstr "距離単位" #: netbox/circuits/forms/bulk_edit.py:173 -#: netbox/circuits/forms/model_forms.py:141 +#: netbox/circuits/forms/model_forms.py:170 msgid "Service Parameters" msgstr "サービス情報" @@ -771,7 +717,7 @@ msgstr "サービス情報" #: netbox/dcim/forms/filtersets.py:1864 netbox/dcim/forms/filtersets.py:1879 #: netbox/dcim/forms/filtersets.py:1890 netbox/dcim/forms/filtersets.py:1936 #: netbox/dcim/forms/filtersets.py:1972 netbox/dcim/tables/modules.py:25 -#: netbox/dcim/views.py:1679 netbox/extras/forms/bulk_edit.py:94 +#: netbox/dcim/views.py:1681 netbox/extras/forms/bulk_edit.py:94 #: netbox/extras/forms/filtersets.py:48 netbox/extras/forms/filtersets.py:147 #: netbox/extras/forms/filtersets.py:226 netbox/extras/forms/filtersets.py:243 #: netbox/extras/forms/filtersets.py:275 netbox/extras/forms/filtersets.py:306 @@ -794,12 +740,12 @@ msgstr "属性" #: netbox/circuits/forms/bulk_edit.py:175 #: netbox/circuits/forms/bulk_edit.py:317 -#: netbox/circuits/forms/model_forms.py:142 -#: netbox/circuits/forms/model_forms.py:238 -#: netbox/circuits/forms/model_forms.py:340 -#: netbox/dcim/forms/model_forms.py:157 netbox/dcim/forms/model_forms.py:198 -#: netbox/dcim/forms/model_forms.py:285 netbox/dcim/forms/model_forms.py:342 -#: netbox/dcim/forms/model_forms.py:883 netbox/dcim/forms/model_forms.py:1897 +#: netbox/circuits/forms/model_forms.py:171 +#: netbox/circuits/forms/model_forms.py:267 +#: netbox/circuits/forms/model_forms.py:369 +#: netbox/dcim/forms/model_forms.py:168 netbox/dcim/forms/model_forms.py:224 +#: netbox/dcim/forms/model_forms.py:311 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/forms/model_forms.py:909 netbox/dcim/forms/model_forms.py:1923 #: netbox/ipam/forms/bulk_edit.py:383 netbox/ipam/forms/model_forms.py:70 #: netbox/ipam/forms/model_forms.py:87 netbox/ipam/forms/model_forms.py:118 #: netbox/ipam/forms/model_forms.py:139 netbox/ipam/forms/model_forms.py:163 @@ -834,34 +780,9 @@ msgstr "テナンシー" #: netbox/extras/tables/tables.py:97 netbox/ipam/tables/vlans.py:214 #: netbox/ipam/tables/vlans.py:241 netbox/netbox/forms/bulk_edit.py:79 #: netbox/netbox/forms/bulk_edit.py:91 netbox/netbox/forms/bulk_edit.py:103 -#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 -#: netbox/templates/circuits/circuit.html:69 -#: netbox/templates/circuits/circuitgroup.html:32 -#: netbox/templates/circuits/circuittype.html:26 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:83 -#: netbox/templates/circuits/provider.html:33 -#: netbox/templates/circuits/provideraccount.html:32 -#: netbox/templates/circuits/providernetwork.html:32 -#: netbox/templates/circuits/virtualcircuit.html:56 -#: netbox/templates/circuits/virtualcircuittermination.html:68 -#: netbox/templates/circuits/virtualcircuittype.html:26 -#: netbox/templates/core/datasource.html:58 -#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:40 -#: netbox/templates/dcim/consoleport.html:44 -#: netbox/templates/dcim/consoleserverport.html:44 -#: netbox/templates/dcim/devicebay.html:32 -#: netbox/templates/dcim/frontport.html:54 -#: netbox/templates/dcim/interface.html:69 -#: netbox/templates/dcim/inventoryitem.html:64 -#: netbox/templates/dcim/inventoryitemrole.html:22 -#: netbox/templates/dcim/macaddress.html:21 -#: netbox/templates/dcim/modulebay.html:42 -#: netbox/templates/dcim/powerfeed.html:40 -#: netbox/templates/dcim/poweroutlet.html:44 -#: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 -#: netbox/templates/dcim/rearport.html:54 -#: netbox/templates/dcim/virtualchassis.html:21 +#: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:85 +#: netbox/templates/core/plugin.html:80 #: netbox/templates/extras/configcontext.html:25 #: netbox/templates/extras/configcontextprofile.html:17 #: netbox/templates/extras/configtemplate.html:17 @@ -876,23 +797,6 @@ msgstr "テナンシー" #: netbox/templates/extras/tableconfig.html:17 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:151 -#: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 -#: netbox/templates/ipam/asnrange.html:38 -#: netbox/templates/ipam/fhrpgroup.html:34 -#: netbox/templates/ipam/ipaddress.html:55 -#: netbox/templates/ipam/iprange.html:74 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/rir.html:26 netbox/templates/ipam/role.html:26 -#: netbox/templates/ipam/routetarget.html:21 -#: netbox/templates/ipam/service.html:52 -#: netbox/templates/ipam/servicetemplate.html:27 -#: netbox/templates/ipam/vlan.html:62 netbox/templates/ipam/vlangroup.html:34 -#: netbox/templates/ipam/vlantranslationpolicy.html:18 -#: netbox/templates/ipam/vlantranslationrule.html:26 -#: netbox/templates/ipam/vrf.html:33 netbox/templates/tenancy/contact.html:77 -#: netbox/templates/tenancy/contactgroup.html:25 -#: netbox/templates/tenancy/contactrole.html:22 -#: netbox/templates/tenancy/tenant.html:24 -#: netbox/templates/tenancy/tenantgroup.html:33 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:12 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:12 #: netbox/users/forms/bulk_edit.py:62 netbox/users/forms/bulk_edit.py:80 @@ -904,7 +808,7 @@ msgid "Description" msgstr "説明" #: netbox/circuits/forms/bulk_edit.py:192 -#: netbox/circuits/forms/model_forms.py:170 +#: netbox/circuits/forms/model_forms.py:199 #: netbox/dcim/forms/bulk_import.py:1419 netbox/dcim/forms/bulk_import.py:1444 msgid "Termination type" msgstr "終端タイプ" @@ -912,9 +816,9 @@ msgstr "終端タイプ" #: netbox/circuits/forms/bulk_edit.py:195 #: netbox/circuits/forms/bulk_import.py:133 #: netbox/circuits/forms/filtersets.py:234 -#: netbox/circuits/forms/model_forms.py:173 +#: netbox/circuits/forms/model_forms.py:202 netbox/circuits/ui/panels.py:14 #: netbox/templates/circuits/inc/circuit_termination.html:6 -#: netbox/templates/dcim/cable.html:72 netbox/templates/dcim/cable.html:76 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:6 #: netbox/vpn/forms/bulk_import.py:99 netbox/vpn/forms/filtersets.py:87 msgid "Termination" msgstr "終端" @@ -936,26 +840,23 @@ msgid "Mark connected" msgstr "接続済みにする" #: netbox/circuits/forms/bulk_edit.py:220 -#: netbox/circuits/forms/model_forms.py:184 +#: netbox/circuits/forms/model_forms.py:213 netbox/circuits/views.py:513 +#: netbox/dcim/views.py:3465 netbox/dcim/views.py:3566 #: netbox/templates/circuits/inc/circuit_termination_fields.html:55 -#: netbox/templates/dcim/frontport.html:118 -#: netbox/templates/dcim/interface.html:268 -#: netbox/templates/dcim/rearport.html:112 +#: netbox/templates/dcim/panels/interface_connection.html:92 msgid "Circuit Termination" msgstr "回線終端" #: netbox/circuits/forms/bulk_edit.py:222 -#: netbox/circuits/forms/model_forms.py:186 +#: netbox/circuits/forms/model_forms.py:215 msgid "Termination Details" msgstr "終端詳細" #: netbox/circuits/forms/bulk_edit.py:261 #: netbox/circuits/forms/bulk_import.py:188 #: netbox/circuits/forms/filtersets.py:314 -#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:666 -#: netbox/templates/circuits/circuitgroupassignment.html:34 +#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:692 #: netbox/templates/dcim/panels/virtual_chassis_members.html:11 -#: netbox/templates/dcim/virtualchassis.html:58 #: netbox/templates/dcim/virtualchassis_edit.html:68 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 #: netbox/templates/ipam/panels/fhrp_groups.html:12 @@ -970,7 +871,7 @@ msgstr "優先度" #: netbox/circuits/forms/filtersets.py:272 #: netbox/circuits/forms/filtersets.py:365 #: netbox/circuits/forms/filtersets.py:403 -#: netbox/circuits/forms/model_forms.py:321 +#: netbox/circuits/forms/model_forms.py:350 #: netbox/circuits/tables/virtual_circuits.py:51 #: netbox/circuits/tables/virtual_circuits.py:95 msgid "Provider network" @@ -979,13 +880,13 @@ msgstr "プロバイダネットワーク" #: netbox/circuits/forms/bulk_edit.py:326 #: netbox/circuits/forms/bulk_import.py:253 #: netbox/circuits/forms/filtersets.py:393 -#: netbox/circuits/forms/model_forms.py:360 netbox/dcim/forms/bulk_edit.py:351 +#: netbox/circuits/forms/model_forms.py:389 netbox/dcim/forms/bulk_edit.py:351 #: netbox/dcim/forms/bulk_edit.py:1245 netbox/dcim/forms/bulk_edit.py:1681 #: netbox/dcim/forms/bulk_import.py:270 netbox/dcim/forms/bulk_import.py:1199 #: netbox/dcim/forms/filtersets.py:404 netbox/dcim/forms/filtersets.py:879 #: netbox/dcim/forms/filtersets.py:1902 netbox/dcim/forms/filtersets.py:1942 -#: netbox/dcim/forms/model_forms.py:267 netbox/dcim/forms/model_forms.py:1234 -#: netbox/dcim/forms/model_forms.py:1717 +#: netbox/dcim/forms/model_forms.py:293 netbox/dcim/forms/model_forms.py:1260 +#: netbox/dcim/forms/model_forms.py:1743 #: netbox/dcim/forms/object_import.py:182 netbox/dcim/tables/devices.py:173 #: netbox/dcim/tables/devices.py:1032 netbox/dcim/tables/devicetypes.py:318 #: netbox/dcim/tables/racks.py:118 netbox/extras/filtersets.py:734 @@ -999,14 +900,10 @@ msgstr "プロバイダネットワーク" #: netbox/ipam/forms/model_forms.py:253 netbox/ipam/forms/model_forms.py:678 #: netbox/ipam/tables/ip.py:208 netbox/ipam/tables/ip.py:265 #: netbox/ipam/tables/ip.py:318 netbox/ipam/tables/vlans.py:102 -#: netbox/templates/circuits/virtualcircuittermination.html:42 #: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:196 -#: netbox/templates/dcim/interface.html:298 -#: netbox/templates/dcim/inventoryitem.html:40 -#: netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:57 netbox/templates/ipam/prefix.html:73 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/dcim/panels/component_inventory_items.html:10 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:19 +#: netbox/templates/dcim/panels/interface_wireless.html:17 #: netbox/templates/wireless/panels/wirelesslink_interface.html:20 #: netbox/tenancy/forms/bulk_edit.py:136 #: netbox/tenancy/forms/filtersets.py:136 @@ -1102,22 +999,19 @@ msgid "Operational role" msgstr "運用上のロール" #: netbox/circuits/forms/bulk_import.py:258 -#: netbox/circuits/forms/model_forms.py:363 +#: netbox/circuits/forms/model_forms.py:392 #: netbox/circuits/tables/virtual_circuits.py:108 -#: netbox/dcim/forms/bulk_import.py:1330 netbox/dcim/forms/model_forms.py:1308 -#: netbox/dcim/forms/model_forms.py:1577 netbox/dcim/forms/model_forms.py:1758 -#: netbox/dcim/forms/model_forms.py:1793 netbox/dcim/forms/model_forms.py:1918 -#: netbox/dcim/tables/connections.py:66 netbox/dcim/tables/devices.py:1199 -#: netbox/ipam/forms/bulk_import.py:323 netbox/ipam/forms/model_forms.py:283 -#: netbox/ipam/forms/model_forms.py:292 netbox/ipam/tables/fhrp.py:61 -#: netbox/ipam/tables/ip.py:323 netbox/ipam/tables/vlans.py:145 +#: netbox/circuits/ui/panels.py:134 netbox/dcim/forms/bulk_import.py:1330 +#: netbox/dcim/forms/model_forms.py:1334 netbox/dcim/forms/model_forms.py:1603 +#: netbox/dcim/forms/model_forms.py:1784 netbox/dcim/forms/model_forms.py:1819 +#: netbox/dcim/forms/model_forms.py:1944 netbox/dcim/tables/connections.py:66 +#: netbox/dcim/tables/devices.py:1199 netbox/dcim/views.py:3457 +#: netbox/dcim/views.py:3560 netbox/ipam/forms/bulk_import.py:323 +#: netbox/ipam/forms/model_forms.py:283 netbox/ipam/forms/model_forms.py:292 +#: netbox/ipam/tables/fhrp.py:61 netbox/ipam/tables/ip.py:323 +#: netbox/ipam/tables/vlans.py:145 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 -#: netbox/templates/circuits/virtualcircuittermination.html:53 -#: netbox/templates/circuits/virtualcircuittermination.html:60 -#: netbox/templates/dcim/frontport.html:103 -#: netbox/templates/dcim/interface.html:27 -#: netbox/templates/dcim/interface.html:259 -#: netbox/templates/dcim/rearport.html:103 +#: netbox/templates/dcim/panels/interface_connection.html:83 #: netbox/templates/wireless/panels/wirelesslink_interface.html:12 #: netbox/virtualization/forms/model_forms.py:368 #: netbox/vpn/forms/bulk_import.py:302 netbox/vpn/forms/model_forms.py:434 @@ -1149,8 +1043,8 @@ msgstr "インタフェース" #: netbox/dcim/forms/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1746 #: netbox/dcim/forms/filtersets.py:1790 netbox/dcim/forms/filtersets.py:1833 #: netbox/dcim/forms/filtersets.py:1865 netbox/dcim/forms/filtersets.py:1892 -#: netbox/dcim/forms/model_forms.py:197 netbox/dcim/forms/model_forms.py:259 -#: netbox/dcim/forms/model_forms.py:575 netbox/dcim/forms/model_forms.py:844 +#: netbox/dcim/forms/model_forms.py:223 netbox/dcim/forms/model_forms.py:285 +#: netbox/dcim/forms/model_forms.py:601 netbox/dcim/forms/model_forms.py:870 #: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:30 #: netbox/dcim/tables/racks.py:107 netbox/dcim/tables/racks.py:199 #: netbox/extras/filtersets.py:718 netbox/extras/forms/filtersets.py:404 @@ -1158,7 +1052,6 @@ msgstr "インタフェース" #: netbox/ipam/forms/filtersets.py:481 netbox/ipam/forms/filtersets.py:549 #: netbox/templates/dcim/device_edit.html:32 #: netbox/templates/dcim/inc/cable_termination.html:12 -#: netbox/templates/dcim/powerpanel.html:26 #: netbox/virtualization/forms/filtersets.py:87 #: netbox/virtualization/forms/filtersets.py:113 #: netbox/wireless/forms/filtersets.py:99 @@ -1269,7 +1162,7 @@ msgstr "連絡先" #: netbox/dcim/tables/devices.py:147 netbox/dcim/tables/sites.py:65 #: netbox/extras/filtersets.py:685 netbox/ipam/forms/bulk_edit.py:404 #: netbox/ipam/forms/filtersets.py:241 netbox/ipam/forms/filtersets.py:466 -#: netbox/ipam/forms/filtersets.py:559 netbox/templates/ipam/vlan.html:16 +#: netbox/ipam/forms/filtersets.py:559 netbox/ipam/ui/panels.py:195 #: netbox/virtualization/forms/filtersets.py:67 #: netbox/virtualization/forms/filtersets.py:147 #: netbox/virtualization/forms/model_forms.py:86 @@ -1301,8 +1194,6 @@ msgstr "サイトグループ" #: netbox/circuits/tables/providers.py:61 #: netbox/circuits/tables/virtual_circuits.py:55 #: netbox/circuits/tables/virtual_circuits.py:99 -#: netbox/templates/circuits/circuit.html:22 -#: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "アカウント" @@ -1313,9 +1204,7 @@ msgstr "タームサイド" #: netbox/circuits/forms/filtersets.py:296 netbox/dcim/forms/bulk_edit.py:1540 #: netbox/extras/forms/model_forms.py:706 netbox/ipam/forms/filtersets.py:154 #: netbox/ipam/forms/filtersets.py:642 netbox/ipam/forms/model_forms.py:329 -#: netbox/templates/dcim/macaddress.html:25 -#: netbox/templates/extras/configcontext.html:36 -#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/ipam/ui/panels.py:121 netbox/templates/extras/configcontext.html:36 #: netbox/templates/ipam/vlan_edit.html:42 #: netbox/tenancy/forms/filtersets.py:116 #: netbox/users/forms/model_forms.py:375 @@ -1323,18 +1212,16 @@ msgid "Assignment" msgstr "割当" #: netbox/circuits/forms/filtersets.py:311 -#: netbox/circuits/forms/model_forms.py:250 +#: netbox/circuits/forms/model_forms.py:279 #: netbox/circuits/tables/circuits.py:187 netbox/dcim/forms/bulk_edit.py:118 #: netbox/dcim/forms/bulk_import.py:115 netbox/dcim/forms/model_forms.py:135 #: netbox/dcim/tables/sites.py:69 netbox/extras/forms/filtersets.py:600 #: netbox/ipam/filtersets.py:1034 netbox/ipam/forms/bulk_edit.py:423 #: netbox/ipam/forms/bulk_import.py:515 netbox/ipam/forms/model_forms.py:561 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/vlans.py:94 -#: netbox/templates/circuits/circuitgroupassignment.html:22 -#: netbox/templates/dcim/interface.html:359 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:8 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 #: netbox/templates/ipam/panels/fhrp_groups.html:9 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/tenant.html:20 #: netbox/tenancy/forms/bulk_edit.py:44 netbox/tenancy/forms/bulk_import.py:46 #: netbox/tenancy/forms/filtersets.py:63 #: netbox/tenancy/forms/filtersets.py:126 @@ -1360,23 +1247,38 @@ msgstr "割当" msgid "Group" msgstr "グループ" -#: netbox/circuits/forms/model_forms.py:237 -#: netbox/templates/circuits/circuitgroup.html:25 +#: netbox/circuits/forms/model_forms.py:53 +#: netbox/dcim/forms/model_forms.py:147 +msgid "Add ASNs" +msgstr "ASN の追加" + +#: netbox/circuits/forms/model_forms.py:58 +#: netbox/dcim/forms/model_forms.py:152 +msgid "Remove ASNs" +msgstr "ASN を削除する" + +#: netbox/circuits/forms/model_forms.py:79 +#: netbox/dcim/forms/model_forms.py:198 +#, python-brace-format +msgid "{count} ASNs currently assigned" +msgstr "{count} 現在割り当てられている ASN" + +#: netbox/circuits/forms/model_forms.py:266 msgid "Circuit Group" msgstr "回線グループ" -#: netbox/circuits/forms/model_forms.py:257 +#: netbox/circuits/forms/model_forms.py:286 msgid "Circuit type" msgstr "回線タイプ" -#: netbox/circuits/forms/model_forms.py:268 +#: netbox/circuits/forms/model_forms.py:297 msgid "Group Assignment" msgstr "グループ割当" #: netbox/circuits/models/base.py:18 netbox/dcim/models/cables.py:81 -#: netbox/dcim/models/device_component_templates.py:353 -#: netbox/dcim/models/device_component_templates.py:588 -#: netbox/dcim/models/device_component_templates.py:661 +#: netbox/dcim/models/device_component_templates.py:343 +#: netbox/dcim/models/device_component_templates.py:578 +#: netbox/dcim/models/device_component_templates.py:651 #: netbox/dcim/models/device_components.py:573 #: netbox/dcim/models/device_components.py:1156 #: netbox/dcim/models/device_components.py:1204 @@ -1413,8 +1315,8 @@ msgstr "一意な回線 ID" #: netbox/dcim/models/modules.py:219 netbox/dcim/models/power.py:95 #: netbox/dcim/models/racks.py:301 netbox/dcim/models/racks.py:685 #: netbox/dcim/models/sites.py:163 netbox/dcim/models/sites.py:287 -#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:528 -#: netbox/ipam/models/ip.py:757 netbox/ipam/models/vlans.py:228 +#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:538 +#: netbox/ipam/models/ip.py:767 netbox/ipam/models/vlans.py:228 #: netbox/virtualization/models/clusters.py:70 #: netbox/virtualization/models/virtualmachines.py:80 #: netbox/vpn/models/l2vpn.py:36 netbox/vpn/models/tunnels.py:38 @@ -1534,7 +1436,7 @@ msgstr "回線終端" msgid "circuit terminations" msgstr "回線終端" -#: netbox/circuits/models/circuits.py:360 +#: netbox/circuits/models/circuits.py:367 msgid "A circuit termination must attach to a terminating object." msgstr "回路終端は終端オブジェクトに接続する必要があります。" @@ -1638,7 +1540,7 @@ msgid "virtual circuits" msgstr "仮想回線" #: netbox/circuits/models/virtual_circuits.py:135 netbox/ipam/models/ip.py:201 -#: netbox/ipam/models/ip.py:764 netbox/vpn/models/tunnels.py:109 +#: netbox/ipam/models/ip.py:774 netbox/vpn/models/tunnels.py:109 msgid "role" msgstr "ロール" @@ -1686,30 +1588,13 @@ msgstr "仮想回線終端" #: netbox/ipam/tables/vlans.py:33 netbox/ipam/tables/vlans.py:86 #: netbox/ipam/tables/vlans.py:205 netbox/ipam/tables/vrfs.py:26 #: netbox/ipam/tables/vrfs.py:65 netbox/netbox/tables/tables.py:325 -#: netbox/netbox/ui/panels.py:198 netbox/netbox/ui/panels.py:207 -#: netbox/templates/circuits/circuitgroup.html:28 -#: netbox/templates/circuits/circuittype.html:22 -#: netbox/templates/circuits/provideraccount.html:28 -#: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/circuits/virtualcircuittype.html:22 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:17 +#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 #: netbox/templates/core/plugin.html:54 #: netbox/templates/core/rq_worker.html:43 -#: netbox/templates/dcim/consoleport.html:28 -#: netbox/templates/dcim/consoleserverport.html:28 -#: netbox/templates/dcim/devicebay.html:24 -#: netbox/templates/dcim/frontport.html:28 #: netbox/templates/dcim/inc/interface_vlans_table.html:5 #: netbox/templates/dcim/inc/panels/inventory_items.html:18 -#: netbox/templates/dcim/interface.html:38 -#: netbox/templates/dcim/interface.html:240 -#: netbox/templates/dcim/inventoryitem.html:28 -#: netbox/templates/dcim/inventoryitemrole.html:18 -#: netbox/templates/dcim/modulebay.html:30 -#: netbox/templates/dcim/poweroutlet.html:28 -#: netbox/templates/dcim/powerport.html:28 -#: netbox/templates/dcim/rearport.html:28 -#: netbox/templates/dcim/virtualdevicecontext.html:18 +#: netbox/templates/dcim/panels/component_inventory_items.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:64 #: netbox/templates/extras/configcontext.html:13 #: netbox/templates/extras/configcontextprofile.html:13 #: netbox/templates/extras/configtemplate.html:13 @@ -1723,18 +1608,6 @@ msgstr "仮想回線終端" #: netbox/templates/extras/savedfilter.html:13 #: netbox/templates/extras/tableconfig.html:13 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 -#: netbox/templates/ipam/asnrange.html:15 -#: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 -#: netbox/templates/ipam/role.html:22 -#: netbox/templates/ipam/routetarget.html:13 -#: netbox/templates/ipam/service.html:26 -#: netbox/templates/ipam/servicetemplate.html:15 -#: netbox/templates/ipam/vlan.html:35 netbox/templates/ipam/vlangroup.html:30 -#: netbox/templates/ipam/vlantranslationpolicy.html:14 -#: netbox/templates/tenancy/contact.html:35 -#: netbox/templates/tenancy/contactgroup.html:21 -#: netbox/templates/tenancy/contactrole.html:18 -#: netbox/templates/tenancy/tenantgroup.html:29 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:8 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:8 #: netbox/tenancy/tables/contacts.py:38 netbox/tenancy/tables/contacts.py:53 @@ -1764,17 +1637,13 @@ msgstr "名前" #: netbox/circuits/tables/virtual_circuits.py:27 #: netbox/netbox/navigation/menu.py:278 netbox/netbox/navigation/menu.py:282 #: netbox/netbox/navigation/menu.py:284 -#: netbox/templates/circuits/provider.html:57 -#: netbox/templates/circuits/provideraccount.html:48 -#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "回線" #: netbox/circuits/tables/circuits.py:53 #: netbox/circuits/tables/virtual_circuits.py:42 -#: netbox/templates/circuits/circuit.html:26 -#: netbox/templates/circuits/virtualcircuit.html:35 -#: netbox/templates/dcim/interface.html:192 +#: netbox/circuits/ui/panels.py:75 netbox/circuits/ui/panels.py:118 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:15 msgid "Circuit ID" msgstr "回線 ID" @@ -1788,13 +1657,11 @@ msgid "Side Z" msgstr "サイド Z" #: netbox/circuits/tables/circuits.py:78 -#: netbox/templates/circuits/circuit.html:65 msgid "Commit Rate" msgstr "保証帯域" #: netbox/circuits/tables/circuits.py:85 netbox/dcim/forms/filtersets.py:1973 -#: netbox/templates/tenancy/contact.html:94 -#: netbox/tenancy/tables/contacts.py:67 +#: netbox/tenancy/tables/contacts.py:67 netbox/tenancy/views.py:416 msgid "Assignments" msgstr "割当" @@ -1816,10 +1683,7 @@ msgid "Site Group" msgstr "サイトグループ" #: netbox/circuits/tables/circuits.py:145 -#: netbox/templates/circuits/providernetwork.html:17 -#: netbox/templates/circuits/virtualcircuit.html:27 -#: netbox/templates/circuits/virtualcircuittermination.html:30 -#: netbox/templates/dcim/interface.html:188 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:11 msgid "Provider Network" msgstr "プロバイダネットワーク" @@ -1835,8 +1699,7 @@ msgstr "アカウント数" msgid "ASN Count" msgstr "ASN 数" -#: netbox/circuits/tables/virtual_circuits.py:64 -#: netbox/templates/circuits/virtualcircuit.html:87 +#: netbox/circuits/tables/virtual_circuits.py:64 netbox/circuits/views.py:802 #: netbox/vpn/tables/tunnels.py:59 netbox/vpn/views.py:139 #: netbox/vpn/views.py:685 msgid "Terminations" @@ -1865,9 +1728,9 @@ msgstr "終端" #: netbox/dcim/forms/filtersets.py:1868 netbox/dcim/forms/filtersets.py:1880 #: netbox/dcim/forms/filtersets.py:1895 netbox/dcim/forms/filtersets.py:1937 #: netbox/dcim/forms/filtersets.py:2032 netbox/dcim/forms/filtersets.py:2056 -#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:748 -#: netbox/dcim/forms/model_forms.py:963 netbox/dcim/forms/model_forms.py:1375 -#: netbox/dcim/forms/model_forms.py:1869 netbox/dcim/forms/model_forms.py:1942 +#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:774 +#: netbox/dcim/forms/model_forms.py:989 netbox/dcim/forms/model_forms.py:1401 +#: netbox/dcim/forms/model_forms.py:1895 netbox/dcim/forms/model_forms.py:1968 #: netbox/dcim/forms/object_create.py:207 netbox/dcim/tables/connections.py:23 #: netbox/dcim/tables/connections.py:42 netbox/dcim/tables/connections.py:61 #: netbox/dcim/tables/devices.py:293 netbox/dcim/tables/devices.py:388 @@ -1879,24 +1742,11 @@ msgstr "終端" #: netbox/dcim/tables/modules.py:82 netbox/extras/forms/filtersets.py:405 #: netbox/ipam/forms/bulk_import.py:309 netbox/ipam/forms/filtersets.py:649 #: netbox/ipam/forms/model_forms.py:325 netbox/ipam/tables/vlans.py:156 -#: netbox/templates/circuits/virtualcircuittermination.html:56 -#: netbox/templates/dcim/consoleport.html:20 -#: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device_edit.html:12 -#: netbox/templates/dcim/devicebay.html:20 -#: netbox/templates/dcim/devicebay.html:48 -#: netbox/templates/dcim/frontport.html:20 -#: netbox/templates/dcim/interface.html:30 -#: netbox/templates/dcim/interface.html:236 -#: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/modulebay.html:20 +#: netbox/templates/dcim/panels/installed_device.html:9 +#: netbox/templates/dcim/panels/interface_connection.html:60 #: netbox/templates/dcim/panels/virtual_chassis_members.html:8 -#: netbox/templates/dcim/poweroutlet.html:20 -#: netbox/templates/dcim/powerport.html:20 -#: netbox/templates/dcim/rearport.html:20 -#: netbox/templates/dcim/virtualchassis.html:55 #: netbox/templates/dcim/virtualchassis_edit.html:63 -#: netbox/templates/dcim/virtualdevicecontext.html:22 #: netbox/templates/wireless/panels/wirelesslink_interface.html:8 #: netbox/virtualization/filtersets.py:160 #: netbox/virtualization/forms/bulk_edit.py:108 @@ -1914,6 +1764,15 @@ msgstr "終端" msgid "Device" msgstr "デバイス" +#: netbox/circuits/ui/panels.py:37 netbox/netbox/navigation/menu.py:301 +msgid "Group Assignments" +msgstr "グループ課題" + +#: netbox/circuits/ui/panels.py:46 netbox/ipam/ui/panels.py:36 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "グループを割り当て" + #: netbox/core/api/views.py:51 msgid "This user does not have permission to synchronize this data source." msgstr "このユーザーには、このデータソースを同期する権限がありません。" @@ -1960,14 +1819,14 @@ msgid "Syncing" msgstr "同期中" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:43 netbox/templates/core/job.html:59 +#: netbox/core/tables/jobs.py:43 msgid "Completed" msgstr "完了" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35 #: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259 -#: netbox/dcim/choices.py:1992 netbox/dcim/choices.py:2082 +#: netbox/dcim/choices.py:2013 netbox/dcim/choices.py:2103 #: netbox/virtualization/choices.py:48 msgid "Failed" msgstr "失敗" @@ -1991,7 +1850,6 @@ msgstr "保留中" #: netbox/core/choices.py:55 netbox/core/constants.py:24 #: netbox/core/tables/jobs.py:34 netbox/core/tables/tasks.py:39 -#: netbox/templates/core/job.html:46 msgid "Scheduled" msgstr "予定済" @@ -2030,10 +1888,9 @@ msgstr "30 日毎" #: netbox/core/choices.py:102 netbox/core/tables/jobs.py:31 #: netbox/core/tables/tasks.py:80 netbox/extras/tables/tables.py:436 #: netbox/extras/tables/tables.py:742 -#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision.html:23 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:42 netbox/templates/core/rq_task.html:16 -#: netbox/templates/core/rq_task.html:73 +#: netbox/templates/core/rq_task.html:16 netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 #: netbox/templates/extras/journalentry.html:22 @@ -2055,7 +1912,6 @@ msgid "Finished" msgstr "終了済" #: netbox/core/constants.py:22 netbox/core/tables/jobs.py:40 -#: netbox/templates/core/job.html:55 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "開始日時" @@ -2087,13 +1943,12 @@ msgid "Warning" msgstr "警告" #: netbox/core/constants.py:33 netbox/netbox/tables/columns.py:589 -#: netbox/templates/core/job.html:26 msgid "Error" msgstr "エラー" #: netbox/core/data_backends.py:46 netbox/core/tables/plugins.py:54 #: netbox/templates/core/plugin.html:88 -#: netbox/templates/dcim/interface.html:291 +#: netbox/templates/dcim/panels/interface_wireless.html:10 msgid "Local" msgstr "ローカル" @@ -2152,7 +2007,7 @@ msgid "User name" msgstr "ユーザ名" #: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47 -#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2040 +#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2061 #: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386 #: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712 #: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233 @@ -2163,8 +2018,6 @@ msgstr "ユーザ名" #: netbox/extras/tables/tables.py:188 netbox/extras/tables/tables.py:319 #: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:520 #: netbox/netbox/preferences.py:46 netbox/netbox/preferences.py:71 -#: netbox/templates/core/datasource.html:42 -#: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 #: netbox/templates/extras/eventrule.html:17 #: netbox/templates/extras/savedfilter.html:25 @@ -2178,7 +2031,7 @@ msgid "Enabled" msgstr "有効" #: netbox/core/forms/bulk_edit.py:30 netbox/core/forms/filtersets.py:54 -#: netbox/core/tables/data.py:31 netbox/templates/core/datasource.html:50 +#: netbox/core/tables/data.py:31 netbox/core/ui/panels.py:12 msgid "Sync interval" msgstr "同期間隔" @@ -2192,17 +2045,17 @@ msgstr "同期間隔" msgid "Parameters" msgstr "パラメータ" -#: netbox/core/forms/bulk_edit.py:37 netbox/templates/core/datasource.html:72 +#: netbox/core/forms/bulk_edit.py:37 netbox/core/ui/panels.py:22 msgid "Ignore rules" msgstr "ignoreルール" #: netbox/core/forms/filtersets.py:33 netbox/core/forms/model_forms.py:100 -#: netbox/extras/forms/model_forms.py:280 +#: netbox/core/ui/panels.py:7 netbox/extras/forms/model_forms.py:280 #: netbox/extras/forms/model_forms.py:613 #: netbox/extras/forms/model_forms.py:702 #: netbox/extras/forms/model_forms.py:755 netbox/extras/tables/tables.py:230 #: netbox/extras/tables/tables.py:600 netbox/extras/tables/tables.py:630 -#: netbox/extras/tables/tables.py:672 netbox/templates/core/datasource.html:31 +#: netbox/extras/tables/tables.py:672 #: netbox/templates/core/inc/datafile_panel.html:7 #: netbox/templates/extras/configtemplate.html:37 #: netbox/templates/extras/object_render_config.html:19 @@ -2229,15 +2082,14 @@ msgstr "作成" #: netbox/extras/forms/filtersets.py:580 netbox/extras/tables/tables.py:283 #: netbox/extras/tables/tables.py:350 netbox/extras/tables/tables.py:376 #: netbox/extras/tables/tables.py:395 netbox/extras/tables/tables.py:427 -#: netbox/extras/tables/tables.py:747 netbox/templates/core/job.html:11 -#: netbox/templates/core/objectchange.html:52 +#: netbox/extras/tables/tables.py:747 #: netbox/templates/extras/tableconfig.html:21 #: netbox/tenancy/tables/contacts.py:84 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "オブジェクトタイプ" #: netbox/core/forms/filtersets.py:95 netbox/core/tables/jobs.py:46 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:61 +#: netbox/core/ui/panels.py:65 netbox/templates/core/rq_task.html:61 msgid "Queue" msgstr "キュー" @@ -2274,11 +2126,10 @@ msgid "Completed before" msgstr "以前に完了" #: netbox/core/forms/filtersets.py:141 netbox/core/forms/filtersets.py:170 -#: netbox/dcim/forms/bulk_edit.py:458 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/model_forms.py:336 netbox/extras/forms/filtersets.py:575 -#: netbox/extras/forms/filtersets.py:595 netbox/extras/tables/tables.py:403 -#: netbox/extras/tables/tables.py:443 -#: netbox/templates/core/objectchange.html:36 +#: netbox/core/ui/panels.py:73 netbox/dcim/forms/bulk_edit.py:458 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:362 +#: netbox/extras/forms/filtersets.py:575 netbox/extras/forms/filtersets.py:595 +#: netbox/extras/tables/tables.py:403 netbox/extras/tables/tables.py:443 #: netbox/templates/extras/savedfilter.html:21 #: netbox/templates/extras/tableconfig.html:29 #: netbox/templates/inc/user_menu.html:31 netbox/users/filtersets.py:135 @@ -2291,7 +2142,6 @@ msgstr "ユーザ" #: netbox/core/forms/filtersets.py:149 netbox/core/tables/change_logging.py:16 #: netbox/core/tables/jobs.py:72 netbox/extras/tables/tables.py:785 #: netbox/extras/tables/tables.py:840 -#: netbox/templates/core/objectchange.html:32 msgid "Time" msgstr "時間" @@ -2305,21 +2155,19 @@ msgstr "以前" #: netbox/core/forms/filtersets.py:163 netbox/core/tables/change_logging.py:30 #: netbox/extras/forms/model_forms.py:490 -#: netbox/templates/core/objectchange.html:46 #: netbox/templates/extras/eventrule.html:71 msgid "Action" msgstr "アクション" #: netbox/core/forms/model_forms.py:55 netbox/core/tables/data.py:57 -#: netbox/templates/core/datafile.html:21 #: netbox/templates/extras/report/base.html:33 #: netbox/templates/extras/script/base.html:32 msgid "Source" msgstr "ソース" #: netbox/core/forms/model_forms.py:57 -#: netbox/templates/core/datasource.html:14 -#: netbox/templates/core/datasource.html:20 +#: netbox/templates/core/datasource.html:10 +#: netbox/templates/core/datasource.html:16 #: netbox/utilities/templatetags/buttons.py:156 msgid "Sync" msgstr "同期" @@ -2345,7 +2193,7 @@ msgstr "同期するファイルをアップロードするか、データファ msgid "Rack Elevations" msgstr "ラック図" -#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1911 +#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1932 #: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340 #: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144 #: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320 @@ -2488,13 +2336,13 @@ msgid "Config revision #{id}" msgstr "設定履歴 #{id}" #: netbox/core/models/data.py:45 netbox/dcim/models/cables.py:50 -#: netbox/dcim/models/device_component_templates.py:210 -#: netbox/dcim/models/device_component_templates.py:245 -#: netbox/dcim/models/device_component_templates.py:281 -#: netbox/dcim/models/device_component_templates.py:346 -#: netbox/dcim/models/device_component_templates.py:437 -#: netbox/dcim/models/device_component_templates.py:583 -#: netbox/dcim/models/device_component_templates.py:656 +#: netbox/dcim/models/device_component_templates.py:200 +#: netbox/dcim/models/device_component_templates.py:235 +#: netbox/dcim/models/device_component_templates.py:271 +#: netbox/dcim/models/device_component_templates.py:336 +#: netbox/dcim/models/device_component_templates.py:427 +#: netbox/dcim/models/device_component_templates.py:573 +#: netbox/dcim/models/device_component_templates.py:646 #: netbox/dcim/models/device_components.py:370 #: netbox/dcim/models/device_components.py:397 #: netbox/dcim/models/device_components.py:428 @@ -2508,15 +2356,14 @@ msgstr "設定履歴 #{id}" msgid "type" msgstr "タイプ" -#: netbox/core/models/data.py:50 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:183 netbox/extras/tables/tables.py:850 -#: netbox/templates/core/datasource.html:62 -#: netbox/templates/core/plugin.html:66 +#: netbox/core/models/data.py:50 netbox/core/ui/panels.py:17 +#: netbox/extras/choices.py:37 netbox/extras/models/models.py:183 +#: netbox/extras/tables/tables.py:850 netbox/templates/core/plugin.html:66 msgid "URL" msgstr "URL" #: netbox/core/models/data.py:60 -#: netbox/dcim/models/device_component_templates.py:442 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:605 #: netbox/extras/models/models.py:81 netbox/extras/models/models.py:319 #: netbox/extras/models/models.py:507 netbox/extras/models/models.py:586 @@ -2585,7 +2432,7 @@ msgstr "パス" msgid "File path relative to the data source's root" msgstr "データソースのルートを基準にしたファイルパス" -#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:509 +#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:519 msgid "size" msgstr "サイズ" @@ -2732,27 +2579,24 @@ msgid "Full Name" msgstr "フルネーム" #: netbox/core/tables/change_logging.py:38 netbox/core/tables/jobs.py:23 -#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:286 -#: netbox/extras/tables/tables.py:379 netbox/extras/tables/tables.py:398 -#: netbox/extras/tables/tables.py:430 netbox/extras/tables/tables.py:514 -#: netbox/extras/tables/tables.py:583 netbox/extras/tables/tables.py:752 -#: netbox/extras/tables/tables.py:793 netbox/extras/tables/tables.py:847 -#: netbox/netbox/tables/tables.py:343 -#: netbox/templates/core/objectchange.html:58 +#: netbox/core/ui/panels.py:83 netbox/extras/choices.py:41 +#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:379 +#: netbox/extras/tables/tables.py:398 netbox/extras/tables/tables.py:430 +#: netbox/extras/tables/tables.py:514 netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:752 netbox/extras/tables/tables.py:793 +#: netbox/extras/tables/tables.py:847 netbox/netbox/tables/tables.py:343 #: netbox/templates/extras/eventrule.html:78 #: netbox/templates/extras/journalentry.html:18 #: netbox/tenancy/tables/contacts.py:87 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "オブジェクト" -#: netbox/core/tables/change_logging.py:43 -#: netbox/templates/core/objectchange.html:74 +#: netbox/core/tables/change_logging.py:43 netbox/core/ui/panels.py:89 msgid "Request ID" msgstr "リクエスト ID" #: netbox/core/tables/change_logging.py:46 netbox/core/tables/jobs.py:79 #: netbox/extras/tables/tables.py:796 netbox/extras/tables/tables.py:853 -#: netbox/templates/core/objectchange.html:68 msgid "Message" msgstr "メッセージ" @@ -2765,11 +2609,11 @@ msgstr "有効" msgid "Last Synced" msgstr "最終同期" -#: netbox/core/tables/data.py:37 netbox/templates/core/datasource.html:118 +#: netbox/core/tables/data.py:37 msgid "Files" msgstr "ファイル" -#: netbox/core/tables/data.py:61 netbox/templates/core/datafile.html:25 +#: netbox/core/tables/data.py:61 msgid "Path" msgstr "パス" @@ -2793,7 +2637,7 @@ msgstr "ID" msgid "Interval" msgstr "間隔" -#: netbox/core/tables/jobs.py:49 +#: netbox/core/tables/jobs.py:49 netbox/core/views.py:255 msgid "Log Entries" msgstr "ログエントリ" @@ -2813,7 +2657,7 @@ msgstr "ログエントリなし" msgid "Version" msgstr "バージョン" -#: netbox/core/tables/plugins.py:21 netbox/templates/core/datafile.html:32 +#: netbox/core/tables/plugins.py:21 msgid "Last Updated" msgstr "最終更新日" @@ -2909,7 +2753,61 @@ msgstr "PID" msgid "No workers found" msgstr "ワーカーが見つかりません" -#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:447 +#: netbox/core/ui/panels.py:13 +msgid "Last synced" +msgstr "最終同期" + +#: netbox/core/ui/panels.py:29 +msgid "Backend" +msgstr "バックエンド" + +#: netbox/core/ui/panels.py:33 netbox/extras/tables/tables.py:234 +#: netbox/extras/tables/tables.py:604 netbox/extras/tables/tables.py:634 +#: netbox/extras/tables/tables.py:676 +#: netbox/templates/core/inc/datafile_panel.html:4 +#: netbox/templates/core/inc/datafile_panel.html:17 +#: netbox/templates/extras/configtemplate.html:47 +#: netbox/templates/extras/object_render_config.html:23 +#: netbox/templates/generic/bulk_import.html:35 +msgid "Data File" +msgstr "データファイル" + +#: netbox/core/ui/panels.py:38 +msgid "SHA256 hash" +msgstr "SHA256 ハッシュ" + +#: netbox/core/ui/panels.py:43 +msgid "Content" +msgstr "コンテンツ" + +#: netbox/core/ui/panels.py:47 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 +msgid "Job" +msgstr "ジョブ" + +#: netbox/core/ui/panels.py:50 netbox/core/ui/panels.py:79 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 +#: netbox/extras/forms/filtersets.py:335 +#: netbox/extras/forms/model_forms.py:338 +#: netbox/extras/forms/model_forms.py:398 +#: netbox/extras/forms/model_forms.py:435 +#: netbox/tenancy/forms/filtersets.py:121 +msgid "Object type" +msgstr "オブジェクトタイプ" + +#: netbox/core/ui/panels.py:56 +msgid "Created by" +msgstr "作成者" + +#: netbox/core/ui/panels.py:60 +msgid "Scheduling" +msgstr "スケジューリング" + +#: netbox/core/ui/panels.py:69 netbox/users/ui/panels.py:53 +msgid "Change" +msgstr "変更" + +#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "ジョブ {job_id} が見つかりません" @@ -2919,55 +2817,63 @@ msgstr "ジョブ {job_id} が見つかりません" msgid "Job {id} not found." msgstr "ジョブ {id} が見つかりません。" -#: netbox/core/views.py:95 +#: netbox/core/views.py:125 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "キューに入っているジョブ #{id} 同期するには {datasource}" -#: netbox/core/views.py:199 netbox/templates/extras/htmx/script_result.html:43 +#: netbox/core/views.py:237 netbox/extras/forms/filtersets.py:179 +#: netbox/extras/forms/filtersets.py:380 netbox/extras/forms/filtersets.py:403 +#: netbox/extras/forms/filtersets.py:499 +#: netbox/extras/forms/model_forms.py:696 +#: netbox/templates/extras/eventrule.html:84 +msgid "Data" +msgstr "データ" + +#: netbox/core/views.py:248 netbox/templates/extras/htmx/script_result.html:43 msgid "Log" msgstr "ログ" -#: netbox/core/views.py:383 +#: netbox/core/views.py:467 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "復元された設定リビジョン #{id}" -#: netbox/core/views.py:486 +#: netbox/core/views.py:570 #, python-brace-format msgid "Job {id} has been deleted." msgstr "ジョブ {id} が削除されました。" -#: netbox/core/views.py:488 +#: netbox/core/views.py:572 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "ジョブの削除中にエラーが発生しました {id}: {error}" -#: netbox/core/views.py:497 +#: netbox/core/views.py:581 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "ジョブ {id} が再追加されました。" -#: netbox/core/views.py:506 +#: netbox/core/views.py:590 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "ジョブ {id} が追加されました。" -#: netbox/core/views.py:515 +#: netbox/core/views.py:599 #, python-brace-format msgid "Job {id} has been stopped." msgstr "ジョブ {id} が停止されました。" -#: netbox/core/views.py:517 +#: netbox/core/views.py:601 #, python-brace-format msgid "Failed to stop job {id}" msgstr "ジョブを停止できませんでした {id}" -#: netbox/core/views.py:671 +#: netbox/core/views.py:755 msgid "Plugins catalog could not be loaded" msgstr "プラグインカタログを読み込めませんでした" -#: netbox/core/views.py:707 +#: netbox/core/views.py:791 #, python-brace-format msgid "Plugin {name} not found" msgstr "プラグイン {name} が見つかりません" @@ -2990,7 +2896,7 @@ msgstr "インターフェイスモードはタグ付き VLAN をサポートし msgid "Position (U)" msgstr "ポジション (U)" -#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:47 +#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:49 msgid "Facility ID" msgstr "ファシリティ ID" @@ -3013,8 +2919,8 @@ msgid "Staging" msgstr "ステージング" #: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208 -#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1934 -#: netbox/dcim/choices.py:2083 netbox/virtualization/choices.py:23 +#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1955 +#: netbox/dcim/choices.py:2104 netbox/virtualization/choices.py:23 #: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282 msgid "Decommissioning" msgstr "廃止" @@ -3080,7 +2986,7 @@ msgstr "廃止済" msgid "Millimeters" msgstr "ミリメートル" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1956 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1977 msgid "Inches" msgstr "インチ" @@ -3108,21 +3014,17 @@ msgstr "古い" #: netbox/dcim/forms/bulk_import.py:1211 netbox/dcim/forms/filtersets.py:265 #: netbox/dcim/forms/filtersets.py:780 netbox/dcim/forms/filtersets.py:796 #: netbox/dcim/forms/model_forms.py:93 netbox/dcim/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:188 netbox/dcim/forms/model_forms.py:514 -#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1709 +#: netbox/dcim/forms/model_forms.py:214 netbox/dcim/forms/model_forms.py:540 +#: netbox/dcim/forms/model_forms.py:561 netbox/dcim/forms/model_forms.py:1252 +#: netbox/dcim/forms/model_forms.py:1735 #: netbox/dcim/forms/object_import.py:177 netbox/dcim/tables/devices.py:702 #: netbox/dcim/tables/devices.py:737 netbox/dcim/tables/devices.py:965 #: netbox/dcim/tables/devices.py:1052 netbox/dcim/tables/devices.py:1205 #: netbox/ipam/forms/bulk_import.py:601 netbox/ipam/forms/model_forms.py:758 #: netbox/ipam/tables/fhrp.py:56 netbox/ipam/tables/ip.py:329 #: netbox/ipam/tables/services.py:42 netbox/netbox/tables/tables.py:329 -#: netbox/netbox/ui/panels.py:206 netbox/templates/dcim/interface.html:113 -#: netbox/templates/ipam/service.html:30 -#: netbox/templates/tenancy/contactgroup.html:29 -#: netbox/templates/tenancy/tenantgroup.html:37 -#: netbox/tenancy/forms/bulk_edit.py:33 netbox/tenancy/forms/bulk_edit.py:62 -#: netbox/tenancy/forms/bulk_import.py:31 +#: netbox/netbox/ui/panels.py:207 netbox/tenancy/forms/bulk_edit.py:33 +#: netbox/tenancy/forms/bulk_edit.py:62 netbox/tenancy/forms/bulk_import.py:31 #: netbox/tenancy/forms/bulk_import.py:64 #: netbox/tenancy/forms/model_forms.py:26 #: netbox/tenancy/forms/model_forms.py:67 @@ -3156,7 +3058,7 @@ msgid "Rear" msgstr "背面" #: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258 -#: netbox/dcim/choices.py:2081 netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:2102 netbox/virtualization/choices.py:47 msgid "Staged" msgstr "検証" @@ -3189,7 +3091,7 @@ msgid "Top to bottom" msgstr "上から下へ" #: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280 -#: netbox/dcim/choices.py:1566 +#: netbox/dcim/choices.py:1587 msgid "Passive" msgstr "パッシブ" @@ -3218,8 +3120,8 @@ msgid "Proprietary" msgstr "独自規格" #: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853 -#: netbox/dcim/choices.py:1478 netbox/dcim/choices.py:1480 -#: netbox/dcim/choices.py:1716 netbox/dcim/choices.py:1718 +#: netbox/dcim/choices.py:1499 netbox/dcim/choices.py:1501 +#: netbox/dcim/choices.py:1737 netbox/dcim/choices.py:1739 #: netbox/netbox/navigation/menu.py:212 msgid "Other" msgstr "その他" @@ -3232,348 +3134,350 @@ msgstr "ITA/International" msgid "Physical" msgstr "物理" -#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1153 +#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1162 msgid "Virtual" msgstr "仮想" -#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1355 +#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 -#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125 -#: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150 -#: netbox/netbox/navigation/menu.py:154 -#: netbox/templates/dcim/interface.html:285 +#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1151 +#: netbox/dcim/forms/model_forms.py:1615 netbox/dcim/ui/panels.py:546 +#: netbox/netbox/navigation/menu.py:150 netbox/netbox/navigation/menu.py:154 msgid "Wireless" msgstr "無線" -#: netbox/dcim/choices.py:1151 +#: netbox/dcim/choices.py:1160 msgid "Virtual interfaces" msgstr "仮想インタフェース" -#: netbox/dcim/choices.py:1154 netbox/dcim/forms/bulk_edit.py:1399 -#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107 -#: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:117 +#: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 +#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1133 +#: netbox/dcim/tables/devices.py:741 #: netbox/virtualization/forms/bulk_edit.py:177 #: netbox/virtualization/forms/bulk_import.py:171 #: netbox/virtualization/tables/virtualmachines.py:137 msgid "Bridge" msgstr "ブリッジ" -#: netbox/dcim/choices.py:1155 +#: netbox/dcim/choices.py:1164 msgid "Link Aggregation Group (LAG)" msgstr "リンクアグリゲーション (LAG)" -#: netbox/dcim/choices.py:1159 +#: netbox/dcim/choices.py:1168 msgid "FastEthernet (100 Mbps)" msgstr "ファストイーサネット (100 Mbps)" -#: netbox/dcim/choices.py:1168 +#: netbox/dcim/choices.py:1177 msgid "GigabitEthernet (1 Gbps)" msgstr "ギガビットイーサネット (1 Gbps)" -#: netbox/dcim/choices.py:1186 +#: netbox/dcim/choices.py:1195 msgid "2.5/5 Gbps Ethernet" msgstr "2.5/5 ギガビット/秒イーサネット" -#: netbox/dcim/choices.py:1193 +#: netbox/dcim/choices.py:1202 msgid "10 Gbps Ethernet" msgstr "10 ギガビットイーサネット" -#: netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1218 msgid "25 Gbps Ethernet" msgstr "25 ギガビットイーサネット" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1228 msgid "40 Gbps Ethernet" msgstr "40 ギガビットイーサネット" -#: netbox/dcim/choices.py:1230 +#: netbox/dcim/choices.py:1239 msgid "50 Gbps Ethernet" msgstr "50 ギガビットイーサネット" -#: netbox/dcim/choices.py:1240 +#: netbox/dcim/choices.py:1249 msgid "100 Gbps Ethernet" msgstr "100 ギガビットイーサネット" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1270 msgid "200 Gbps Ethernet" msgstr "200 ギガビット/秒イーサネット" -#: netbox/dcim/choices.py:1275 +#: netbox/dcim/choices.py:1284 msgid "400 Gbps Ethernet" msgstr "400 ギガビットイーサネット" -#: netbox/dcim/choices.py:1293 +#: netbox/dcim/choices.py:1302 msgid "800 Gbps Ethernet" msgstr "800 ギガビット/秒イーサネット" -#: netbox/dcim/choices.py:1302 +#: netbox/dcim/choices.py:1311 +msgid "1.6 Tbps Ethernet" +msgstr "1.6 Tbps イーサネット" + +#: netbox/dcim/choices.py:1319 msgid "Pluggable transceivers" msgstr "プラガブルトランシーバー" -#: netbox/dcim/choices.py:1339 +#: netbox/dcim/choices.py:1359 msgid "Backplane Ethernet" msgstr "バックプレーンイーサネット" -#: netbox/dcim/choices.py:1371 +#: netbox/dcim/choices.py:1392 msgid "Cellular" msgstr "セルラー" -#: netbox/dcim/choices.py:1423 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/choices.py:1444 netbox/dcim/forms/filtersets.py:425 #: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112 #: netbox/dcim/forms/filtersets.py:1910 -#: netbox/templates/dcim/inventoryitem.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:66 msgid "Serial" msgstr "シリアル" -#: netbox/dcim/choices.py:1438 +#: netbox/dcim/choices.py:1459 msgid "Coaxial" msgstr "同軸" -#: netbox/dcim/choices.py:1459 +#: netbox/dcim/choices.py:1480 msgid "Stacking" msgstr "スタック" -#: netbox/dcim/choices.py:1511 +#: netbox/dcim/choices.py:1532 msgid "Half" msgstr "半二重" -#: netbox/dcim/choices.py:1512 +#: netbox/dcim/choices.py:1533 msgid "Full" msgstr "全二重" -#: netbox/dcim/choices.py:1513 netbox/netbox/preferences.py:32 +#: netbox/dcim/choices.py:1534 netbox/netbox/preferences.py:32 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "自動" -#: netbox/dcim/choices.py:1525 +#: netbox/dcim/choices.py:1546 msgid "Access" msgstr "アクセス" -#: netbox/dcim/choices.py:1526 netbox/ipam/tables/vlans.py:148 +#: netbox/dcim/choices.py:1547 netbox/ipam/tables/vlans.py:148 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "タグ付き" -#: netbox/dcim/choices.py:1527 +#: netbox/dcim/choices.py:1548 msgid "Tagged (All)" msgstr "タグ付き (全て)" -#: netbox/dcim/choices.py:1528 netbox/templates/ipam/vlan_edit.html:26 +#: netbox/dcim/choices.py:1549 netbox/templates/ipam/vlan_edit.html:26 msgid "Q-in-Q (802.1ad)" msgstr "Q-in-Q (802.1ad)" -#: netbox/dcim/choices.py:1557 +#: netbox/dcim/choices.py:1578 msgid "IEEE Standard" msgstr "IEEE スタンダード" -#: netbox/dcim/choices.py:1568 +#: netbox/dcim/choices.py:1589 msgid "Passive 24V (2-pair)" msgstr "パッシブ 24V (2ペア)" -#: netbox/dcim/choices.py:1569 +#: netbox/dcim/choices.py:1590 msgid "Passive 24V (4-pair)" msgstr "パッシブ 24V (4ペア)" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1591 msgid "Passive 48V (2-pair)" msgstr "パッシブ 48V (2ペア)" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1592 msgid "Passive 48V (4-pair)" msgstr "パッシブ 48V (4ペア)" -#: netbox/dcim/choices.py:1644 +#: netbox/dcim/choices.py:1665 msgid "Copper" msgstr "カッパー" -#: netbox/dcim/choices.py:1667 +#: netbox/dcim/choices.py:1688 msgid "Fiber Optic" msgstr "光ファイバー" -#: netbox/dcim/choices.py:1703 netbox/dcim/choices.py:1917 +#: netbox/dcim/choices.py:1724 netbox/dcim/choices.py:1938 msgid "USB" msgstr "USB" -#: netbox/dcim/choices.py:1759 +#: netbox/dcim/choices.py:1780 msgid "Single" msgstr "シングル" -#: netbox/dcim/choices.py:1761 +#: netbox/dcim/choices.py:1782 msgid "1C1P" msgstr "1CP" -#: netbox/dcim/choices.py:1762 +#: netbox/dcim/choices.py:1783 msgid "1C2P" msgstr "C2P" -#: netbox/dcim/choices.py:1763 +#: netbox/dcim/choices.py:1784 msgid "1C4P" msgstr "1CP" -#: netbox/dcim/choices.py:1764 +#: netbox/dcim/choices.py:1785 msgid "1C6P" msgstr "16CP" -#: netbox/dcim/choices.py:1765 +#: netbox/dcim/choices.py:1786 msgid "1C8P" msgstr "18CP" -#: netbox/dcim/choices.py:1766 +#: netbox/dcim/choices.py:1787 msgid "1C12P" msgstr "12P" -#: netbox/dcim/choices.py:1767 +#: netbox/dcim/choices.py:1788 msgid "1C16P" msgstr "1C16P" -#: netbox/dcim/choices.py:1771 +#: netbox/dcim/choices.py:1792 msgid "Trunk" msgstr "トランク" -#: netbox/dcim/choices.py:1773 +#: netbox/dcim/choices.py:1794 msgid "2C1P trunk" msgstr "2C1P トランク" -#: netbox/dcim/choices.py:1774 +#: netbox/dcim/choices.py:1795 msgid "2C2P trunk" msgstr "2C2P トランク" -#: netbox/dcim/choices.py:1775 +#: netbox/dcim/choices.py:1796 msgid "2C4P trunk" msgstr "2C4P トランク" -#: netbox/dcim/choices.py:1776 +#: netbox/dcim/choices.py:1797 msgid "2C4P trunk (shuffle)" msgstr "2C4P トランク (シャッフル)" -#: netbox/dcim/choices.py:1777 +#: netbox/dcim/choices.py:1798 msgid "2C6P trunk" msgstr "26CP トランク" -#: netbox/dcim/choices.py:1778 +#: netbox/dcim/choices.py:1799 msgid "2C8P trunk" msgstr "28CP トランク" -#: netbox/dcim/choices.py:1779 +#: netbox/dcim/choices.py:1800 msgid "2C12P trunk" msgstr "2C12P トランク" -#: netbox/dcim/choices.py:1780 +#: netbox/dcim/choices.py:1801 msgid "4C1P trunk" msgstr "4C1P トランク" -#: netbox/dcim/choices.py:1781 +#: netbox/dcim/choices.py:1802 msgid "4C2P trunk" msgstr "4C2P トランク" -#: netbox/dcim/choices.py:1782 +#: netbox/dcim/choices.py:1803 msgid "4C4P trunk" msgstr "4C4P トランク" -#: netbox/dcim/choices.py:1783 +#: netbox/dcim/choices.py:1804 msgid "4C4P trunk (shuffle)" msgstr "4C4P トランク (シャッフル)" -#: netbox/dcim/choices.py:1784 +#: netbox/dcim/choices.py:1805 msgid "4C6P trunk" msgstr "4C6P トランク" -#: netbox/dcim/choices.py:1785 +#: netbox/dcim/choices.py:1806 msgid "4C8P trunk" msgstr "4C8P トランク" -#: netbox/dcim/choices.py:1786 +#: netbox/dcim/choices.py:1807 msgid "8C4P trunk" msgstr "8C4P トランク" -#: netbox/dcim/choices.py:1790 +#: netbox/dcim/choices.py:1811 msgid "Breakout" msgstr "ブレイクアウト" -#: netbox/dcim/choices.py:1792 +#: netbox/dcim/choices.py:1813 msgid "1C4P:4C1P breakout" msgstr "1C4P: 4C1P ブレークアウト" -#: netbox/dcim/choices.py:1793 +#: netbox/dcim/choices.py:1814 msgid "1C6P:6C1P breakout" msgstr "1C6P: 6C1P ブレークアウト" -#: netbox/dcim/choices.py:1794 +#: netbox/dcim/choices.py:1815 msgid "2C4P:8C1P breakout (shuffle)" msgstr "2C4P: 8C1P ブレークアウト (シャッフル)" -#: netbox/dcim/choices.py:1852 +#: netbox/dcim/choices.py:1873 msgid "Copper - Twisted Pair (UTP/STP)" msgstr "銅線-ツイストペア (UTP/STP)" -#: netbox/dcim/choices.py:1866 +#: netbox/dcim/choices.py:1887 msgid "Copper - Twinax (DAC)" msgstr "銅-トワイナックス (DAC)" -#: netbox/dcim/choices.py:1873 +#: netbox/dcim/choices.py:1894 msgid "Copper - Coaxial" msgstr "銅-同軸" -#: netbox/dcim/choices.py:1888 +#: netbox/dcim/choices.py:1909 msgid "Fiber - Multimode" msgstr "ファイバ-マルチモード" -#: netbox/dcim/choices.py:1899 +#: netbox/dcim/choices.py:1920 msgid "Fiber - Single-mode" msgstr "ファイバ-シングルモード" -#: netbox/dcim/choices.py:1907 +#: netbox/dcim/choices.py:1928 msgid "Fiber - Other" msgstr "ファイバー-その他" -#: netbox/dcim/choices.py:1932 netbox/dcim/forms/filtersets.py:1402 +#: netbox/dcim/choices.py:1953 netbox/dcim/forms/filtersets.py:1402 msgid "Connected" msgstr "接続済" -#: netbox/dcim/choices.py:1951 netbox/netbox/choices.py:177 +#: netbox/dcim/choices.py:1972 netbox/netbox/choices.py:177 msgid "Kilometers" msgstr "キロメートル" -#: netbox/dcim/choices.py:1952 netbox/netbox/choices.py:178 +#: netbox/dcim/choices.py:1973 netbox/netbox/choices.py:178 #: netbox/templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "メートル" -#: netbox/dcim/choices.py:1953 +#: netbox/dcim/choices.py:1974 msgid "Centimeters" msgstr "センチメートル" -#: netbox/dcim/choices.py:1954 netbox/netbox/choices.py:179 +#: netbox/dcim/choices.py:1975 netbox/netbox/choices.py:179 msgid "Miles" msgstr "マイル" -#: netbox/dcim/choices.py:1955 netbox/netbox/choices.py:180 +#: netbox/dcim/choices.py:1976 netbox/netbox/choices.py:180 #: netbox/templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "フィート" -#: netbox/dcim/choices.py:2003 +#: netbox/dcim/choices.py:2024 msgid "Redundant" msgstr "冗長" -#: netbox/dcim/choices.py:2024 +#: netbox/dcim/choices.py:2045 msgid "Single phase" msgstr "単相" -#: netbox/dcim/choices.py:2025 +#: netbox/dcim/choices.py:2046 msgid "Three-phase" msgstr "三相" -#: netbox/dcim/choices.py:2041 netbox/extras/choices.py:53 +#: netbox/dcim/choices.py:2062 netbox/extras/choices.py:53 #: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70 #: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "無効" -#: netbox/dcim/choices.py:2042 +#: netbox/dcim/choices.py:2063 msgid "Faulty" msgstr "不良" @@ -3855,8 +3759,9 @@ msgstr "奥行きをすべて使う" #: netbox/dcim/filtersets.py:1323 netbox/dcim/forms/filtersets.py:920 #: netbox/dcim/forms/filtersets.py:1634 netbox/dcim/forms/filtersets.py:1979 -#: netbox/dcim/forms/model_forms.py:1915 netbox/dcim/models/devices.py:1313 -#: netbox/dcim/models/devices.py:1336 netbox/virtualization/filtersets.py:230 +#: netbox/dcim/forms/model_forms.py:1941 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1336 netbox/dcim/ui/panels.py:366 +#: netbox/dcim/ui/panels.py:504 netbox/virtualization/filtersets.py:230 #: netbox/virtualization/filtersets.py:318 #: netbox/virtualization/forms/filtersets.py:191 #: netbox/virtualization/forms/filtersets.py:245 @@ -3944,7 +3849,6 @@ msgstr "バーチャルシャーシ (ID)" #: netbox/dcim/forms/object_create.py:329 netbox/dcim/tables/devices.py:215 #: netbox/netbox/navigation/menu.py:82 #: netbox/templates/dcim/device_edit.html:95 -#: netbox/templates/dcim/virtualchassis.html:10 #: netbox/templates/dcim/virtualchassis_edit.html:28 msgid "Virtual Chassis" msgstr "バーチャルシャーシ" @@ -4004,7 +3908,7 @@ msgstr "割当済みか" msgid "Is primary" msgstr "プライマリ" -#: netbox/dcim/filtersets.py:2060 netbox/templates/dcim/interface.html:81 +#: netbox/dcim/filtersets.py:2060 #: netbox/virtualization/forms/model_forms.py:386 #: netbox/virtualization/ui/panels.py:62 msgid "802.1Q Mode" @@ -4021,27 +3925,25 @@ msgstr "割当 VID" #: netbox/dcim/filtersets.py:2074 netbox/dcim/forms/bulk_edit.py:1512 #: netbox/dcim/forms/bulk_import.py:1034 netbox/dcim/forms/filtersets.py:1687 -#: netbox/dcim/forms/model_forms.py:1555 +#: netbox/dcim/forms/model_forms.py:1581 #: netbox/dcim/models/device_components.py:867 -#: netbox/dcim/tables/devices.py:667 netbox/ipam/filtersets.py:360 -#: netbox/ipam/filtersets.py:372 netbox/ipam/filtersets.py:511 -#: netbox/ipam/filtersets.py:618 netbox/ipam/filtersets.py:630 -#: netbox/ipam/forms/bulk_edit.py:190 netbox/ipam/forms/bulk_edit.py:240 -#: netbox/ipam/forms/bulk_edit.py:281 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:248 netbox/ipam/forms/bulk_import.py:284 -#: netbox/ipam/forms/filtersets.py:70 netbox/ipam/forms/filtersets.py:194 -#: netbox/ipam/forms/filtersets.py:348 netbox/ipam/forms/model_forms.py:68 -#: netbox/ipam/forms/model_forms.py:203 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:303 netbox/ipam/forms/model_forms.py:466 -#: netbox/ipam/forms/model_forms.py:480 netbox/ipam/forms/model_forms.py:494 -#: netbox/ipam/models/ip.py:224 netbox/ipam/models/ip.py:518 -#: netbox/ipam/models/ip.py:747 netbox/ipam/models/vrfs.py:61 -#: netbox/ipam/tables/ip.py:187 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:311 netbox/ipam/tables/ip.py:413 -#: netbox/templates/dcim/interface.html:170 -#: netbox/templates/ipam/ipaddress.html:18 -#: netbox/templates/ipam/iprange.html:47 netbox/templates/ipam/prefix.html:19 -#: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 +#: netbox/dcim/tables/devices.py:667 netbox/dcim/ui/panels.py:507 +#: netbox/ipam/filtersets.py:360 netbox/ipam/filtersets.py:372 +#: netbox/ipam/filtersets.py:511 netbox/ipam/filtersets.py:618 +#: netbox/ipam/filtersets.py:630 netbox/ipam/forms/bulk_edit.py:190 +#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:281 +#: netbox/ipam/forms/bulk_import.py:163 netbox/ipam/forms/bulk_import.py:248 +#: netbox/ipam/forms/bulk_import.py:284 netbox/ipam/forms/filtersets.py:70 +#: netbox/ipam/forms/filtersets.py:194 netbox/ipam/forms/filtersets.py:348 +#: netbox/ipam/forms/model_forms.py:68 netbox/ipam/forms/model_forms.py:203 +#: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:303 +#: netbox/ipam/forms/model_forms.py:466 netbox/ipam/forms/model_forms.py:480 +#: netbox/ipam/forms/model_forms.py:494 netbox/ipam/models/ip.py:224 +#: netbox/ipam/models/ip.py:528 netbox/ipam/models/ip.py:757 +#: netbox/ipam/models/vrfs.py:61 netbox/ipam/tables/ip.py:187 +#: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:311 +#: netbox/ipam/tables/ip.py:413 netbox/ipam/ui/panels.py:102 +#: netbox/ipam/ui/panels.py:111 netbox/ipam/ui/panels.py:139 #: netbox/virtualization/forms/bulk_edit.py:226 #: netbox/virtualization/forms/bulk_import.py:218 #: netbox/virtualization/forms/filtersets.py:250 @@ -4064,9 +3966,9 @@ msgid "L2VPN (ID)" msgstr "L2VPN (ID)" #: netbox/dcim/filtersets.py:2092 netbox/dcim/forms/filtersets.py:1692 -#: netbox/dcim/tables/devices.py:607 netbox/ipam/filtersets.py:1087 -#: netbox/ipam/forms/filtersets.py:613 netbox/ipam/tables/vlans.py:116 -#: netbox/templates/dcim/interface.html:104 netbox/templates/ipam/vlan.html:82 +#: netbox/dcim/tables/devices.py:607 netbox/dcim/ui/panels.py:487 +#: netbox/ipam/filtersets.py:1087 netbox/ipam/forms/filtersets.py:613 +#: netbox/ipam/tables/vlans.py:116 netbox/ipam/ui/panels.py:206 #: netbox/virtualization/forms/filtersets.py:255 #: netbox/vpn/forms/bulk_import.py:285 netbox/vpn/forms/filtersets.py:268 #: netbox/vpn/forms/model_forms.py:407 netbox/vpn/forms/model_forms.py:425 @@ -4080,10 +3982,9 @@ msgid "VLAN Translation Policy (ID)" msgstr "VLAN 変換ポリシー (ID)" #: netbox/dcim/filtersets.py:2105 netbox/dcim/forms/filtersets.py:1658 -#: netbox/dcim/forms/model_forms.py:1572 +#: netbox/dcim/forms/model_forms.py:1598 #: netbox/dcim/models/device_components.py:668 #: netbox/ipam/forms/filtersets.py:531 netbox/ipam/forms/model_forms.py:703 -#: netbox/templates/ipam/vlantranslationpolicy.html:11 #: netbox/virtualization/forms/bulk_edit.py:231 #: netbox/virtualization/forms/filtersets.py:265 #: netbox/virtualization/forms/model_forms.py:364 @@ -4123,9 +4024,6 @@ msgid "LAG interface (ID)" msgstr "LAG インタフェース (ID)" #: netbox/dcim/filtersets.py:2185 netbox/dcim/tables/devices.py:1194 -#: netbox/templates/dcim/interface.html:149 -#: netbox/templates/dcim/macaddress.html:11 -#: netbox/templates/dcim/macaddress.html:14 #: netbox/virtualization/ui/panels.py:71 msgid "MAC Address" msgstr "MAC アドレス" @@ -4134,15 +4032,14 @@ msgstr "MAC アドレス" msgid "Primary MAC address (ID)" msgstr "プライマリ MAC アドレス (ID)" -#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1559 +#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1585 #: netbox/virtualization/filtersets.py:331 #: netbox/virtualization/forms/model_forms.py:302 msgid "Primary MAC address" msgstr "プライマリ MAC アドレス" #: netbox/dcim/filtersets.py:2225 netbox/dcim/filtersets.py:2237 -#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1895 -#: netbox/templates/dcim/virtualdevicecontext.html:15 +#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1921 msgid "Virtual Device Context" msgstr "仮想デバイスコンテキスト" @@ -4201,6 +4098,7 @@ msgstr "電源盤 (ID)" #: netbox/netbox/forms/bulk_import.py:27 netbox/netbox/forms/mixins.py:131 #: netbox/netbox/tables/columns.py:495 #: netbox/templates/circuits/inc/circuit_termination.html:29 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:29 #: netbox/templates/generic/bulk_edit.html:78 #: netbox/templates/inc/panels/tags.html:5 #: netbox/utilities/forms/fields/fields.py:101 @@ -4208,14 +4106,12 @@ msgid "Tags" msgstr "タグ" #: netbox/dcim/forms/bulk_create.py:116 netbox/dcim/forms/filtersets.py:1842 -#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:595 -#: netbox/dcim/forms/model_forms.py:661 netbox/dcim/forms/object_create.py:155 +#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:621 +#: netbox/dcim/forms/model_forms.py:687 netbox/dcim/forms/object_create.py:155 #: netbox/dcim/forms/object_create.py:256 netbox/dcim/tables/devices.py:169 -#: netbox/templates/dcim/frontport.html:132 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/panels/front_port_mappings.html:9 +#: netbox/templates/dcim/panels/rear_port_mappings.html:9 #: netbox/templates/dcim/panels/virtual_chassis_members.html:9 -#: netbox/templates/dcim/rearport.html:126 -#: netbox/templates/dcim/virtualchassis.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:67 msgid "Position" msgstr "ポジション" @@ -4244,7 +4140,7 @@ msgid "Contact E-mail" msgstr "連絡先電子メール" #: netbox/dcim/forms/bulk_edit.py:152 netbox/dcim/forms/bulk_import.py:138 -#: netbox/dcim/forms/model_forms.py:147 +#: netbox/dcim/forms/model_forms.py:157 msgid "Time zone" msgstr "タイムゾーン" @@ -4259,17 +4155,16 @@ msgstr "タイムゾーン" #: netbox/dcim/forms/filtersets.py:546 netbox/dcim/forms/filtersets.py:695 #: netbox/dcim/forms/filtersets.py:801 netbox/dcim/forms/filtersets.py:884 #: netbox/dcim/forms/filtersets.py:1096 netbox/dcim/forms/filtersets.py:1907 -#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:223 -#: netbox/dcim/forms/model_forms.py:354 netbox/dcim/forms/model_forms.py:366 -#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:540 -#: netbox/dcim/forms/model_forms.py:1239 netbox/dcim/forms/model_forms.py:1722 +#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:249 +#: netbox/dcim/forms/model_forms.py:380 netbox/dcim/forms/model_forms.py:392 +#: netbox/dcim/forms/model_forms.py:462 netbox/dcim/forms/model_forms.py:566 +#: netbox/dcim/forms/model_forms.py:1265 netbox/dcim/forms/model_forms.py:1748 #: netbox/dcim/forms/object_import.py:188 netbox/dcim/tables/devices.py:101 #: netbox/dcim/tables/devices.py:176 netbox/dcim/tables/devices.py:1035 #: netbox/dcim/tables/devicetypes.py:87 netbox/dcim/tables/devicetypes.py:322 #: netbox/dcim/tables/modules.py:47 netbox/dcim/tables/modules.py:90 #: netbox/dcim/tables/racks.py:51 netbox/dcim/tables/racks.py:121 -#: netbox/templates/dcim/inventoryitem.html:48 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/panels/installed_module.html:13 #: netbox/templates/dcim/panels/module_type.html:7 msgid "Manufacturer" msgstr "メーカ" @@ -4294,7 +4189,7 @@ msgid "Height (U)" msgstr "高さ (U)" #: netbox/dcim/forms/bulk_edit.py:244 netbox/dcim/forms/bulk_edit.py:387 -#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:39 +#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:41 msgid "Descending units" msgstr "降順" @@ -4328,10 +4223,10 @@ msgstr "取り付け奥行き" #: netbox/dcim/forms/filtersets.py:362 netbox/dcim/forms/filtersets.py:441 #: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:651 #: netbox/dcim/forms/filtersets.py:683 netbox/dcim/forms/filtersets.py:755 -#: netbox/dcim/forms/model_forms.py:237 netbox/dcim/forms/model_forms.py:318 +#: netbox/dcim/forms/model_forms.py:263 netbox/dcim/forms/model_forms.py:344 #: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:55 #: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:162 -#: netbox/dcim/views.py:891 netbox/dcim/views.py:1019 +#: netbox/dcim/views.py:893 netbox/dcim/views.py:1021 #: netbox/extras/forms/bulk_edit.py:57 netbox/extras/forms/bulk_edit.py:137 #: netbox/extras/forms/bulk_edit.py:191 netbox/extras/forms/bulk_edit.py:219 #: netbox/extras/forms/bulk_edit.py:315 netbox/extras/forms/bulk_edit.py:341 @@ -4342,7 +4237,7 @@ msgstr "取り付け奥行き" #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 #: netbox/templates/extras/tableconfig.html:41 -#: netbox/templates/extras/tag.html:32 netbox/templates/ipam/role.html:30 +#: netbox/templates/extras/tag.html:32 msgid "Weight" msgstr "重量" @@ -4361,18 +4256,18 @@ msgid "Weight unit" msgstr "重量単位" #: netbox/dcim/forms/bulk_edit.py:290 netbox/dcim/forms/filtersets.py:335 -#: netbox/dcim/forms/model_forms.py:233 netbox/dcim/forms/model_forms.py:272 +#: netbox/dcim/forms/model_forms.py:259 netbox/dcim/forms/model_forms.py:298 msgid "Rack Type" msgstr "ラックタイプ" #: netbox/dcim/forms/bulk_edit.py:292 netbox/dcim/forms/bulk_edit.py:440 -#: netbox/dcim/forms/model_forms.py:236 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/model_forms.py:262 netbox/dcim/forms/model_forms.py:343 msgid "Outer Dimensions" msgstr "外形寸法" -#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:238 -#: netbox/dcim/forms/model_forms.py:319 netbox/dcim/ui/panels.py:135 -#: netbox/dcim/views.py:885 netbox/dcim/views.py:1017 +#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:345 netbox/dcim/ui/panels.py:137 +#: netbox/dcim/views.py:887 netbox/dcim/views.py:1019 #: netbox/extras/tables/tables.py:278 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 #: netbox/templates/extras/imageattachment.html:40 @@ -4380,8 +4275,8 @@ msgid "Dimensions" msgstr "寸法" #: netbox/dcim/forms/bulk_edit.py:297 netbox/dcim/forms/filtersets.py:336 -#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:240 -#: netbox/dcim/views.py:890 netbox/dcim/views.py:1018 +#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:266 +#: netbox/dcim/views.py:892 netbox/dcim/views.py:1020 #: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "ナンバリング" @@ -4392,13 +4287,14 @@ msgid "Rack type" msgstr "ラックタイプ" #: netbox/dcim/forms/bulk_edit.py:363 netbox/dcim/forms/bulk_edit.py:708 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/templates/dcim/modulebay.html:70 +#: netbox/dcim/forms/bulk_edit.py:763 msgid "Serial Number" msgstr "シリアル番号" #: netbox/dcim/forms/bulk_edit.py:366 netbox/dcim/forms/filtersets.py:429 #: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1116 #: netbox/dcim/forms/filtersets.py:1914 +#: netbox/templates/dcim/panels/installed_module.html:25 msgid "Asset tag" msgstr "アセットタグ" @@ -4419,13 +4315,12 @@ msgstr "エアフロー" #: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/filtersets.py:501 #: netbox/dcim/forms/filtersets.py:874 netbox/dcim/forms/filtersets.py:1086 #: netbox/dcim/forms/filtersets.py:1186 netbox/dcim/forms/filtersets.py:1325 -#: netbox/dcim/forms/model_forms.py:282 netbox/dcim/forms/model_forms.py:326 -#: netbox/dcim/forms/model_forms.py:586 netbox/dcim/forms/model_forms.py:871 +#: netbox/dcim/forms/model_forms.py:308 netbox/dcim/forms/model_forms.py:352 +#: netbox/dcim/forms/model_forms.py:612 netbox/dcim/forms/model_forms.py:897 #: netbox/dcim/forms/object_create.py:303 netbox/dcim/tables/devices.py:165 #: netbox/dcim/tables/power.py:67 netbox/dcim/tables/racks.py:204 #: netbox/ipam/forms/filtersets.py:486 #: netbox/templates/dcim/inc/cable_termination.html:16 -#: netbox/templates/dcim/powerfeed.html:28 #: netbox/templates/dcim/rack/base.html:4 #: netbox/virtualization/forms/model_forms.py:107 msgid "Rack" @@ -4435,14 +4330,14 @@ msgstr "ラック" #: netbox/dcim/forms/filtersets.py:360 netbox/dcim/forms/filtersets.py:440 #: netbox/dcim/forms/filtersets.py:532 netbox/dcim/forms/filtersets.py:677 #: netbox/dcim/forms/filtersets.py:822 netbox/dcim/forms/filtersets.py:1043 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:787 -#: netbox/dcim/forms/model_forms.py:1790 +#: netbox/dcim/forms/model_forms.py:470 netbox/dcim/forms/model_forms.py:813 +#: netbox/dcim/forms/model_forms.py:1816 #: netbox/templates/dcim/device_edit.html:22 msgid "Hardware" msgstr "ハードウェア" #: netbox/dcim/forms/bulk_edit.py:490 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:397 msgid "Default platform" msgstr "デフォルトプラットフォーム" @@ -4457,31 +4352,31 @@ msgstr "ユニット数" #: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/tables/devicetypes.py:106 msgid "Exclude from utilization" -msgstr "ラック利用率に含めない" +msgstr "使用率から除外" -#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:385 -#: netbox/dcim/forms/model_forms.py:1022 netbox/dcim/forms/model_forms.py:1064 -#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1119 -#: netbox/dcim/forms/model_forms.py:1140 netbox/dcim/forms/model_forms.py:1180 -#: netbox/dcim/forms/model_forms.py:1198 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:411 +#: netbox/dcim/forms/model_forms.py:1048 netbox/dcim/forms/model_forms.py:1090 +#: netbox/dcim/forms/model_forms.py:1117 netbox/dcim/forms/model_forms.py:1145 +#: netbox/dcim/forms/model_forms.py:1166 netbox/dcim/forms/model_forms.py:1206 +#: netbox/dcim/forms/model_forms.py:1224 #: netbox/dcim/forms/object_create.py:119 netbox/dcim/tables/devicetypes.py:84 -#: netbox/dcim/ui/panels.py:125 netbox/templates/dcim/devicebay.html:52 +#: netbox/dcim/ui/panels.py:127 msgid "Device Type" msgstr "デバイスタイプ" -#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:412 -#: netbox/dcim/views.py:1590 netbox/extras/forms/model_forms.py:601 +#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:438 +#: netbox/dcim/views.py:1592 netbox/extras/forms/model_forms.py:601 msgid "Schema" msgstr "スキーマ" #: netbox/dcim/forms/bulk_edit.py:549 netbox/dcim/forms/bulk_edit.py:556 #: netbox/dcim/forms/bulk_edit.py:787 netbox/dcim/forms/bulk_import.py:460 #: netbox/dcim/forms/bulk_import.py:1459 netbox/dcim/forms/filtersets.py:690 -#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:418 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/tables/modules.py:43 +#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:444 +#: netbox/dcim/forms/model_forms.py:457 netbox/dcim/tables/modules.py:43 #: netbox/extras/forms/filtersets.py:413 #: netbox/extras/forms/model_forms.py:626 netbox/extras/tables/tables.py:627 -#: netbox/templates/account/base.html:7 netbox/templates/dcim/cable.html:23 +#: netbox/templates/account/base.html:7 #: netbox/templates/extras/configcontext.html:21 #: netbox/templates/inc/user_menu.html:38 netbox/vpn/forms/bulk_edit.py:213 #: netbox/vpn/forms/filtersets.py:203 netbox/vpn/forms/model_forms.py:378 @@ -4489,22 +4384,21 @@ msgid "Profile" msgstr "プロフィール" #: netbox/dcim/forms/bulk_edit.py:588 netbox/dcim/forms/filtersets.py:1379 -#: netbox/dcim/forms/model_forms.py:443 netbox/dcim/forms/model_forms.py:1023 -#: netbox/dcim/forms/model_forms.py:1065 netbox/dcim/forms/model_forms.py:1092 -#: netbox/dcim/forms/model_forms.py:1120 netbox/dcim/forms/model_forms.py:1141 -#: netbox/dcim/forms/model_forms.py:1181 netbox/dcim/forms/model_forms.py:1199 +#: netbox/dcim/forms/model_forms.py:469 netbox/dcim/forms/model_forms.py:1049 +#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1118 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1167 +#: netbox/dcim/forms/model_forms.py:1207 netbox/dcim/forms/model_forms.py:1225 #: netbox/dcim/forms/object_create.py:120 netbox/dcim/tables/modules.py:52 -#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2848 -#: netbox/templates/dcim/modulebay.html:66 +#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2851 msgid "Module Type" msgstr "モジュールタイプ" -#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:388 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:414 msgid "Chassis" msgstr "シャーシ" #: netbox/dcim/forms/bulk_edit.py:611 netbox/dcim/models/devices.py:390 -#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:142 +#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:144 msgid "VM role" msgstr "VMのロール" @@ -4514,8 +4408,8 @@ msgstr "VMのロール" #: netbox/dcim/forms/bulk_import.py:561 netbox/dcim/forms/bulk_import.py:686 #: netbox/dcim/forms/bulk_import.py:690 netbox/dcim/forms/filtersets.py:775 #: netbox/dcim/forms/filtersets.py:806 netbox/dcim/forms/filtersets.py:925 -#: netbox/dcim/forms/model_forms.py:509 netbox/dcim/forms/model_forms.py:546 -#: netbox/dcim/forms/model_forms.py:670 +#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:572 +#: netbox/dcim/forms/model_forms.py:696 #: netbox/virtualization/forms/bulk_import.py:145 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/filtersets.py:207 @@ -4525,20 +4419,21 @@ msgstr "設定テンプレート" #: netbox/dcim/forms/bulk_edit.py:657 netbox/dcim/forms/bulk_edit.py:1040 #: netbox/dcim/forms/bulk_import.py:592 netbox/dcim/forms/filtersets.py:133 -#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:616 -#: netbox/dcim/forms/model_forms.py:986 netbox/dcim/forms/model_forms.py:1003 +#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:642 +#: netbox/dcim/forms/model_forms.py:1012 netbox/dcim/forms/model_forms.py:1029 #: netbox/extras/filtersets.py:729 +#: netbox/templates/dcim/panels/installed_device.html:13 msgid "Device type" msgstr "デバイスタイプ" #: netbox/dcim/forms/bulk_edit.py:668 netbox/dcim/forms/bulk_import.py:573 -#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:624 +#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:650 msgid "Device role" msgstr "デバイスロール" #: netbox/dcim/forms/bulk_edit.py:691 netbox/dcim/forms/bulk_import.py:598 #: netbox/dcim/forms/filtersets.py:789 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/model_forms.py:557 netbox/dcim/forms/model_forms.py:629 +#: netbox/dcim/forms/model_forms.py:583 netbox/dcim/forms/model_forms.py:655 #: netbox/dcim/tables/devices.py:191 netbox/extras/filtersets.py:745 #: netbox/virtualization/forms/bulk_edit.py:131 #: netbox/virtualization/forms/bulk_import.py:135 @@ -4550,7 +4445,7 @@ msgstr "プラットフォーム" #: netbox/dcim/forms/bulk_edit.py:716 netbox/dcim/forms/bulk_import.py:617 #: netbox/dcim/forms/filtersets.py:830 netbox/dcim/forms/filtersets.py:1000 -#: netbox/dcim/forms/model_forms.py:638 netbox/dcim/tables/devices.py:211 +#: netbox/dcim/forms/model_forms.py:664 netbox/dcim/tables/devices.py:211 #: netbox/extras/filtersets.py:778 netbox/extras/forms/filtersets.py:406 #: netbox/ipam/forms/filtersets.py:457 netbox/ipam/forms/filtersets.py:491 #: netbox/virtualization/filtersets.py:148 @@ -4579,7 +4474,8 @@ msgid "Virtualization" msgstr "仮想化" #: netbox/dcim/forms/bulk_edit.py:744 netbox/dcim/forms/bulk_import.py:759 -#: netbox/dcim/forms/model_forms.py:765 netbox/dcim/forms/model_forms.py:1011 +#: netbox/dcim/forms/model_forms.py:791 netbox/dcim/forms/model_forms.py:1037 +#: netbox/templates/dcim/panels/installed_module.html:17 msgid "Module type" msgstr "モジュールタイプ" @@ -4589,25 +4485,15 @@ msgstr "モジュールタイプ" #: netbox/dcim/forms/bulk_edit.py:1146 netbox/dcim/forms/bulk_edit.py:1173 #: netbox/dcim/forms/bulk_edit.py:1200 netbox/dcim/forms/bulk_edit.py:1218 #: netbox/dcim/forms/bulk_edit.py:1236 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/object_create.py:48 netbox/templates/dcim/cable.html:36 -#: netbox/templates/dcim/consoleport.html:32 -#: netbox/templates/dcim/consoleserverport.html:32 -#: netbox/templates/dcim/devicebay.html:28 -#: netbox/templates/dcim/frontport.html:32 +#: netbox/dcim/forms/object_create.py:48 #: netbox/templates/dcim/inc/panels/inventory_items.html:19 -#: netbox/templates/dcim/interface.html:42 -#: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:34 -#: netbox/templates/dcim/poweroutlet.html:32 -#: netbox/templates/dcim/powerport.html:32 -#: netbox/templates/dcim/rearport.html:32 +#: netbox/templates/dcim/panels/component_inventory_items.html:9 #: netbox/templates/extras/customfield.html:26 #: netbox/templates/generic/bulk_import.html:193 msgid "Label" msgstr "ラベル" #: netbox/dcim/forms/bulk_edit.py:807 netbox/dcim/forms/filtersets.py:1224 -#: netbox/templates/dcim/cable.html:54 msgid "Length" msgstr "長さ" @@ -4617,34 +4503,29 @@ msgid "Length unit" msgstr "長さの単位" #: netbox/dcim/forms/bulk_edit.py:830 -#: netbox/templates/dcim/virtualchassis.html:13 msgid "Domain" msgstr "ドメイン" #: netbox/dcim/forms/bulk_edit.py:886 netbox/dcim/forms/bulk_import.py:1646 -#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:865 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:891 msgid "Power panel" msgstr "電源盤" #: netbox/dcim/forms/bulk_edit.py:908 netbox/dcim/forms/bulk_import.py:1682 #: netbox/dcim/forms/filtersets.py:1338 -#: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "供給電源" #: netbox/dcim/forms/bulk_edit.py:914 netbox/dcim/forms/bulk_import.py:1687 #: netbox/dcim/forms/filtersets.py:1343 -#: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "電力相" #: netbox/dcim/forms/bulk_edit.py:920 netbox/dcim/forms/filtersets.py:1348 -#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "電圧" #: netbox/dcim/forms/bulk_edit.py:924 netbox/dcim/forms/filtersets.py:1352 -#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "アンペア数" @@ -4657,7 +4538,7 @@ msgid "Maximum draw" msgstr "最大消費電力" #: netbox/dcim/forms/bulk_edit.py:1018 -#: netbox/dcim/models/device_component_templates.py:292 +#: netbox/dcim/models/device_component_templates.py:282 #: netbox/dcim/models/device_components.py:440 msgid "Maximum power draw (watts)" msgstr "最大消費電力 (ワット)" @@ -4667,14 +4548,14 @@ msgid "Allocated draw" msgstr "割当電力" #: netbox/dcim/forms/bulk_edit.py:1024 -#: netbox/dcim/models/device_component_templates.py:299 +#: netbox/dcim/models/device_component_templates.py:289 #: netbox/dcim/models/device_components.py:447 msgid "Allocated power draw (watts)" msgstr "割当消費電力 (ワット)" #: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_import.py:892 -#: netbox/dcim/forms/model_forms.py:1080 netbox/dcim/forms/model_forms.py:1445 -#: netbox/dcim/forms/model_forms.py:1774 netbox/dcim/forms/object_import.py:56 +#: netbox/dcim/forms/model_forms.py:1106 netbox/dcim/forms/model_forms.py:1471 +#: netbox/dcim/forms/model_forms.py:1800 netbox/dcim/forms/object_import.py:56 msgid "Power port" msgstr "電源ポート" @@ -4683,23 +4564,23 @@ msgid "Feed leg" msgstr "供給端子" #: netbox/dcim/forms/bulk_edit.py:1112 netbox/dcim/forms/bulk_edit.py:1433 -#: netbox/dcim/forms/filtersets.py:1719 +#: netbox/dcim/forms/filtersets.py:1719 netbox/dcim/ui/panels.py:478 msgid "Management only" msgstr "管理のみ" #: netbox/dcim/forms/bulk_edit.py:1122 netbox/dcim/forms/bulk_edit.py:1439 #: netbox/dcim/forms/bulk_import.py:985 netbox/dcim/forms/filtersets.py:1643 #: netbox/dcim/forms/filtersets.py:1728 netbox/dcim/forms/object_import.py:91 -#: netbox/dcim/models/device_component_templates.py:462 -#: netbox/dcim/models/device_components.py:839 +#: netbox/dcim/models/device_component_templates.py:452 +#: netbox/dcim/models/device_components.py:839 netbox/dcim/ui/panels.py:480 msgid "PoE mode" msgstr "PoE モード" #: netbox/dcim/forms/bulk_edit.py:1128 netbox/dcim/forms/bulk_edit.py:1445 #: netbox/dcim/forms/bulk_import.py:991 netbox/dcim/forms/filtersets.py:1648 #: netbox/dcim/forms/filtersets.py:1733 netbox/dcim/forms/object_import.py:96 -#: netbox/dcim/models/device_component_templates.py:469 -#: netbox/dcim/models/device_components.py:846 +#: netbox/dcim/models/device_component_templates.py:459 +#: netbox/dcim/models/device_components.py:846 netbox/dcim/ui/panels.py:481 msgid "PoE type" msgstr "PoE タイプ" @@ -4708,36 +4589,26 @@ msgstr "PoE タイプ" msgid "Wireless role" msgstr "無線ロール" -#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:786 -#: netbox/dcim/forms/model_forms.py:1390 netbox/dcim/tables/devices.py:330 -#: netbox/templates/dcim/consoleport.html:24 -#: netbox/templates/dcim/consoleserverport.html:24 -#: netbox/templates/dcim/frontport.html:24 -#: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/modulebay.html:26 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/poweroutlet.html:24 -#: netbox/templates/dcim/powerport.html:24 -#: netbox/templates/dcim/rearport.html:24 +#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:812 +#: netbox/dcim/forms/model_forms.py:1416 netbox/dcim/tables/devices.py:330 +#: netbox/templates/dcim/panels/installed_module.html:9 msgid "Module" msgstr "モジュール" #: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/tables/devices.py:746 -#: netbox/templates/dcim/interface.html:134 +#: netbox/dcim/ui/panels.py:495 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1472 +#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1498 msgid "Virtual device contexts" msgstr "仮想デバイスコンテキスト" #: netbox/dcim/forms/bulk_edit.py:1424 netbox/dcim/forms/bulk_import.py:819 #: netbox/dcim/forms/bulk_import.py:845 netbox/dcim/forms/filtersets.py:1429 #: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1607 -#: netbox/dcim/tables/devices.py:651 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 -#: netbox/templates/dcim/consoleport.html:40 -#: netbox/templates/dcim/consoleserverport.html:40 +#: netbox/dcim/tables/devices.py:651 netbox/dcim/ui/panels.py:474 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:64 msgid "Speed" msgstr "速度" @@ -4754,7 +4625,7 @@ msgid "Mode" msgstr "モード" #: netbox/dcim/forms/bulk_edit.py:1461 netbox/dcim/forms/bulk_import.py:1000 -#: netbox/dcim/forms/model_forms.py:1521 netbox/ipam/forms/bulk_import.py:177 +#: netbox/dcim/forms/model_forms.py:1547 netbox/ipam/forms/bulk_import.py:177 #: netbox/ipam/forms/filtersets.py:582 netbox/ipam/models/vlans.py:93 #: netbox/virtualization/forms/bulk_edit.py:205 #: netbox/virtualization/forms/bulk_import.py:184 @@ -4763,16 +4634,15 @@ msgid "VLAN group" msgstr "VLAN グループ" #: netbox/dcim/forms/bulk_edit.py:1470 netbox/dcim/forms/bulk_import.py:1007 -#: netbox/dcim/forms/model_forms.py:1527 netbox/dcim/tables/devices.py:616 -#: netbox/templates/dcim/interface.html:91 -#: netbox/virtualization/forms/bulk_edit.py:213 +#: netbox/dcim/forms/model_forms.py:1553 netbox/dcim/tables/devices.py:616 +#: netbox/dcim/ui/panels.py:484 netbox/virtualization/forms/bulk_edit.py:213 #: netbox/virtualization/forms/bulk_import.py:191 #: netbox/virtualization/forms/model_forms.py:331 msgid "Untagged VLAN" msgstr "タグなし VLAN" #: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/bulk_import.py:1014 -#: netbox/dcim/forms/model_forms.py:1536 netbox/dcim/tables/devices.py:622 +#: netbox/dcim/forms/model_forms.py:1562 netbox/dcim/tables/devices.py:622 #: netbox/virtualization/forms/bulk_edit.py:221 #: netbox/virtualization/forms/bulk_import.py:198 #: netbox/virtualization/forms/model_forms.py:340 @@ -4788,30 +4658,29 @@ msgid "Remove tagged VLANs" msgstr "タグ付 VLAN の削除" #: netbox/dcim/forms/bulk_edit.py:1502 netbox/dcim/forms/bulk_import.py:1027 -#: netbox/dcim/forms/model_forms.py:1545 +#: netbox/dcim/forms/model_forms.py:1571 #: netbox/virtualization/forms/bulk_import.py:211 #: netbox/virtualization/forms/model_forms.py:349 msgid "Q-in-Q Service VLAN" msgstr "Q-in-Q サービス VLAN" -#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1508 +#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1534 #: netbox/wireless/forms/filtersets.py:26 msgid "Wireless LAN group" msgstr "無線 LAN グループ" -#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1513 -#: netbox/dcim/tables/devices.py:660 netbox/netbox/navigation/menu.py:156 -#: netbox/templates/dcim/interface.html:355 +#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1539 +#: netbox/dcim/tables/devices.py:660 netbox/dcim/ui/panels.py:561 +#: netbox/netbox/navigation/menu.py:156 #: netbox/wireless/tables/wirelesslan.py:20 msgid "Wireless LANs" msgstr "無線 LAN" #: netbox/dcim/forms/bulk_edit.py:1531 netbox/dcim/forms/filtersets.py:1574 -#: netbox/dcim/forms/model_forms.py:1579 netbox/ipam/forms/bulk_edit.py:227 -#: netbox/ipam/forms/bulk_edit.py:313 netbox/ipam/forms/filtersets.py:191 -#: netbox/netbox/navigation/menu.py:112 -#: netbox/templates/dcim/interface.html:146 -#: netbox/templates/ipam/prefix.html:91 +#: netbox/dcim/forms/model_forms.py:1605 netbox/dcim/ui/panels.py:499 +#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:313 +#: netbox/ipam/forms/filtersets.py:191 netbox/netbox/navigation/menu.py:112 +#: netbox/templates/ipam/panels/prefix_addressing.html:4 #: netbox/virtualization/forms/filtersets.py:218 #: netbox/virtualization/forms/model_forms.py:369 #: netbox/virtualization/ui/panels.py:68 @@ -4819,26 +4688,25 @@ msgid "Addressing" msgstr "アドレス" #: netbox/dcim/forms/bulk_edit.py:1532 netbox/dcim/forms/filtersets.py:821 -#: netbox/dcim/forms/model_forms.py:1580 +#: netbox/dcim/forms/model_forms.py:1606 #: netbox/virtualization/forms/model_forms.py:370 msgid "Operation" msgstr "オペレーション" #: netbox/dcim/forms/bulk_edit.py:1533 netbox/dcim/forms/filtersets.py:1575 -#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1124 -#: netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1150 +#: netbox/dcim/forms/model_forms.py:1608 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1581 -#: netbox/templates/dcim/interface.html:110 -#: netbox/virtualization/forms/bulk_edit.py:237 +#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1607 +#: netbox/dcim/ui/panels.py:491 netbox/virtualization/forms/bulk_edit.py:237 #: netbox/virtualization/forms/model_forms.py:371 msgid "Related Interfaces" msgstr "関連インタフェース" #: netbox/dcim/forms/bulk_edit.py:1536 netbox/dcim/forms/filtersets.py:1576 -#: netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1611 #: netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/filtersets.py:219 #: netbox/virtualization/forms/model_forms.py:374 @@ -4946,7 +4814,7 @@ msgstr "親サイト" msgid "Rack's location (if any)" msgstr "ラックのロケーション (存在する場合)" -#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:331 +#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:357 #: netbox/dcim/tables/racks.py:209 #: netbox/templates/dcim/rackreservation.html:7 msgid "Units" @@ -5027,7 +4895,7 @@ msgid "Assigned platform" msgstr "割当プラットフォーム" #: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/bulk_import.py:614 -#: netbox/dcim/forms/model_forms.py:651 +#: netbox/dcim/forms/model_forms.py:677 msgid "Virtual chassis" msgstr "バーチャルシャーシ" @@ -5043,7 +4911,7 @@ msgstr "割当ロケーション (存在する場合)" msgid "Assigned rack (if any)" msgstr "割当ラック (存在する場合)" -#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:634 msgid "Face" msgstr "面" @@ -5067,7 +4935,7 @@ msgstr "取付られているデバイスベイ (子デバイス用)" msgid "The device in which this module is installed" msgstr "取付られているデバイス" -#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:755 +#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:781 msgid "Module bay" msgstr "モジュールベイ" @@ -5079,7 +4947,7 @@ msgstr "取付られているモジュールベイ" msgid "The type of module" msgstr "モジュールタイプ" -#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:773 +#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:799 msgid "Replicate components" msgstr "構成要素を複製" @@ -5089,11 +4957,11 @@ msgid "" "by default)" msgstr "関連する構成要素を自動的に登録 (デフォルト)" -#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:779 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:805 msgid "Adopt components" msgstr "既存の構成要素を採用" -#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:782 +#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:808 msgid "Adopt already existing components" msgstr "既存の構成要素を採用" @@ -5118,13 +4986,13 @@ msgstr "このコンセントに給電する電源ポート" msgid "Electrical phase (for three-phase circuits)" msgstr "電気位相 (三相回路用)" -#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1483 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1509 #: netbox/virtualization/forms/bulk_import.py:168 #: netbox/virtualization/forms/model_forms.py:310 msgid "Parent interface" msgstr "親インタフェース" -#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1491 +#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1517 #: netbox/virtualization/forms/bulk_import.py:175 #: netbox/virtualization/forms/model_forms.py:318 msgid "Bridged interface" @@ -5346,6 +5214,7 @@ msgid "Side B name" msgstr "サイド B 名" #: netbox/dcim/forms/bulk_import.py:1456 +#: netbox/templates/dcim/panels/connection.html:60 #: netbox/wireless/forms/bulk_import.py:133 msgid "Connection status" msgstr "接続ステータス" @@ -5375,11 +5244,9 @@ msgid "" "characters: invalid hex." msgstr "{color} 使用されているどの色名とも一致せず、6 文字を超えました。16 進数が無効です。" -#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:900 +#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:926 #: netbox/dcim/tables/devices.py:1124 #: netbox/templates/dcim/panels/virtual_chassis_members.html:10 -#: netbox/templates/dcim/virtualchassis.html:17 -#: netbox/templates/dcim/virtualchassis.html:57 msgid "Master" msgstr "マスター" @@ -5407,9 +5274,8 @@ msgstr "電源タイプ (AC/DC)" msgid "Single or three-phase" msgstr "単相または三相" -#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1875 -#: netbox/dcim/ui/panels.py:108 -#: netbox/templates/dcim/virtualdevicecontext.html:30 +#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1901 +#: netbox/dcim/ui/panels.py:110 netbox/dcim/ui/panels.py:354 #: netbox/virtualization/ui/panels.py:28 msgid "Primary IPv4" msgstr "プライマリ IPv4" @@ -5418,9 +5284,8 @@ msgstr "プライマリ IPv4" msgid "IPv4 address with mask, e.g. 1.2.3.4/24" msgstr "マスク付きの IPv4 アドレス (例:1.2.3.4/24)" -#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1884 -#: netbox/dcim/ui/panels.py:113 -#: netbox/templates/dcim/virtualdevicecontext.html:41 +#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1910 +#: netbox/dcim/ui/panels.py:115 netbox/dcim/ui/panels.py:359 #: netbox/virtualization/ui/panels.py:33 msgid "Primary IPv6" msgstr "プライマリ IPv6" @@ -5430,8 +5295,7 @@ msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64" msgstr "プレフィックス長のある IPv6 アドレス、例:2001: db8:: 1/64" #: netbox/dcim/forms/common.py:19 netbox/dcim/models/device_components.py:615 -#: netbox/templates/dcim/interface.html:57 -#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/dcim/ui/panels.py:476 netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/ui/panels.py:61 msgid "MTU" msgstr "MTU" @@ -5468,18 +5332,15 @@ msgstr " {model} {name} は既にモジュールに属しているので採用 msgid "A {model} named {name} already exists" msgstr "{model} {name} は既に存在しています" -#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:853 +#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:879 #: netbox/dcim/tables/power.py:63 #: netbox/templates/dcim/inc/cable_termination.html:40 -#: netbox/templates/dcim/powerfeed.html:24 -#: netbox/templates/dcim/powerpanel.html:19 #: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "電源盤" -#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:880 -#: netbox/templates/dcim/powerfeed.html:21 -#: netbox/templates/dcim/powerport.html:80 +#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:906 +#: netbox/dcim/views.py:3106 msgid "Power Feed" msgstr "電源タップ" @@ -5507,12 +5368,12 @@ msgstr "ラック数" msgid "Function" msgstr "機能" -#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:341 -#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1164 +#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:367 +#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1166 msgid "Reservation" msgstr "予約" -#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:390 +#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:416 #: netbox/netbox/views/generic/feature_views.py:97 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" @@ -5535,7 +5396,7 @@ msgstr "サブデバイスロール" msgid "Module count" msgstr "モジュール数" -#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:548 msgid "Device Role" msgstr "デバイスロール" @@ -5573,16 +5434,9 @@ msgstr "専有済" #: netbox/dcim/forms/filtersets.py:1420 netbox/dcim/forms/filtersets.py:1460 #: netbox/dcim/forms/filtersets.py:1500 netbox/dcim/forms/filtersets.py:1535 #: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/tables/devices.py:381 -#: netbox/dcim/tables/devices.py:682 netbox/ipam/tables/vlans.py:174 +#: netbox/dcim/tables/devices.py:682 netbox/dcim/ui/panels.py:377 +#: netbox/dcim/ui/panels.py:516 netbox/ipam/tables/vlans.py:174 #: netbox/templates/circuits/inc/circuit_termination_fields.html:16 -#: netbox/templates/dcim/consoleport.html:55 -#: netbox/templates/dcim/consoleserverport.html:55 -#: netbox/templates/dcim/frontport.html:66 -#: netbox/templates/dcim/interface.html:215 -#: netbox/templates/dcim/powerfeed.html:110 -#: netbox/templates/dcim/poweroutlet.html:73 -#: netbox/templates/dcim/powerport.html:59 -#: netbox/templates/dcim/rearport.html:66 msgid "Connection" msgstr "接続" @@ -5598,13 +5452,12 @@ msgstr "種類" msgid "Mgmt only" msgstr "管理のみ" -#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1567 -#: netbox/dcim/models/device_components.py:792 -#: netbox/templates/dcim/interface.html:160 +#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1593 +#: netbox/dcim/models/device_components.py:792 netbox/dcim/ui/panels.py:506 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1653 +#: netbox/dcim/forms/filtersets.py:1653 netbox/dcim/ui/panels.py:482 #: netbox/virtualization/forms/filtersets.py:260 msgid "802.1Q mode" msgstr "802.1Q モード" @@ -5621,18 +5474,17 @@ msgstr "チャネル周波数 (MHz)" msgid "Channel width (MHz)" msgstr "チャネル幅 (MHz)" -#: netbox/dcim/forms/filtersets.py:1680 -#: netbox/templates/dcim/interface.html:96 +#: netbox/dcim/forms/filtersets.py:1680 netbox/dcim/ui/panels.py:485 msgid "Transmit power (dBm)" msgstr "送信出力 (dBm)" #: netbox/dcim/forms/filtersets.py:1751 netbox/dcim/forms/filtersets.py:1795 -#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable.html:12 -#: netbox/templates/dcim/cable_trace.html:46 -#: netbox/templates/dcim/frontport.html:74 +#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/htmx/cable_edit.html:53 #: netbox/templates/dcim/inc/connection_endpoints.html:4 -#: netbox/templates/dcim/rearport.html:74 +#: netbox/templates/dcim/panels/connection.html:14 +#: netbox/templates/dcim/panels/connection.html:51 +#: netbox/templates/dcim/panels/interface_connection.html:13 #: netbox/templates/dcim/trace/cable.html:7 msgid "Cable" msgstr "ケーブル" @@ -5672,9 +5524,7 @@ msgstr "スコープタイプ" #: netbox/ipam/forms/bulk_edit.py:382 netbox/ipam/forms/filtersets.py:195 #: netbox/ipam/forms/model_forms.py:225 netbox/ipam/forms/model_forms.py:603 #: netbox/ipam/forms/model_forms.py:613 netbox/ipam/tables/ip.py:193 -#: netbox/ipam/tables/vlans.py:40 netbox/templates/ipam/prefix.html:48 -#: netbox/templates/ipam/vlangroup.html:38 -#: netbox/virtualization/forms/bulk_edit.py:74 +#: netbox/ipam/tables/vlans.py:40 netbox/virtualization/forms/bulk_edit.py:74 #: netbox/virtualization/forms/filtersets.py:53 #: netbox/virtualization/forms/model_forms.py:73 #: netbox/virtualization/tables/clusters.py:81 @@ -5741,63 +5591,63 @@ msgstr "" "フロントポートポジションの総数 ({frontport_count}) は選択した背面ポートの位置の数と一致する必要があります " "({rearport_count})。" -#: netbox/dcim/forms/model_forms.py:158 +#: netbox/dcim/forms/model_forms.py:169 msgid "Contact Info" msgstr "連絡先情報" -#: netbox/dcim/forms/model_forms.py:211 +#: netbox/dcim/forms/model_forms.py:237 msgid "Rack Role" msgstr "ラックロール" -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:380 -#: netbox/dcim/forms/model_forms.py:551 +#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:406 +#: netbox/dcim/forms/model_forms.py:577 #: netbox/utilities/forms/fields/fields.py:58 msgid "Slug" msgstr "Slug" -#: netbox/dcim/forms/model_forms.py:276 +#: netbox/dcim/forms/model_forms.py:302 msgid "Select a pre-defined rack type, or set physical characteristics below." msgstr "定義済みのラックタイプを選択するか、以下で物理特性を設定してください。" -#: netbox/dcim/forms/model_forms.py:284 +#: netbox/dcim/forms/model_forms.py:310 msgid "Inventory Control" msgstr "在庫管理" -#: netbox/dcim/forms/model_forms.py:333 +#: netbox/dcim/forms/model_forms.py:359 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." msgstr "カンマ区切りのユニット ID 。範囲はハイフンを使用して指定できます。" -#: netbox/dcim/forms/model_forms.py:414 netbox/extras/forms/model_forms.py:603 +#: netbox/dcim/forms/model_forms.py:440 netbox/extras/forms/model_forms.py:603 msgid "Enter a valid JSON schema to define supported attributes." msgstr "有効な JSON スキーマを入力して、サポートされている属性を定義します。" -#: netbox/dcim/forms/model_forms.py:445 +#: netbox/dcim/forms/model_forms.py:471 msgid "Profile & Attributes" msgstr "プロファイルと属性" -#: netbox/dcim/forms/model_forms.py:597 netbox/dcim/models/devices.py:579 +#: netbox/dcim/forms/model_forms.py:623 netbox/dcim/models/devices.py:579 msgid "The lowest-numbered unit occupied by the device" msgstr "デバイスが使用している最も小さいユニット番号" -#: netbox/dcim/forms/model_forms.py:662 +#: netbox/dcim/forms/model_forms.py:688 msgid "The position in the virtual chassis this device is identified by" msgstr "仮想シャーシ内の位置" -#: netbox/dcim/forms/model_forms.py:667 +#: netbox/dcim/forms/model_forms.py:693 msgid "The priority of the device in the virtual chassis" msgstr "仮想シャーシ内の優先度" -#: netbox/dcim/forms/model_forms.py:776 +#: netbox/dcim/forms/model_forms.py:802 msgid "Automatically populate components associated with this module type" msgstr "このモジュールタイプに関連する構成要素を自動的に入力する" -#: netbox/dcim/forms/model_forms.py:882 +#: netbox/dcim/forms/model_forms.py:908 msgid "Characteristics" msgstr "特性" -#: netbox/dcim/forms/model_forms.py:1038 +#: netbox/dcim/forms/model_forms.py:1064 #, python-brace-format msgid "" "Alphanumeric ranges are supported for bulk creation. Mixed cases and types " @@ -5810,149 +5660,135 @@ msgstr "" "1[ge,xe]-0/0/[0-9]1)。トークン " "{module}が存在する場合、新しいモジュールを作成する際に、自動的に位置の値に置き換えられます。" -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "コンソールポートテンプレート" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "コンソールサーバポートテンプレート" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "前面ポートテンプレート" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "インタフェーステンプレート" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "電源コンセントテンプレート" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "電源ポートテンプレート" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "背面ポートテンプレート" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "コンソールポート" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "コンソールサーバポート" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "前面ポート" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "背面ポート" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "電源ポート" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "電源コンセント" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "構成要素割り当て" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "在庫品目は1つの構成要素にのみ割り当てることができます。" -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "LAG インタフェース" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "割り当て可能な VLAN をグループ別にフィルタリングします。" -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "子デバイス" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." msgstr "まず子デバイスを作成し、親デバイスのサイトとラックに割り当てる必要があります。" -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "コンソールポート" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "コンソールサーバポート" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "前面ポート" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "電源コンセント" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "背面ポート" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "在庫品目" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "在庫品目ロール" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "VM インターフェイス" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -5966,7 +5802,7 @@ msgstr "VM インターフェイス" msgid "Virtual Machine" msgstr "仮想マシン" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "MAC アドレスは 1 つのオブジェクトにのみ割り当てることができます。" @@ -5986,9 +5822,9 @@ msgid "" msgstr "パターンは {value_count} 個の値を示す範囲を指定しますが、 {pattern_count} 個の値が必要です。" #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "メンバー" @@ -6169,176 +6005,176 @@ msgid "" "module type." msgstr "構成要素テンプレートは、デバイスタイプまたはモジュールタイプのいずれかに関連付ける必要があります。" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "コンソールポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "コンソールポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "コンソールサーバポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "コンソールサーバポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "最大消費電力" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "割当消費電力" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "電源ポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "電源ポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "割当消費電力は最大消費電力 ({maximum_draw}W) を超えることはできません。" -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "供給端子" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "電力相 (三相電源用)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "電源コンセントテンプレート" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "電源コンセントテンプレート" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "親電源ポート ({power_port}) は同じデバイスタイプに属している必要があります" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "親電源ポート ({power_port}) は同じモジュールタイプに属している必要があります" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "管理のみ" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "ブリッジインタフェース" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "無線ロール" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "インタフェーステンプレート" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "インタフェーステンプレート" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "ブリッジインタフェース ({bridge}) は同じデバイスタイプに属している必要があります" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "ブリッジインタフェース ({bridge}) は同じモジュールタイプに属している必要があります" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "リアポート ({rear_port}) は同じデバイスタイプに属している必要があります" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "位置" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "前面ポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "前面ポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " "templates ({count})" msgstr "位置の数は、マップされた背面ポートテンプレートの数より少なくすることはできません ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "背面ポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "背面ポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " "templates ({count})" msgstr "位置の数は、マップされたフロントポートテンプレートの数より少なくすることはできません ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "位置" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "取付済み構成要素名を変更する際に参照する識別子" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "モジュールベイテンプレート" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "モジュールベイテンプレート" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "デバイスベイテンプレート" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "デバイスベイテンプレート" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -6346,21 +6182,21 @@ msgid "" msgstr "" "デバイスベイを許可するためには、デバイスタイプ ({device_type}) のサブデバイスロールを「parent」に設定する必要があります。" -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "パーツ ID" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "メーカ指定の部品識別子" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "在庫品目テンプレート" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "在庫品目テンプレート" @@ -6489,10 +6325,10 @@ msgid "tagged VLANs" msgstr "タグ付き VLAN" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "Q-in-Q SVLAN" @@ -7587,11 +7423,11 @@ msgstr "構成要素を追加" msgid "Disconnect Selected" msgstr "選択したものを抜線" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "終端 A" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "終端 B" @@ -7636,6 +7472,8 @@ msgstr "色名" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "到達可能" @@ -7672,7 +7510,7 @@ msgstr "ユニット数" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "IP アドレス" @@ -7721,16 +7559,14 @@ msgid "Power outlets" msgstr "電源コンセント" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7763,18 +7599,17 @@ msgid "Device Site" msgstr "デバイスサイト" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "モジュールベイ" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "在庫品目" @@ -7798,13 +7633,13 @@ msgstr "最大電力 (W)" msgid "Allocated draw (W)" msgstr "割当電力 (W)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "IP アドレス" @@ -7812,18 +7647,18 @@ msgstr "IP アドレス" msgid "Primary MAC" msgstr "プライマリ MAC" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "MAC アドレス" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP グループ" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -7832,7 +7667,6 @@ msgid "Tunnel" msgstr "トンネル" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "管理のみ" @@ -7840,7 +7674,7 @@ msgstr "管理のみ" msgid "VDCs" msgstr "VDC" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "仮想回線" @@ -7849,7 +7683,7 @@ msgstr "仮想回線" msgid "Mappings" msgstr "マッピング" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "取付済デバイス" @@ -7873,7 +7707,7 @@ msgstr "インストール済みシリアル" msgid "Installed Asset Tag" msgstr "インストール済み資産タグ" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "取付済みモジュール" @@ -7890,7 +7724,6 @@ msgid "Module Status" msgstr "モジュールステータス" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "構成要素" @@ -7908,7 +7741,7 @@ msgstr "ラックタイプ" msgid "Device Types" msgstr "デバイスタイプ" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "モジュールタイプ" @@ -7931,8 +7764,8 @@ msgstr "奥行きをすべて利用する" msgid "Device Count" msgstr "デバイス数" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -7942,8 +7775,8 @@ msgstr "デバイス数" msgid "Console Ports" msgstr "コンソールポート" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -7953,8 +7786,8 @@ msgstr "コンソールポート" msgid "Console Server Ports" msgstr "コンソールサーバポート" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -7964,8 +7797,8 @@ msgstr "コンソールサーバポート" msgid "Power Ports" msgstr "電源ポート" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -7975,8 +7808,8 @@ msgstr "電源ポート" msgid "Power Outlets" msgstr "電源コンセント" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -7985,8 +7818,8 @@ msgstr "電源コンセント" msgid "Front Ports" msgstr "前面ポート" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -7996,16 +7829,16 @@ msgstr "前面ポート" msgid "Rear Ports" msgstr "背面ポート" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "デバイスベイ" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8020,11 +7853,10 @@ msgid "Module Count" msgstr "モジュール数" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "電源タップ" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "最大使用率" @@ -8039,7 +7871,7 @@ msgid "Racks" msgstr "ラック" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "高さ" @@ -8087,85 +7919,123 @@ msgstr "VLAN グループ" msgid "Test case must set peer_termination_type" msgstr "テストケースは peer_termination_type を設定する必要があります" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} ミリメートル" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "シリアル番号" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "最大重量" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "マネジメント" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "アウトオブバンド IP" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "親/子" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "モデル名" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "親アイテム" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "パーツ ID" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "接続デバイス" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "使用率 (割り当て済み)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "電気的特性" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{} V" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{} A" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "インターフェイスのプライマリ" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "バーチャルシャーシメンバー" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "電力使用率" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "VLAN トランスレーション" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "切断されました {count} {type}" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "子リージョン" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "子・グループ" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "ラック搭載でないデバイス" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "子ロケーション" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "予約" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "子デバイスロール" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "子プラットフォーム" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "アプリケーションサービス" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8173,41 +8043,69 @@ msgstr "アプリケーションサービス" msgid "Config Context" msgstr "コンフィグコンテキスト" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "レンダーコンフィグ" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "仮想マシン" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "仮想デバイスコンテキスト" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "VLAN" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "LAG メンバー" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "VLAN トランスレーション" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "ブリッジインターフェイス" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "チャイルドインターフェース" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "インストール済みデバイス {device} イン・ベイ {device_bay}。" -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "削除されたデバイス {device} ベイから {device_bay}。" -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "子ども" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "メンバー追加 {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "マスターデバイスを削除できません {device} バーチャルシャーシから。" -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "削除済み {device} バーチャルシャーシから {chassis}" @@ -8303,10 +8201,9 @@ msgstr "はい" msgid "No" msgstr "いいえ" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "リンク" @@ -8757,15 +8654,6 @@ msgstr "1 つ以上の割当オブジェクトタイプ" msgid "Field data type (e.g. text, integer, etc.)" msgstr "フィールドデータタイプ (テキスト、整数など)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "オブジェクトタイプ" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "オブジェクトタイプ (オブジェクトフィールドまたはマルチオブジェクトフィールド用)" @@ -8866,7 +8754,7 @@ msgstr "エントリの分類" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -8892,15 +8780,14 @@ msgstr "二重引用符で囲んだカンマ区切りのユーザ名" #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "グループ" @@ -8926,13 +8813,6 @@ msgstr "フィールドタイプ" msgid "Choices" msgstr "選択肢" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "データ" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10175,17 +10055,6 @@ msgstr "ファイル拡張子" msgid "As Attachment" msgstr "添付ファイルとして" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "データファイル" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10201,9 +10070,8 @@ msgstr "画像" msgid "Filename" msgstr "ファイル名" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "サイズ" @@ -10256,6 +10124,7 @@ msgid "Please try reconfiguring the widget, or remove it from your dashboard." msgstr "ウィジェットを再設定するか、ダッシュボードから削除してください。" #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10397,7 +10266,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "プレーンテキスト" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "サービス" @@ -10460,7 +10329,6 @@ msgstr "L2VPN (識別子) のエクスポート" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "プレフィックス" @@ -10510,7 +10378,6 @@ msgstr "VLAN 番号 (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "アドレス" @@ -10567,7 +10434,7 @@ msgstr "FHRP グループ (ID)" msgid "IP address (ID)" msgstr "IP アドレス (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "IP アドレス" @@ -10634,8 +10501,8 @@ msgstr "非公開" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "RIR" @@ -10646,15 +10513,13 @@ msgstr "追加日" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN グループ" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10669,7 +10534,7 @@ msgid "Prefix length" msgstr "プレフィックス長" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "プールです" @@ -10688,23 +10553,21 @@ msgstr "VLAN アサイメント" msgid "Treat as populated" msgstr "入力済みとして扱う" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "DNS ネーム" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "プロトコル" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "グループ ID" @@ -10725,9 +10588,8 @@ msgid "Authentication key" msgstr "認証キー" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -10756,23 +10618,22 @@ msgstr "サイトとグループ" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "ポリシー" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "ポート" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "インポートルートターゲット" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "エクスポートルートターゲット" @@ -10802,7 +10663,6 @@ msgstr "スコープ ID" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "FHRP グループ" @@ -10908,7 +10768,7 @@ msgid "Exported by VRF" msgstr "VRF によるエクスポート" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "プライベート" @@ -10917,7 +10777,7 @@ msgstr "プライベート" msgid "Address family" msgstr "アドレスファミリー" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "レンジ" @@ -10945,18 +10805,10 @@ msgstr "デバイス/VM" msgid "Parent Prefix" msgstr "親プレフィックス" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "DNS名" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLAN" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "VLAN ID が含まれています" @@ -10974,26 +10826,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Q-in-Q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "VLAN ID" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "ルートターゲット" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "集約" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "ASN レンジ" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "IP アドレス範囲" @@ -11040,8 +10890,7 @@ msgstr "仮想 IP アドレス" msgid "Assignment already exists" msgstr "既に割り当てられています" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "VLAN ID" @@ -11057,7 +10906,6 @@ msgid "" msgstr "サイトへの VLAN の直接割り当ては廃止され、将来のリリースで削除される予定です。 VLAN グループが推奨されます。" #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "VLAN トランスレーションルール" @@ -11068,7 +10916,6 @@ msgid "" msgstr "カンマ区切りのポート番号のリスト。範囲はハイフンを使用して指定できます。" #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "アプリケーションサービステンプレート" @@ -11237,7 +11084,7 @@ msgstr "プールか" msgid "All IP addresses within this prefix are considered usable" msgstr "このプレフィックス内のすべての IP アドレスが使用可能と見なされます。" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "使用済み" @@ -11249,12 +11096,12 @@ msgstr "プレフィックス" msgid "Cannot create prefix with /0 mask." msgstr "/0 マスクではプレフィックスを作成できません。" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "グローバルテーブル" @@ -11263,137 +11110,137 @@ msgstr "グローバルテーブル" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "重複したプレフィックスが見つかりました {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "開始アドレス" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "IPv4 または IPv6 アドレス (マスク付き)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "終了アドレス" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "この範囲の動作状況" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "この範囲の主な機能" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "マークが入力されました" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "このレンジの IP アドレスの作成を防ぐ" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "レポートスペースがフル稼働中" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "IP アドレス範囲" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "IP アドレス範囲" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "開始・終了 IP アドレスのバージョンが一致している必要があります" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "開始・終了 IP アドレスマスクは一致する必要があります" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "終了アドレスは開始アドレスより大きくなければなりません ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "VRF{vrf}において、定義されたアドレスが範囲{overlapping_range}と重複しています " -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "定義された範囲がサポートされている最大サイズを超えています ({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "アドレス" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "この IP の動作ステータス" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "この IP の役割" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (インサイド)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "このアドレスが「アウトサイド」IPであるIP" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "ホスト名または FQDN (大文字と小文字は区別されません)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "IP アドレス" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "/0 マスクで IP アドレスを作成することはできません。" -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip} はネットワーク ID のため、インタフェースに割り当てることはできません。" -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "{ip} はブロードキャストアドレスのため、インタフェースに割り当てることはできません。" -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "重複した IP アドレスが見つかりました {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "レンジ {range}内のIP アドレス{ip}を作成できません。" -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" msgstr "親オブジェクトのプライマリ IP として指定されている間は IP アドレスを再割り当てできません" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" msgstr "親オブジェクトの OOB IP として指定されている間は IP アドレスを再割り当てできません" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "SLAAC ステータスを割り当てることができるのは IPv6 アドレスのみです" @@ -11579,17 +11426,17 @@ msgid "Added" msgstr "追加日" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "プレフィックス" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "使用率" @@ -11616,7 +11463,7 @@ msgid "Pool" msgstr "プール" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "使用済み" @@ -11624,7 +11471,7 @@ msgstr "使用済み" msgid "Start address" msgstr "開始アドレス" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "「入力済み」とマークされています" @@ -11654,17 +11501,14 @@ msgid "VID" msgstr "VID" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "ルール" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "ローカル VID" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "リモート VID" @@ -11684,16 +11528,71 @@ msgstr "インポートターゲット" msgid "Export Targets" msgstr "エクスポートターゲット" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "グループを作成" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "グループを割り当て" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "ルート識別子" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "ユニークな IP スペース" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "AS 番号" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "ファミリー" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "追加日" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "開始アドレス" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "終了アドレス" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (アウトサイド)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "プライマリ IP" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "ブーブチップ" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "認証タイプ" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "認証キー" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Q-in-Q ロール" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "カスタマー VLAN" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "VLAN の追加" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -11729,26 +11628,79 @@ msgid "" "are allowed in DNS names" msgstr "DNS 名に使用できるのは、英数字、アスタリスク、ハイフン、ピリオド、アンダースコアのみです。" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "デバイスインタフェース" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "VM インタフェース" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "VRF のインポート" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "VRF のエクスポート" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "L2VPN のインポート" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "L2VPN のエクスポート" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "プレフィックスが重複しています" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "親プレフィックス" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "子プレフィックス" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "子レンジ" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "IP が重複しています" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "アプリケーションサービス" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "関連IPアドレス" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "VLAN トランスレーションルール" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "ルールを追加" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "仮想 IP アドレス" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "IP アドレスを追加" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "プレフィックスを追加" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "このフィールドは空白であってはなりません。" @@ -12244,7 +12196,6 @@ msgid "Contact Groups" msgstr "連絡先グループ" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "連絡先のロール" @@ -12264,11 +12215,6 @@ msgstr "ラック図" msgid "Modules" msgstr "モジュール" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "仮想デバイスコンテキスト" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "モジュールタイププロファイル" @@ -12282,12 +12228,11 @@ msgid "Device Components" msgstr "デバイス構成要素" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "在庫品目のロール" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "接続" @@ -12328,7 +12273,6 @@ msgid "VLAN Translation Policies" msgstr "VLAN トランスレーションポリシー" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "VLAN トランスレーションルール" @@ -12407,7 +12351,6 @@ msgid "Circuit Terminations" msgstr "回路終端" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "バーチャルサーキット" @@ -12423,18 +12366,11 @@ msgstr "バーチャルサーキットターミネーション" msgid "Circuit Groups" msgstr "回路グループ" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "グループ課題" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "プロバイダ" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "プロバイダアカウント" @@ -12530,7 +12466,7 @@ msgid "Journal Entries" msgstr "ジャーナルエントリ" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "変更ログ" @@ -12583,6 +12519,7 @@ msgstr "バックグラウンドタスク" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12601,8 +12538,9 @@ msgstr "クローン" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -12614,8 +12552,9 @@ msgstr "編集" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -12883,7 +12822,7 @@ msgstr "ダミープラグイン" msgid "Copy" msgstr "[コピー]" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -12891,11 +12830,17 @@ msgstr "" "デコードオプションが無効です: {decoding}!\n" "次のいずれかでなければなりません {image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "最大アイテム数の値が無効です: {max_items}!正の整数か None でなければなりません。" + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "GPS 座標" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "関連オブジェクト" @@ -13162,8 +13107,7 @@ msgid "Account Details" msgstr "アカウント詳細" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "メール" @@ -13185,16 +13129,15 @@ msgid "Assigned Groups" msgstr "割当グループ" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13269,55 +13212,21 @@ msgstr "ソースコード" msgid "Community" msgstr "コミュニティ" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "インストール日" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "終端日" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "回線終端を交換する" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "回線%(circuit)sの終端を交換しますか?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "Aサイド" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Z サイド" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "回路を割り当て" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "回路グループ割り当て" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "回線を追加" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "回線タイプ" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "ターミネーションポイント" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "接続済みとしてマークされています" @@ -13327,13 +13236,14 @@ msgstr "に" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "トレース" @@ -13347,37 +13257,30 @@ msgstr "ケーブルを取り外す" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "接続解除" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "接続" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "ダウンストリーム" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "アップストリーム" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "クロスコネクト" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "パッチパネル/ポート" @@ -13385,39 +13288,10 @@ msgstr "パッチパネル/ポート" msgid "Add circuit" msgstr "回線を追加" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "プロバイダアカウント" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "バーチャルサーキットの追加" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "終端を追加" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "バーチャルサーキットターミネーション" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "バーチャルサーキットを追加" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "仮想回線タイプ" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "設定データ" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "コメント" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13440,31 +13314,11 @@ msgstr "新しい値" msgid "Changed" msgstr "変更日" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "バイト" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "SHA256 ハッシュ" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "コンテンツ" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "最終同期" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "バックエンド" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "パラメータが定義されていません" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "ラック図" @@ -13523,70 +13377,11 @@ msgstr "このオブジェクトに関連するデータファイルは削除さ msgid "Data Synced" msgstr "データ同期済み" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "ジョブ" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "作成者" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "スケジューリング" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "ごと %(interval)s 分" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "変更" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "差分" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "前へ" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "次へ" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "オブジェクトが作成されました" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "オブジェクトは削除されました" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "変更なし" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "変更前データ" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "警告:非アトミックな変更と以前の変更レコードの比較" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "変更後データ" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "すべて表示 %(count)s 変更点" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -13602,6 +13397,59 @@ msgstr "日々" msgid "Indefinite" msgstr "無期限" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "コメント" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "設定データ" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "パラメータが定義されていません" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "差分" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "前へ" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "次へ" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "オブジェクトが作成されました" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "オブジェクトは削除されました" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "変更なし" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "変更後データ" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "変更前データ" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "警告:非アトミックな変更と以前の変更レコードの比較" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "すべて表示 %(count)s 変更点" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "未インストール" @@ -13887,22 +13735,13 @@ msgstr "セグメント" msgid "Incomplete" msgstr "不完全" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "未接続" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "用の NAT" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "NAT" @@ -13910,7 +13749,7 @@ msgstr "NAT" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "クリップボードにコピー" @@ -13960,10 +13799,6 @@ msgstr "削除" msgid "Local Config Context Data" msgstr "ローカル設定コンテキストデータ" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "デバイスベイ" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -13991,34 +13826,6 @@ msgstr "ベイ" msgid "Add Device" msgstr "デバイスを追加" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "ポジション" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "接続済みとしてマークされています" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "接続ステータス" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "ポートマッピング" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "マッピングが定義されていません" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "Aサイド" @@ -14044,6 +13851,8 @@ msgid "Path Status" msgstr "パスステータス" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "アクセス不可" @@ -14052,8 +13861,6 @@ msgid "Path Endpoints" msgstr "パスエンドポイント" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "接続されていません" @@ -14099,94 +13906,10 @@ msgstr "ラックの高さ" msgid "Loading..." msgstr "読み込み中..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "子インタフェースの追加" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "スピード/デュプレックス" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "PoE モード" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "PoE タイプ" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "ブリッジインターフェイス" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "VLAN トランスレーション" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "無線リンク" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "チャネル" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "チャンネル周波数" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "メガヘルツ" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "チャンネル幅" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "IP アドレスを追加" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "MAC アドレスを追加" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "親アイテム" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "パーツ ID" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "アセットタグ" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "インターフェイスのプライマリ" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "デバイスタイプを追加" @@ -14195,6 +13918,64 @@ msgstr "デバイスタイプを追加" msgid "Add Module Type" msgstr "モジュールタイプを追加" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "パスステータス" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "パスエンドポイント" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "未接続" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "ポートマッピング" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "マッピングが定義されていません" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "無線リンク" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "チャネル" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "チャンネル周波数" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "メガヘルツ" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "チャンネル幅" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "プロファイルが割り当てられていません" @@ -14214,7 +13995,7 @@ msgstr "割り当て済み" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "VA" @@ -14238,44 +14019,6 @@ msgstr "画像のみ" msgid "Labels only" msgstr "ラベルのみ" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "接続デバイス" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "使用率 (割り当て済み)" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "電気的特性" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "A" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "供給端子" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "電源タップの追加" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "最大消費電力" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "割り当てられた抽選" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "予約を追加" @@ -14315,10 +14058,6 @@ msgstr "サイトを追加" msgid "Attachment" msgstr "アタッチメント" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "メンバーを追加" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14368,10 +14107,6 @@ msgid "" "chassis %(name)s?" msgstr "本当に削除してもよろしいですか %(device)s バーチャルシャーシから %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "識別子" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -14690,6 +14425,10 @@ msgstr "" msgid "Journal Entry" msgstr "ジャーナルエントリ" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "作成者" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "通知グループ" @@ -15177,37 +14916,15 @@ msgstr "ログアウト" msgid "Log In" msgstr "ログイン" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "ファミリー" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "追加日" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "プレフィックスを追加" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "AS 番号" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "認証タイプ" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "認証キー" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "仮想 IP アドレス" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "グローバル" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15242,15 +14959,6 @@ msgstr "ショー利用可能" msgid "Show All" msgstr "すべて表示" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "グローバル" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (アウトサイド)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "IP アドレスを割り当てる" @@ -15267,51 +14975,43 @@ msgstr "検索結果" msgid "Bulk Add IP Addresses" msgstr "IP アドレスを一括追加" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "開始アドレス" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "終了アドレス" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "アドレス詳細" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "「完全使用済み」とマークされています" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "子供 IP" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "使用可能な IP" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "最初に利用可能な IP" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "プレフィックスの詳細" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "ネットワークアドレス" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "ネットワークマスク" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "ワイルドカードマスク" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "ブロードキャストアドレス" @@ -15323,58 +15023,14 @@ msgstr "IP アドレス範囲を追加" msgid "Hide Depth Indicators" msgstr "深度インジケーターを非表示" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "集約を追加" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "VRF のインポート" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "VRF のエクスポート" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "L2VPN のインポート" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "L2VPN のエクスポート" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Q-in-Q ロール" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "プレフィックスを追加" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "カスタマー VLAN" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "VLAN の追加" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "VLAN の追加" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "ルールを追加" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "ルート識別子" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "ユニークな IP スペース" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15439,61 +15095,14 @@ msgstr "" msgid "Click here to attempt loading NetBox again." msgstr "クリック ここに NetBox をもう一度ロードしてみます。" -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "連絡" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "タイトル" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "電話" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "コンタクトグループ" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "連絡先グループを追加" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "連絡先のロール" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "連絡先を追加" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "テナントを追加" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "テナントグループ" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "テナントグループの追加" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -15604,16 +15213,28 @@ msgstr "IPsec ポリシー" msgid "PFS Group" msgstr "PFS グループ" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "終端を追加" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "トンネルを追加" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "チャンネル周波数" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "MHz" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "チャンネル幅" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "無線 LAN の追加" @@ -15648,6 +15269,20 @@ msgstr "連絡先ロール (ID)" msgid "Contact role (slug)" msgstr "コンタクトロール (slug)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "連絡" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "連絡先のロール" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "連絡先グループ" @@ -15680,6 +15315,15 @@ msgstr "グループを追加" msgid "Remove groups" msgstr "グループを削除する" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "タイトル" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "電話" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -15690,6 +15334,17 @@ msgstr "二重引用符で囲んだカンマ区切りのグループ名 (例:\"G msgid "Assigned contact" msgstr "割当連絡先" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "テナントグループ" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "コンタクトグループ" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "連絡先グループ" @@ -15791,6 +15446,14 @@ msgstr "連絡先リンク" msgid "Contact Description" msgstr "連絡先の説明" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "テナントグループの追加" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "連絡先グループを追加" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -17008,10 +16671,6 @@ msgstr "追加しました {count} デバイスをクラスタに {cluster}" msgid "Assigned VLANs" msgstr "割り当てられた VLAN" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "チャイルドインターフェース" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPsec-トランスポート" diff --git a/netbox/translations/lv/LC_MESSAGES/django.mo b/netbox/translations/lv/LC_MESSAGES/django.mo index 7626538700102331c15baa02a4d9fa5c77046d63..ddc3688885aa3443145eca8febc54e9215cc359a 100644 GIT binary patch delta 76290 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�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 I_I3~Xe+U|nu>b%7 diff --git a/netbox/translations/lv/LC_MESSAGES/django.po b/netbox/translations/lv/LC_MESSAGES/django.po index 115571f42..614164d09 100644 --- a/netbox/translations/lv/LC_MESSAGES/django.po +++ b/netbox/translations/lv/LC_MESSAGES/django.po @@ -4,17 +4,17 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Jeremy Stretch, 2026 # horsitis, 2026 +# Jeremy Stretch, 2026 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-14 05:18+0000\n" +"POT-Creation-Date: 2026-03-31 05:31+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" -"Last-Translator: horsitis, 2026\n" +"Last-Translator: Jeremy Stretch, 2026\n" "Language-Team: Latvian (https://app.transifex.com/netbox-community/teams/178115/lv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -46,9 +46,9 @@ msgstr "Jūsu parole ir veiksmīgi nomainīta." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 #: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204 -#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1933 -#: netbox/dcim/choices.py:1991 netbox/dcim/choices.py:2058 -#: netbox/dcim/choices.py:2080 netbox/virtualization/choices.py:20 +#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1954 +#: netbox/dcim/choices.py:2012 netbox/dcim/choices.py:2079 +#: netbox/dcim/choices.py:2101 netbox/virtualization/choices.py:20 #: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18 #: netbox/vpn/choices.py:281 msgid "Planned" @@ -62,8 +62,8 @@ msgstr "Ierīkošana" #: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22 #: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155 #: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256 -#: netbox/dcim/choices.py:1990 netbox/dcim/choices.py:2057 -#: netbox/dcim/choices.py:2079 netbox/extras/tables/tables.py:642 +#: netbox/dcim/choices.py:2011 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:2100 netbox/extras/tables/tables.py:642 #: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49 #: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154 #: netbox/templates/extras/configcontext.html:29 @@ -75,8 +75,8 @@ msgid "Active" msgstr "Aktīvs" #: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202 -#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:1989 -#: netbox/dcim/choices.py:2059 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:2010 +#: netbox/dcim/choices.py:2080 netbox/dcim/choices.py:2099 #: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44 msgid "Offline" msgstr "Bezsaistē" @@ -89,8 +89,9 @@ msgstr "Demontāža" msgid "Decommissioned" msgstr "Demontēts" -#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2002 -#: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:153 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2023 +#: netbox/dcim/tables/devices.py:1208 +#: netbox/templates/dcim/interface/attrs/mac_address.html:3 #: netbox/tenancy/choices.py:17 msgid "Primary" msgstr "Primārais" @@ -109,7 +110,8 @@ msgid "Inactive" msgstr "Neaktīvs" #: netbox/circuits/choices.py:107 netbox/dcim/tables/devices.py:714 -#: netbox/templates/dcim/interface.html:293 netbox/vpn/choices.py:63 +#: netbox/templates/dcim/panels/interface_wireless.html:12 +#: netbox/vpn/choices.py:63 msgid "Peer" msgstr "Tālais" @@ -185,9 +187,9 @@ msgstr "Vietu grupa (URL identifikators)" #: netbox/dcim/forms/filtersets.py:1172 netbox/dcim/forms/filtersets.py:1268 #: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:2024 #: netbox/dcim/forms/filtersets.py:2048 netbox/dcim/forms/filtersets.py:2072 -#: netbox/dcim/forms/model_forms.py:155 netbox/dcim/forms/model_forms.py:183 -#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:570 -#: netbox/dcim/forms/model_forms.py:839 netbox/dcim/forms/object_create.py:294 +#: netbox/dcim/forms/model_forms.py:166 netbox/dcim/forms/model_forms.py:209 +#: netbox/dcim/forms/model_forms.py:280 netbox/dcim/forms/model_forms.py:596 +#: netbox/dcim/forms/model_forms.py:865 netbox/dcim/forms/object_create.py:294 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:26 #: netbox/dcim/tables/power.py:90 netbox/dcim/tables/racks.py:111 #: netbox/dcim/tables/racks.py:194 netbox/dcim/tables/sites.py:102 @@ -198,7 +200,6 @@ msgstr "Vietu grupa (URL identifikators)" #: netbox/ipam/tables/vlans.py:90 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:36 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/ipam/vlan.html:23 #: netbox/templates/ipam/vlan_edit.html:52 #: netbox/virtualization/forms/bulk_edit.py:95 #: netbox/virtualization/forms/bulk_import.py:60 @@ -230,7 +231,6 @@ msgstr "ASN (ID)" #: netbox/circuits/filtersets.py:85 netbox/circuits/forms/filtersets.py:42 #: netbox/ipam/forms/model_forms.py:162 netbox/ipam/models/asns.py:137 #: netbox/ipam/models/asns.py:154 netbox/ipam/tables/asn.py:51 -#: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" @@ -327,14 +327,12 @@ msgstr "Meklēt" #: netbox/circuits/forms/filtersets.py:232 #: netbox/circuits/forms/filtersets.py:259 #: netbox/circuits/forms/filtersets.py:306 -#: netbox/circuits/forms/model_forms.py:139 -#: netbox/circuits/forms/model_forms.py:162 -#: netbox/circuits/forms/model_forms.py:260 +#: netbox/circuits/forms/model_forms.py:168 +#: netbox/circuits/forms/model_forms.py:191 +#: netbox/circuits/forms/model_forms.py:289 #: netbox/circuits/tables/circuits.py:103 #: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 -#: netbox/templates/circuits/circuit.html:15 -#: netbox/templates/circuits/circuitgroupassignment.html:30 -#: netbox/templates/circuits/circuittermination.html:19 +#: netbox/templates/circuits/panels/circuit_termination.html:7 #: netbox/templates/dcim/inc/cable_termination.html:62 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -392,11 +390,9 @@ msgstr "Virtuālās pieslēguma tips (URL identifikators)" #: netbox/circuits/forms/bulk_import.py:248 #: netbox/circuits/forms/filtersets.py:384 #: netbox/circuits/forms/filtersets.py:390 -#: netbox/circuits/forms/model_forms.py:338 -#: netbox/circuits/forms/model_forms.py:353 +#: netbox/circuits/forms/model_forms.py:367 +#: netbox/circuits/forms/model_forms.py:382 #: netbox/circuits/tables/virtual_circuits.py:84 -#: netbox/templates/circuits/virtualcircuit.html:20 -#: netbox/templates/circuits/virtualcircuittermination.html:38 msgid "Virtual circuit" msgstr "Virtuāls pieslēgums" @@ -409,12 +405,12 @@ msgstr "Interfeiss (ID)" #: netbox/circuits/forms/bulk_edit.py:48 #: netbox/circuits/forms/filtersets.py:68 #: netbox/circuits/forms/model_forms.py:48 -#: netbox/circuits/tables/providers.py:32 netbox/dcim/forms/bulk_edit.py:134 -#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/model_forms.py:142 -#: netbox/dcim/tables/sites.py:74 netbox/ipam/models/asns.py:155 -#: netbox/ipam/tables/asn.py:37 netbox/ipam/views.py:270 -#: netbox/netbox/navigation/menu.py:182 netbox/netbox/navigation/menu.py:185 -#: netbox/templates/circuits/provider.html:23 +#: netbox/circuits/tables/providers.py:32 netbox/circuits/ui/panels.py:92 +#: netbox/dcim/forms/bulk_edit.py:134 netbox/dcim/forms/filtersets.py:225 +#: netbox/dcim/forms/model_forms.py:142 netbox/dcim/tables/sites.py:74 +#: netbox/ipam/models/asns.py:155 netbox/ipam/tables/asn.py:37 +#: netbox/ipam/views.py:365 netbox/netbox/navigation/menu.py:182 +#: netbox/netbox/navigation/menu.py:185 msgid "ASNs" msgstr "ASNi" @@ -434,9 +430,9 @@ msgstr "ASNi" #: netbox/circuits/forms/filtersets.py:349 #: netbox/circuits/forms/filtersets.py:385 #: netbox/circuits/forms/filtersets.py:408 -#: netbox/circuits/forms/model_forms.py:65 -#: netbox/circuits/forms/model_forms.py:80 -#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:90 +#: netbox/circuits/forms/model_forms.py:109 +#: netbox/circuits/forms/model_forms.py:140 #: netbox/circuits/tables/circuits.py:56 #: netbox/circuits/tables/circuits.py:107 #: netbox/circuits/tables/circuits.py:192 @@ -444,22 +440,14 @@ msgstr "ASNi" #: netbox/circuits/tables/providers.py:95 #: netbox/circuits/tables/virtual_circuits.py:46 #: netbox/circuits/tables/virtual_circuits.py:89 -#: netbox/templates/circuits/circuit.html:18 -#: netbox/templates/circuits/circuitgroupassignment.html:26 -#: netbox/templates/circuits/circuittermination.html:25 -#: netbox/templates/circuits/provider.html:20 -#: netbox/templates/circuits/provideraccount.html:20 -#: netbox/templates/circuits/providernetwork.html:20 -#: netbox/templates/circuits/virtualcircuit.html:23 -#: netbox/templates/circuits/virtualcircuittermination.html:26 +#: netbox/templates/circuits/panels/circuit_termination.html:11 #: netbox/templates/dcim/inc/cable_termination.html:58 -#: netbox/templates/dcim/interface.html:184 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:7 msgid "Provider" msgstr "Pakalpojuma sniedzējs" #: netbox/circuits/forms/bulk_edit.py:86 -#: netbox/circuits/forms/filtersets.py:106 -#: netbox/templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/filtersets.py:106 netbox/circuits/ui/panels.py:106 msgid "Service ID" msgstr "Pakalpojuma ID" @@ -478,12 +466,7 @@ msgstr "Pakalpojuma ID" #: netbox/dcim/tables/devicetypes.py:214 netbox/dcim/tables/devicetypes.py:255 #: netbox/dcim/tables/devicetypes.py:274 netbox/dcim/tables/racks.py:30 #: netbox/extras/forms/bulk_edit.py:306 netbox/extras/tables/tables.py:552 -#: netbox/netbox/ui/attrs.py:194 netbox/templates/circuits/circuittype.html:30 -#: netbox/templates/circuits/virtualcircuittype.html:30 -#: netbox/templates/dcim/cable.html:44 netbox/templates/dcim/frontport.html:40 -#: netbox/templates/dcim/inventoryitemrole.html:26 -#: netbox/templates/dcim/poweroutlet.html:48 -#: netbox/templates/dcim/rearport.html:40 netbox/templates/extras/tag.html:26 +#: netbox/netbox/ui/attrs.py:213 netbox/templates/extras/tag.html:26 msgid "Color" msgstr "Krāsa" @@ -517,27 +500,14 @@ msgstr "Krāsa" #: netbox/dcim/forms/filtersets.py:1602 netbox/dcim/forms/filtersets.py:1707 #: netbox/dcim/forms/filtersets.py:1756 netbox/dcim/forms/filtersets.py:1775 #: netbox/dcim/forms/filtersets.py:1799 netbox/dcim/forms/filtersets.py:1818 -#: netbox/dcim/forms/model_forms.py:820 netbox/dcim/forms/model_forms.py:826 +#: netbox/dcim/forms/model_forms.py:846 netbox/dcim/forms/model_forms.py:852 #: netbox/dcim/forms/object_import.py:85 #: netbox/dcim/forms/object_import.py:114 #: netbox/dcim/forms/object_import.py:127 netbox/dcim/tables/devices.py:182 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 #: netbox/extras/forms/bulk_import.py:48 netbox/extras/tables/tables.py:510 #: netbox/extras/tables/tables.py:578 netbox/netbox/tables/tables.py:339 -#: netbox/templates/circuits/circuit.html:30 -#: netbox/templates/circuits/virtualcircuit.html:39 -#: netbox/templates/circuits/virtualcircuittermination.html:64 -#: netbox/templates/core/datasource.html:38 -#: netbox/templates/dcim/cable.html:15 -#: netbox/templates/dcim/consoleport.html:36 -#: netbox/templates/dcim/consoleserverport.html:36 -#: netbox/templates/dcim/frontport.html:36 -#: netbox/templates/dcim/interface.html:46 -#: netbox/templates/dcim/interface.html:244 -#: netbox/templates/dcim/powerfeed.html:32 -#: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 -#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/dcim/panels/interface_connection.html:68 #: netbox/templates/extras/eventrule.html:74 #: netbox/templates/wireless/panels/wirelesslink_interface.html:16 #: netbox/virtualization/forms/bulk_edit.py:50 @@ -558,10 +528,8 @@ msgstr "Veids" #: netbox/circuits/forms/bulk_import.py:213 #: netbox/circuits/forms/filtersets.py:159 #: netbox/circuits/forms/filtersets.py:357 -#: netbox/circuits/forms/model_forms.py:117 -#: netbox/circuits/forms/model_forms.py:326 -#: netbox/templates/circuits/virtualcircuit.html:31 -#: netbox/templates/circuits/virtualcircuittermination.html:34 +#: netbox/circuits/forms/model_forms.py:146 +#: netbox/circuits/forms/model_forms.py:355 msgid "Provider account" msgstr "Pakalpojuma sniedzēja konts" @@ -603,19 +571,10 @@ msgstr "Pakalpojuma sniedzēja konts" #: netbox/ipam/forms/model_forms.py:503 netbox/ipam/tables/ip.py:182 #: netbox/ipam/tables/ip.py:261 netbox/ipam/tables/ip.py:314 #: netbox/ipam/tables/ip.py:389 netbox/ipam/tables/ip.py:416 -#: netbox/ipam/tables/vlans.py:98 netbox/templates/circuits/circuit.html:34 -#: netbox/templates/circuits/virtualcircuit.html:43 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:21 -#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:19 -#: netbox/templates/dcim/cable.html:19 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/powerfeed.html:36 -#: netbox/templates/dcim/poweroutlet.html:40 +#: netbox/ipam/tables/vlans.py:98 netbox/templates/core/rq_task.html:81 +#: netbox/templates/core/system.html:19 #: netbox/templates/extras/inc/script_list_content.html:35 -#: netbox/templates/ipam/ipaddress.html:37 -#: netbox/templates/ipam/iprange.html:61 netbox/templates/ipam/prefix.html:69 -#: netbox/templates/ipam/vlan.html:48 netbox/users/forms/filtersets.py:36 -#: netbox/users/forms/model_forms.py:223 +#: netbox/users/forms/filtersets.py:36 netbox/users/forms/model_forms.py:223 #: netbox/virtualization/forms/bulk_edit.py:60 #: netbox/virtualization/forms/bulk_edit.py:83 #: netbox/virtualization/forms/bulk_import.py:55 @@ -676,21 +635,9 @@ msgstr "Statuss" #: netbox/ipam/forms/filtersets.py:155 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:297 netbox/ipam/forms/filtersets.py:350 #: netbox/ipam/forms/filtersets.py:459 netbox/ipam/forms/filtersets.py:552 -#: netbox/ipam/tables/ip.py:419 netbox/templates/circuits/circuit.html:48 -#: netbox/templates/circuits/circuitgroup.html:36 -#: netbox/templates/circuits/virtualcircuit.html:47 -#: netbox/templates/dcim/cable.html:27 netbox/templates/dcim/powerfeed.html:44 -#: netbox/templates/dcim/virtualdevicecontext.html:52 -#: netbox/templates/ipam/aggregate.html:30 netbox/templates/ipam/asn.html:33 -#: netbox/templates/ipam/asnrange.html:29 -#: netbox/templates/ipam/ipaddress.html:28 -#: netbox/templates/ipam/iprange.html:65 netbox/templates/ipam/prefix.html:29 -#: netbox/templates/ipam/routetarget.html:17 -#: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vlangroup.html:50 -#: netbox/templates/ipam/vrf.html:20 netbox/templates/tenancy/tenant.html:17 -#: netbox/tenancy/forms/filtersets.py:55 netbox/tenancy/forms/forms.py:26 -#: netbox/tenancy/forms/forms.py:50 netbox/tenancy/forms/model_forms.py:51 -#: netbox/tenancy/tables/columns.py:50 +#: netbox/ipam/tables/ip.py:419 netbox/tenancy/forms/filtersets.py:55 +#: netbox/tenancy/forms/forms.py:26 netbox/tenancy/forms/forms.py:50 +#: netbox/tenancy/forms/model_forms.py:51 netbox/tenancy/tables/columns.py:50 #: netbox/virtualization/forms/bulk_edit.py:66 #: netbox/virtualization/forms/bulk_edit.py:126 #: netbox/virtualization/forms/bulk_import.py:67 @@ -725,8 +672,7 @@ msgstr "Garantētais ātrums (Kbps)" #: netbox/circuits/forms/bulk_edit.py:159 #: netbox/circuits/forms/filtersets.py:217 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/templates/circuits/circuit.html:38 +#: netbox/circuits/forms/model_forms.py:165 #: netbox/wireless/forms/bulk_edit.py:121 #: netbox/wireless/forms/filtersets.py:137 #: netbox/wireless/forms/model_forms.py:166 @@ -745,7 +691,7 @@ msgid "Distance unit" msgstr "Attāluma vienība" #: netbox/circuits/forms/bulk_edit.py:173 -#: netbox/circuits/forms/model_forms.py:141 +#: netbox/circuits/forms/model_forms.py:170 msgid "Service Parameters" msgstr "Pakalpojuma parametri" @@ -771,7 +717,7 @@ msgstr "Pakalpojuma parametri" #: netbox/dcim/forms/filtersets.py:1864 netbox/dcim/forms/filtersets.py:1879 #: netbox/dcim/forms/filtersets.py:1890 netbox/dcim/forms/filtersets.py:1936 #: netbox/dcim/forms/filtersets.py:1972 netbox/dcim/tables/modules.py:25 -#: netbox/dcim/views.py:1679 netbox/extras/forms/bulk_edit.py:94 +#: netbox/dcim/views.py:1681 netbox/extras/forms/bulk_edit.py:94 #: netbox/extras/forms/filtersets.py:48 netbox/extras/forms/filtersets.py:147 #: netbox/extras/forms/filtersets.py:226 netbox/extras/forms/filtersets.py:243 #: netbox/extras/forms/filtersets.py:275 netbox/extras/forms/filtersets.py:306 @@ -794,12 +740,12 @@ msgstr "Atribūti" #: netbox/circuits/forms/bulk_edit.py:175 #: netbox/circuits/forms/bulk_edit.py:317 -#: netbox/circuits/forms/model_forms.py:142 -#: netbox/circuits/forms/model_forms.py:238 -#: netbox/circuits/forms/model_forms.py:340 -#: netbox/dcim/forms/model_forms.py:157 netbox/dcim/forms/model_forms.py:198 -#: netbox/dcim/forms/model_forms.py:285 netbox/dcim/forms/model_forms.py:342 -#: netbox/dcim/forms/model_forms.py:883 netbox/dcim/forms/model_forms.py:1897 +#: netbox/circuits/forms/model_forms.py:171 +#: netbox/circuits/forms/model_forms.py:267 +#: netbox/circuits/forms/model_forms.py:369 +#: netbox/dcim/forms/model_forms.py:168 netbox/dcim/forms/model_forms.py:224 +#: netbox/dcim/forms/model_forms.py:311 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/forms/model_forms.py:909 netbox/dcim/forms/model_forms.py:1923 #: netbox/ipam/forms/bulk_edit.py:383 netbox/ipam/forms/model_forms.py:70 #: netbox/ipam/forms/model_forms.py:87 netbox/ipam/forms/model_forms.py:118 #: netbox/ipam/forms/model_forms.py:139 netbox/ipam/forms/model_forms.py:163 @@ -834,34 +780,9 @@ msgstr "Īrēšana" #: netbox/extras/tables/tables.py:97 netbox/ipam/tables/vlans.py:214 #: netbox/ipam/tables/vlans.py:241 netbox/netbox/forms/bulk_edit.py:79 #: netbox/netbox/forms/bulk_edit.py:91 netbox/netbox/forms/bulk_edit.py:103 -#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 -#: netbox/templates/circuits/circuit.html:69 -#: netbox/templates/circuits/circuitgroup.html:32 -#: netbox/templates/circuits/circuittype.html:26 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:83 -#: netbox/templates/circuits/provider.html:33 -#: netbox/templates/circuits/provideraccount.html:32 -#: netbox/templates/circuits/providernetwork.html:32 -#: netbox/templates/circuits/virtualcircuit.html:56 -#: netbox/templates/circuits/virtualcircuittermination.html:68 -#: netbox/templates/circuits/virtualcircuittype.html:26 -#: netbox/templates/core/datasource.html:58 -#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:40 -#: netbox/templates/dcim/consoleport.html:44 -#: netbox/templates/dcim/consoleserverport.html:44 -#: netbox/templates/dcim/devicebay.html:32 -#: netbox/templates/dcim/frontport.html:54 -#: netbox/templates/dcim/interface.html:69 -#: netbox/templates/dcim/inventoryitem.html:64 -#: netbox/templates/dcim/inventoryitemrole.html:22 -#: netbox/templates/dcim/macaddress.html:21 -#: netbox/templates/dcim/modulebay.html:42 -#: netbox/templates/dcim/powerfeed.html:40 -#: netbox/templates/dcim/poweroutlet.html:44 -#: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 -#: netbox/templates/dcim/rearport.html:54 -#: netbox/templates/dcim/virtualchassis.html:21 +#: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:85 +#: netbox/templates/core/plugin.html:80 #: netbox/templates/extras/configcontext.html:25 #: netbox/templates/extras/configcontextprofile.html:17 #: netbox/templates/extras/configtemplate.html:17 @@ -876,23 +797,6 @@ msgstr "Īrēšana" #: netbox/templates/extras/tableconfig.html:17 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:151 -#: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 -#: netbox/templates/ipam/asnrange.html:38 -#: netbox/templates/ipam/fhrpgroup.html:34 -#: netbox/templates/ipam/ipaddress.html:55 -#: netbox/templates/ipam/iprange.html:74 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/rir.html:26 netbox/templates/ipam/role.html:26 -#: netbox/templates/ipam/routetarget.html:21 -#: netbox/templates/ipam/service.html:52 -#: netbox/templates/ipam/servicetemplate.html:27 -#: netbox/templates/ipam/vlan.html:62 netbox/templates/ipam/vlangroup.html:34 -#: netbox/templates/ipam/vlantranslationpolicy.html:18 -#: netbox/templates/ipam/vlantranslationrule.html:26 -#: netbox/templates/ipam/vrf.html:33 netbox/templates/tenancy/contact.html:77 -#: netbox/templates/tenancy/contactgroup.html:25 -#: netbox/templates/tenancy/contactrole.html:22 -#: netbox/templates/tenancy/tenant.html:24 -#: netbox/templates/tenancy/tenantgroup.html:33 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:12 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:12 #: netbox/users/forms/bulk_edit.py:62 netbox/users/forms/bulk_edit.py:80 @@ -904,7 +808,7 @@ msgid "Description" msgstr "Apraksts" #: netbox/circuits/forms/bulk_edit.py:192 -#: netbox/circuits/forms/model_forms.py:170 +#: netbox/circuits/forms/model_forms.py:199 #: netbox/dcim/forms/bulk_import.py:1419 netbox/dcim/forms/bulk_import.py:1444 msgid "Termination type" msgstr "Savienojuma veids" @@ -912,9 +816,9 @@ msgstr "Savienojuma veids" #: netbox/circuits/forms/bulk_edit.py:195 #: netbox/circuits/forms/bulk_import.py:133 #: netbox/circuits/forms/filtersets.py:234 -#: netbox/circuits/forms/model_forms.py:173 +#: netbox/circuits/forms/model_forms.py:202 netbox/circuits/ui/panels.py:14 #: netbox/templates/circuits/inc/circuit_termination.html:6 -#: netbox/templates/dcim/cable.html:72 netbox/templates/dcim/cable.html:76 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:6 #: netbox/vpn/forms/bulk_import.py:99 netbox/vpn/forms/filtersets.py:87 msgid "Termination" msgstr "Savienojums" @@ -936,26 +840,23 @@ msgid "Mark connected" msgstr "Atzīmēt pievienotu" #: netbox/circuits/forms/bulk_edit.py:220 -#: netbox/circuits/forms/model_forms.py:184 +#: netbox/circuits/forms/model_forms.py:213 netbox/circuits/views.py:513 +#: netbox/dcim/views.py:3465 netbox/dcim/views.py:3566 #: netbox/templates/circuits/inc/circuit_termination_fields.html:55 -#: netbox/templates/dcim/frontport.html:118 -#: netbox/templates/dcim/interface.html:268 -#: netbox/templates/dcim/rearport.html:112 +#: netbox/templates/dcim/panels/interface_connection.html:92 msgid "Circuit Termination" msgstr "Pieslēguma savienojums" #: netbox/circuits/forms/bulk_edit.py:222 -#: netbox/circuits/forms/model_forms.py:186 +#: netbox/circuits/forms/model_forms.py:215 msgid "Termination Details" msgstr "Savienojuma detaļas" #: netbox/circuits/forms/bulk_edit.py:261 #: netbox/circuits/forms/bulk_import.py:188 #: netbox/circuits/forms/filtersets.py:314 -#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:666 -#: netbox/templates/circuits/circuitgroupassignment.html:34 +#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:692 #: netbox/templates/dcim/panels/virtual_chassis_members.html:11 -#: netbox/templates/dcim/virtualchassis.html:58 #: netbox/templates/dcim/virtualchassis_edit.html:68 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 #: netbox/templates/ipam/panels/fhrp_groups.html:12 @@ -970,7 +871,7 @@ msgstr "Prioritāte" #: netbox/circuits/forms/filtersets.py:272 #: netbox/circuits/forms/filtersets.py:365 #: netbox/circuits/forms/filtersets.py:403 -#: netbox/circuits/forms/model_forms.py:321 +#: netbox/circuits/forms/model_forms.py:350 #: netbox/circuits/tables/virtual_circuits.py:51 #: netbox/circuits/tables/virtual_circuits.py:95 msgid "Provider network" @@ -979,13 +880,13 @@ msgstr "Pakalpojuma sniedzēja tīkls" #: netbox/circuits/forms/bulk_edit.py:326 #: netbox/circuits/forms/bulk_import.py:253 #: netbox/circuits/forms/filtersets.py:393 -#: netbox/circuits/forms/model_forms.py:360 netbox/dcim/forms/bulk_edit.py:351 +#: netbox/circuits/forms/model_forms.py:389 netbox/dcim/forms/bulk_edit.py:351 #: netbox/dcim/forms/bulk_edit.py:1245 netbox/dcim/forms/bulk_edit.py:1681 #: netbox/dcim/forms/bulk_import.py:270 netbox/dcim/forms/bulk_import.py:1199 #: netbox/dcim/forms/filtersets.py:404 netbox/dcim/forms/filtersets.py:879 #: netbox/dcim/forms/filtersets.py:1902 netbox/dcim/forms/filtersets.py:1942 -#: netbox/dcim/forms/model_forms.py:267 netbox/dcim/forms/model_forms.py:1234 -#: netbox/dcim/forms/model_forms.py:1717 +#: netbox/dcim/forms/model_forms.py:293 netbox/dcim/forms/model_forms.py:1260 +#: netbox/dcim/forms/model_forms.py:1743 #: netbox/dcim/forms/object_import.py:182 netbox/dcim/tables/devices.py:173 #: netbox/dcim/tables/devices.py:1032 netbox/dcim/tables/devicetypes.py:318 #: netbox/dcim/tables/racks.py:118 netbox/extras/filtersets.py:734 @@ -999,14 +900,10 @@ msgstr "Pakalpojuma sniedzēja tīkls" #: netbox/ipam/forms/model_forms.py:253 netbox/ipam/forms/model_forms.py:678 #: netbox/ipam/tables/ip.py:208 netbox/ipam/tables/ip.py:265 #: netbox/ipam/tables/ip.py:318 netbox/ipam/tables/vlans.py:102 -#: netbox/templates/circuits/virtualcircuittermination.html:42 #: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:196 -#: netbox/templates/dcim/interface.html:298 -#: netbox/templates/dcim/inventoryitem.html:40 -#: netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:57 netbox/templates/ipam/prefix.html:73 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/dcim/panels/component_inventory_items.html:10 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:19 +#: netbox/templates/dcim/panels/interface_wireless.html:17 #: netbox/templates/wireless/panels/wirelesslink_interface.html:20 #: netbox/tenancy/forms/bulk_edit.py:136 #: netbox/tenancy/forms/filtersets.py:136 @@ -1102,22 +999,19 @@ msgid "Operational role" msgstr "Darbības loma" #: netbox/circuits/forms/bulk_import.py:258 -#: netbox/circuits/forms/model_forms.py:363 +#: netbox/circuits/forms/model_forms.py:392 #: netbox/circuits/tables/virtual_circuits.py:108 -#: netbox/dcim/forms/bulk_import.py:1330 netbox/dcim/forms/model_forms.py:1308 -#: netbox/dcim/forms/model_forms.py:1577 netbox/dcim/forms/model_forms.py:1758 -#: netbox/dcim/forms/model_forms.py:1793 netbox/dcim/forms/model_forms.py:1918 -#: netbox/dcim/tables/connections.py:66 netbox/dcim/tables/devices.py:1199 -#: netbox/ipam/forms/bulk_import.py:323 netbox/ipam/forms/model_forms.py:283 -#: netbox/ipam/forms/model_forms.py:292 netbox/ipam/tables/fhrp.py:61 -#: netbox/ipam/tables/ip.py:323 netbox/ipam/tables/vlans.py:145 +#: netbox/circuits/ui/panels.py:134 netbox/dcim/forms/bulk_import.py:1330 +#: netbox/dcim/forms/model_forms.py:1334 netbox/dcim/forms/model_forms.py:1603 +#: netbox/dcim/forms/model_forms.py:1784 netbox/dcim/forms/model_forms.py:1819 +#: netbox/dcim/forms/model_forms.py:1944 netbox/dcim/tables/connections.py:66 +#: netbox/dcim/tables/devices.py:1199 netbox/dcim/views.py:3457 +#: netbox/dcim/views.py:3560 netbox/ipam/forms/bulk_import.py:323 +#: netbox/ipam/forms/model_forms.py:283 netbox/ipam/forms/model_forms.py:292 +#: netbox/ipam/tables/fhrp.py:61 netbox/ipam/tables/ip.py:323 +#: netbox/ipam/tables/vlans.py:145 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 -#: netbox/templates/circuits/virtualcircuittermination.html:53 -#: netbox/templates/circuits/virtualcircuittermination.html:60 -#: netbox/templates/dcim/frontport.html:103 -#: netbox/templates/dcim/interface.html:27 -#: netbox/templates/dcim/interface.html:259 -#: netbox/templates/dcim/rearport.html:103 +#: netbox/templates/dcim/panels/interface_connection.html:83 #: netbox/templates/wireless/panels/wirelesslink_interface.html:12 #: netbox/virtualization/forms/model_forms.py:368 #: netbox/vpn/forms/bulk_import.py:302 netbox/vpn/forms/model_forms.py:434 @@ -1149,8 +1043,8 @@ msgstr "Interfeiss " #: netbox/dcim/forms/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1746 #: netbox/dcim/forms/filtersets.py:1790 netbox/dcim/forms/filtersets.py:1833 #: netbox/dcim/forms/filtersets.py:1865 netbox/dcim/forms/filtersets.py:1892 -#: netbox/dcim/forms/model_forms.py:197 netbox/dcim/forms/model_forms.py:259 -#: netbox/dcim/forms/model_forms.py:575 netbox/dcim/forms/model_forms.py:844 +#: netbox/dcim/forms/model_forms.py:223 netbox/dcim/forms/model_forms.py:285 +#: netbox/dcim/forms/model_forms.py:601 netbox/dcim/forms/model_forms.py:870 #: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:30 #: netbox/dcim/tables/racks.py:107 netbox/dcim/tables/racks.py:199 #: netbox/extras/filtersets.py:718 netbox/extras/forms/filtersets.py:404 @@ -1158,7 +1052,6 @@ msgstr "Interfeiss " #: netbox/ipam/forms/filtersets.py:481 netbox/ipam/forms/filtersets.py:549 #: netbox/templates/dcim/device_edit.html:32 #: netbox/templates/dcim/inc/cable_termination.html:12 -#: netbox/templates/dcim/powerpanel.html:26 #: netbox/virtualization/forms/filtersets.py:87 #: netbox/virtualization/forms/filtersets.py:113 #: netbox/wireless/forms/filtersets.py:99 @@ -1269,7 +1162,7 @@ msgstr "Kontaktpersonas" #: netbox/dcim/tables/devices.py:147 netbox/dcim/tables/sites.py:65 #: netbox/extras/filtersets.py:685 netbox/ipam/forms/bulk_edit.py:404 #: netbox/ipam/forms/filtersets.py:241 netbox/ipam/forms/filtersets.py:466 -#: netbox/ipam/forms/filtersets.py:559 netbox/templates/ipam/vlan.html:16 +#: netbox/ipam/forms/filtersets.py:559 netbox/ipam/ui/panels.py:195 #: netbox/virtualization/forms/filtersets.py:67 #: netbox/virtualization/forms/filtersets.py:147 #: netbox/virtualization/forms/model_forms.py:86 @@ -1301,8 +1194,6 @@ msgstr "Vietu grupa" #: netbox/circuits/tables/providers.py:61 #: netbox/circuits/tables/virtual_circuits.py:55 #: netbox/circuits/tables/virtual_circuits.py:99 -#: netbox/templates/circuits/circuit.html:22 -#: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Konts" @@ -1313,9 +1204,7 @@ msgstr "Termina puse" #: netbox/circuits/forms/filtersets.py:296 netbox/dcim/forms/bulk_edit.py:1540 #: netbox/extras/forms/model_forms.py:706 netbox/ipam/forms/filtersets.py:154 #: netbox/ipam/forms/filtersets.py:642 netbox/ipam/forms/model_forms.py:329 -#: netbox/templates/dcim/macaddress.html:25 -#: netbox/templates/extras/configcontext.html:36 -#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/ipam/ui/panels.py:121 netbox/templates/extras/configcontext.html:36 #: netbox/templates/ipam/vlan_edit.html:42 #: netbox/tenancy/forms/filtersets.py:116 #: netbox/users/forms/model_forms.py:375 @@ -1323,18 +1212,16 @@ msgid "Assignment" msgstr "Sasaiste" #: netbox/circuits/forms/filtersets.py:311 -#: netbox/circuits/forms/model_forms.py:250 +#: netbox/circuits/forms/model_forms.py:279 #: netbox/circuits/tables/circuits.py:187 netbox/dcim/forms/bulk_edit.py:118 #: netbox/dcim/forms/bulk_import.py:115 netbox/dcim/forms/model_forms.py:135 #: netbox/dcim/tables/sites.py:69 netbox/extras/forms/filtersets.py:600 #: netbox/ipam/filtersets.py:1034 netbox/ipam/forms/bulk_edit.py:423 #: netbox/ipam/forms/bulk_import.py:515 netbox/ipam/forms/model_forms.py:561 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/vlans.py:94 -#: netbox/templates/circuits/circuitgroupassignment.html:22 -#: netbox/templates/dcim/interface.html:359 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:8 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 #: netbox/templates/ipam/panels/fhrp_groups.html:9 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/tenant.html:20 #: netbox/tenancy/forms/bulk_edit.py:44 netbox/tenancy/forms/bulk_import.py:46 #: netbox/tenancy/forms/filtersets.py:63 #: netbox/tenancy/forms/filtersets.py:126 @@ -1360,23 +1247,38 @@ msgstr "Sasaiste" msgid "Group" msgstr "Grupa" -#: netbox/circuits/forms/model_forms.py:237 -#: netbox/templates/circuits/circuitgroup.html:25 +#: netbox/circuits/forms/model_forms.py:53 +#: netbox/dcim/forms/model_forms.py:147 +msgid "Add ASNs" +msgstr "Pievienojiet ASN" + +#: netbox/circuits/forms/model_forms.py:58 +#: netbox/dcim/forms/model_forms.py:152 +msgid "Remove ASNs" +msgstr "Noņemt ASN" + +#: netbox/circuits/forms/model_forms.py:79 +#: netbox/dcim/forms/model_forms.py:198 +#, python-brace-format +msgid "{count} ASNs currently assigned" +msgstr "{count} Pašlaik piešķirtie ASN" + +#: netbox/circuits/forms/model_forms.py:266 msgid "Circuit Group" msgstr "Pielsēgumu grupa" -#: netbox/circuits/forms/model_forms.py:257 +#: netbox/circuits/forms/model_forms.py:286 msgid "Circuit type" msgstr "Pielsēguma veids" -#: netbox/circuits/forms/model_forms.py:268 +#: netbox/circuits/forms/model_forms.py:297 msgid "Group Assignment" msgstr "Grupu sasaiste" #: netbox/circuits/models/base.py:18 netbox/dcim/models/cables.py:81 -#: netbox/dcim/models/device_component_templates.py:353 -#: netbox/dcim/models/device_component_templates.py:588 -#: netbox/dcim/models/device_component_templates.py:661 +#: netbox/dcim/models/device_component_templates.py:343 +#: netbox/dcim/models/device_component_templates.py:578 +#: netbox/dcim/models/device_component_templates.py:651 #: netbox/dcim/models/device_components.py:573 #: netbox/dcim/models/device_components.py:1156 #: netbox/dcim/models/device_components.py:1204 @@ -1413,8 +1315,8 @@ msgstr "Unikāls pieslēguma ID" #: netbox/dcim/models/modules.py:219 netbox/dcim/models/power.py:95 #: netbox/dcim/models/racks.py:301 netbox/dcim/models/racks.py:685 #: netbox/dcim/models/sites.py:163 netbox/dcim/models/sites.py:287 -#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:528 -#: netbox/ipam/models/ip.py:757 netbox/ipam/models/vlans.py:228 +#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:538 +#: netbox/ipam/models/ip.py:767 netbox/ipam/models/vlans.py:228 #: netbox/virtualization/models/clusters.py:70 #: netbox/virtualization/models/virtualmachines.py:80 #: netbox/vpn/models/l2vpn.py:36 netbox/vpn/models/tunnels.py:38 @@ -1534,7 +1436,7 @@ msgstr "pieslēguma savienojums" msgid "circuit terminations" msgstr "pieslēguma savienojumi" -#: netbox/circuits/models/circuits.py:360 +#: netbox/circuits/models/circuits.py:367 msgid "A circuit termination must attach to a terminating object." msgstr "Pieslēguma savienojums jāpievieno savienojošam objektam." @@ -1573,7 +1475,7 @@ msgstr "Pieslēguma savienojums jāpievieno savienojošam objektam." #: netbox/vpn/models/crypto.py:216 netbox/vpn/models/l2vpn.py:20 #: netbox/vpn/models/tunnels.py:32 netbox/wireless/models.py:54 msgid "name" -msgstr "vārds" +msgstr "nosaukums" #: netbox/circuits/models/providers.py:24 msgid "Full name of the provider" @@ -1619,7 +1521,7 @@ msgstr "pakalpojumu sniedzēja tīkls" #: netbox/circuits/models/providers.py:122 msgid "provider networks" -msgstr "pakalpojumu sniedzēja tīkli" +msgstr "pakalpojumu sniedzēju tīkli" #: netbox/circuits/models/virtual_circuits.py:29 msgid "virtual circuit type" @@ -1638,7 +1540,7 @@ msgid "virtual circuits" msgstr "virtuālie pieslēgumi" #: netbox/circuits/models/virtual_circuits.py:135 netbox/ipam/models/ip.py:201 -#: netbox/ipam/models/ip.py:764 netbox/vpn/models/tunnels.py:109 +#: netbox/ipam/models/ip.py:774 netbox/vpn/models/tunnels.py:109 msgid "role" msgstr "loma" @@ -1686,30 +1588,13 @@ msgstr "virtuāla pieslēguma savienojumi" #: netbox/ipam/tables/vlans.py:33 netbox/ipam/tables/vlans.py:86 #: netbox/ipam/tables/vlans.py:205 netbox/ipam/tables/vrfs.py:26 #: netbox/ipam/tables/vrfs.py:65 netbox/netbox/tables/tables.py:325 -#: netbox/netbox/ui/panels.py:198 netbox/netbox/ui/panels.py:207 -#: netbox/templates/circuits/circuitgroup.html:28 -#: netbox/templates/circuits/circuittype.html:22 -#: netbox/templates/circuits/provideraccount.html:28 -#: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/circuits/virtualcircuittype.html:22 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:17 +#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 #: netbox/templates/core/plugin.html:54 #: netbox/templates/core/rq_worker.html:43 -#: netbox/templates/dcim/consoleport.html:28 -#: netbox/templates/dcim/consoleserverport.html:28 -#: netbox/templates/dcim/devicebay.html:24 -#: netbox/templates/dcim/frontport.html:28 #: netbox/templates/dcim/inc/interface_vlans_table.html:5 #: netbox/templates/dcim/inc/panels/inventory_items.html:18 -#: netbox/templates/dcim/interface.html:38 -#: netbox/templates/dcim/interface.html:240 -#: netbox/templates/dcim/inventoryitem.html:28 -#: netbox/templates/dcim/inventoryitemrole.html:18 -#: netbox/templates/dcim/modulebay.html:30 -#: netbox/templates/dcim/poweroutlet.html:28 -#: netbox/templates/dcim/powerport.html:28 -#: netbox/templates/dcim/rearport.html:28 -#: netbox/templates/dcim/virtualdevicecontext.html:18 +#: netbox/templates/dcim/panels/component_inventory_items.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:64 #: netbox/templates/extras/configcontext.html:13 #: netbox/templates/extras/configcontextprofile.html:13 #: netbox/templates/extras/configtemplate.html:13 @@ -1723,18 +1608,6 @@ msgstr "virtuāla pieslēguma savienojumi" #: netbox/templates/extras/savedfilter.html:13 #: netbox/templates/extras/tableconfig.html:13 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 -#: netbox/templates/ipam/asnrange.html:15 -#: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 -#: netbox/templates/ipam/role.html:22 -#: netbox/templates/ipam/routetarget.html:13 -#: netbox/templates/ipam/service.html:26 -#: netbox/templates/ipam/servicetemplate.html:15 -#: netbox/templates/ipam/vlan.html:35 netbox/templates/ipam/vlangroup.html:30 -#: netbox/templates/ipam/vlantranslationpolicy.html:14 -#: netbox/templates/tenancy/contact.html:35 -#: netbox/templates/tenancy/contactgroup.html:21 -#: netbox/templates/tenancy/contactrole.html:18 -#: netbox/templates/tenancy/tenantgroup.html:29 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:8 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:8 #: netbox/tenancy/tables/contacts.py:38 netbox/tenancy/tables/contacts.py:53 @@ -1764,17 +1637,13 @@ msgstr "Nosaukums" #: netbox/circuits/tables/virtual_circuits.py:27 #: netbox/netbox/navigation/menu.py:278 netbox/netbox/navigation/menu.py:282 #: netbox/netbox/navigation/menu.py:284 -#: netbox/templates/circuits/provider.html:57 -#: netbox/templates/circuits/provideraccount.html:48 -#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Pieslēgumi" #: netbox/circuits/tables/circuits.py:53 #: netbox/circuits/tables/virtual_circuits.py:42 -#: netbox/templates/circuits/circuit.html:26 -#: netbox/templates/circuits/virtualcircuit.html:35 -#: netbox/templates/dcim/interface.html:192 +#: netbox/circuits/ui/panels.py:75 netbox/circuits/ui/panels.py:118 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:15 msgid "Circuit ID" msgstr "Pieslēguma ID" @@ -1788,13 +1657,11 @@ msgid "Side Z" msgstr "Lapa Z" #: netbox/circuits/tables/circuits.py:78 -#: netbox/templates/circuits/circuit.html:65 msgid "Commit Rate" msgstr "Garantētais ātrums" #: netbox/circuits/tables/circuits.py:85 netbox/dcim/forms/filtersets.py:1973 -#: netbox/templates/tenancy/contact.html:94 -#: netbox/tenancy/tables/contacts.py:67 +#: netbox/tenancy/tables/contacts.py:67 netbox/tenancy/views.py:416 msgid "Assignments" msgstr "Sasaistes" @@ -1816,10 +1683,7 @@ msgid "Site Group" msgstr "Vietu grupa" #: netbox/circuits/tables/circuits.py:145 -#: netbox/templates/circuits/providernetwork.html:17 -#: netbox/templates/circuits/virtualcircuit.html:27 -#: netbox/templates/circuits/virtualcircuittermination.html:30 -#: netbox/templates/dcim/interface.html:188 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:11 msgid "Provider Network" msgstr "Pakalpojuma sniedzēja tīkls" @@ -1835,8 +1699,7 @@ msgstr "Kontu skaits" msgid "ASN Count" msgstr "ASN skaits" -#: netbox/circuits/tables/virtual_circuits.py:64 -#: netbox/templates/circuits/virtualcircuit.html:87 +#: netbox/circuits/tables/virtual_circuits.py:64 netbox/circuits/views.py:802 #: netbox/vpn/tables/tunnels.py:59 netbox/vpn/views.py:139 #: netbox/vpn/views.py:685 msgid "Terminations" @@ -1865,9 +1728,9 @@ msgstr "Savienojumi" #: netbox/dcim/forms/filtersets.py:1868 netbox/dcim/forms/filtersets.py:1880 #: netbox/dcim/forms/filtersets.py:1895 netbox/dcim/forms/filtersets.py:1937 #: netbox/dcim/forms/filtersets.py:2032 netbox/dcim/forms/filtersets.py:2056 -#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:748 -#: netbox/dcim/forms/model_forms.py:963 netbox/dcim/forms/model_forms.py:1375 -#: netbox/dcim/forms/model_forms.py:1869 netbox/dcim/forms/model_forms.py:1942 +#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:774 +#: netbox/dcim/forms/model_forms.py:989 netbox/dcim/forms/model_forms.py:1401 +#: netbox/dcim/forms/model_forms.py:1895 netbox/dcim/forms/model_forms.py:1968 #: netbox/dcim/forms/object_create.py:207 netbox/dcim/tables/connections.py:23 #: netbox/dcim/tables/connections.py:42 netbox/dcim/tables/connections.py:61 #: netbox/dcim/tables/devices.py:293 netbox/dcim/tables/devices.py:388 @@ -1879,24 +1742,11 @@ msgstr "Savienojumi" #: netbox/dcim/tables/modules.py:82 netbox/extras/forms/filtersets.py:405 #: netbox/ipam/forms/bulk_import.py:309 netbox/ipam/forms/filtersets.py:649 #: netbox/ipam/forms/model_forms.py:325 netbox/ipam/tables/vlans.py:156 -#: netbox/templates/circuits/virtualcircuittermination.html:56 -#: netbox/templates/dcim/consoleport.html:20 -#: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device_edit.html:12 -#: netbox/templates/dcim/devicebay.html:20 -#: netbox/templates/dcim/devicebay.html:48 -#: netbox/templates/dcim/frontport.html:20 -#: netbox/templates/dcim/interface.html:30 -#: netbox/templates/dcim/interface.html:236 -#: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/modulebay.html:20 +#: netbox/templates/dcim/panels/installed_device.html:9 +#: netbox/templates/dcim/panels/interface_connection.html:60 #: netbox/templates/dcim/panels/virtual_chassis_members.html:8 -#: netbox/templates/dcim/poweroutlet.html:20 -#: netbox/templates/dcim/powerport.html:20 -#: netbox/templates/dcim/rearport.html:20 -#: netbox/templates/dcim/virtualchassis.html:55 #: netbox/templates/dcim/virtualchassis_edit.html:63 -#: netbox/templates/dcim/virtualdevicecontext.html:22 #: netbox/templates/wireless/panels/wirelesslink_interface.html:8 #: netbox/virtualization/filtersets.py:160 #: netbox/virtualization/forms/bulk_edit.py:108 @@ -1914,6 +1764,15 @@ msgstr "Savienojumi" msgid "Device" msgstr "Iekārta" +#: netbox/circuits/ui/panels.py:37 netbox/netbox/navigation/menu.py:301 +msgid "Group Assignments" +msgstr "Grupu sasaiste" + +#: netbox/circuits/ui/panels.py:46 netbox/ipam/ui/panels.py:36 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Piešķirt grupu" + #: netbox/core/api/views.py:51 msgid "This user does not have permission to synchronize this data source." msgstr "Šim lietotājam nav atļaujas sinhronizēt šo datu avotu." @@ -1960,14 +1819,14 @@ msgid "Syncing" msgstr "Sinhronizācija" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:43 netbox/templates/core/job.html:59 +#: netbox/core/tables/jobs.py:43 msgid "Completed" msgstr "Pabeigts" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35 #: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259 -#: netbox/dcim/choices.py:1992 netbox/dcim/choices.py:2082 +#: netbox/dcim/choices.py:2013 netbox/dcim/choices.py:2103 #: netbox/virtualization/choices.py:48 msgid "Failed" msgstr "Neizdevās" @@ -1991,7 +1850,6 @@ msgstr "Gaidīts" #: netbox/core/choices.py:55 netbox/core/constants.py:24 #: netbox/core/tables/jobs.py:34 netbox/core/tables/tasks.py:39 -#: netbox/templates/core/job.html:46 msgid "Scheduled" msgstr "Plānots" @@ -2030,10 +1888,9 @@ msgstr "30 dienas" #: netbox/core/choices.py:102 netbox/core/tables/jobs.py:31 #: netbox/core/tables/tasks.py:80 netbox/extras/tables/tables.py:436 #: netbox/extras/tables/tables.py:742 -#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision.html:23 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:42 netbox/templates/core/rq_task.html:16 -#: netbox/templates/core/rq_task.html:73 +#: netbox/templates/core/rq_task.html:16 netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 #: netbox/templates/extras/journalentry.html:22 @@ -2048,14 +1905,13 @@ msgstr "Atjaunināts" #: netbox/core/choices.py:104 msgid "Deleted" -msgstr "Svītrots" +msgstr "Dzēsts" #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:31 msgid "Finished" msgstr "Pabeigts" #: netbox/core/constants.py:22 netbox/core/tables/jobs.py:40 -#: netbox/templates/core/job.html:55 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Sākās" @@ -2087,13 +1943,12 @@ msgid "Warning" msgstr "Brīdinājums" #: netbox/core/constants.py:33 netbox/netbox/tables/columns.py:589 -#: netbox/templates/core/job.html:26 msgid "Error" msgstr "Kļūda" #: netbox/core/data_backends.py:46 netbox/core/tables/plugins.py:54 #: netbox/templates/core/plugin.html:88 -#: netbox/templates/dcim/interface.html:291 +#: netbox/templates/dcim/panels/interface_wireless.html:10 msgid "Local" msgstr "Tuvais" @@ -2152,7 +2007,7 @@ msgid "User name" msgstr "Lietotāja vārds" #: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47 -#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2040 +#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2061 #: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386 #: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712 #: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233 @@ -2163,8 +2018,6 @@ msgstr "Lietotāja vārds" #: netbox/extras/tables/tables.py:188 netbox/extras/tables/tables.py:319 #: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:520 #: netbox/netbox/preferences.py:46 netbox/netbox/preferences.py:71 -#: netbox/templates/core/datasource.html:42 -#: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 #: netbox/templates/extras/eventrule.html:17 #: netbox/templates/extras/savedfilter.html:25 @@ -2178,7 +2031,7 @@ msgid "Enabled" msgstr "Iespējots" #: netbox/core/forms/bulk_edit.py:30 netbox/core/forms/filtersets.py:54 -#: netbox/core/tables/data.py:31 netbox/templates/core/datasource.html:50 +#: netbox/core/tables/data.py:31 netbox/core/ui/panels.py:12 msgid "Sync interval" msgstr "Sinhronizācijas intervāls" @@ -2192,17 +2045,17 @@ msgstr "Sinhronizācijas intervāls" msgid "Parameters" msgstr "Parametri" -#: netbox/core/forms/bulk_edit.py:37 netbox/templates/core/datasource.html:72 +#: netbox/core/forms/bulk_edit.py:37 netbox/core/ui/panels.py:22 msgid "Ignore rules" msgstr "Ignorēt kārtulas" #: netbox/core/forms/filtersets.py:33 netbox/core/forms/model_forms.py:100 -#: netbox/extras/forms/model_forms.py:280 +#: netbox/core/ui/panels.py:7 netbox/extras/forms/model_forms.py:280 #: netbox/extras/forms/model_forms.py:613 #: netbox/extras/forms/model_forms.py:702 #: netbox/extras/forms/model_forms.py:755 netbox/extras/tables/tables.py:230 #: netbox/extras/tables/tables.py:600 netbox/extras/tables/tables.py:630 -#: netbox/extras/tables/tables.py:672 netbox/templates/core/datasource.html:31 +#: netbox/extras/tables/tables.py:672 #: netbox/templates/core/inc/datafile_panel.html:7 #: netbox/templates/extras/configtemplate.html:37 #: netbox/templates/extras/object_render_config.html:19 @@ -2229,15 +2082,14 @@ msgstr "Radīšana" #: netbox/extras/forms/filtersets.py:580 netbox/extras/tables/tables.py:283 #: netbox/extras/tables/tables.py:350 netbox/extras/tables/tables.py:376 #: netbox/extras/tables/tables.py:395 netbox/extras/tables/tables.py:427 -#: netbox/extras/tables/tables.py:747 netbox/templates/core/job.html:11 -#: netbox/templates/core/objectchange.html:52 +#: netbox/extras/tables/tables.py:747 #: netbox/templates/extras/tableconfig.html:21 #: netbox/tenancy/tables/contacts.py:84 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Objekta tips" #: netbox/core/forms/filtersets.py:95 netbox/core/tables/jobs.py:46 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:61 +#: netbox/core/ui/panels.py:65 netbox/templates/core/rq_task.html:61 msgid "Queue" msgstr "rinda" @@ -2274,11 +2126,10 @@ msgid "Completed before" msgstr "Pabeigts pirms" #: netbox/core/forms/filtersets.py:141 netbox/core/forms/filtersets.py:170 -#: netbox/dcim/forms/bulk_edit.py:458 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/model_forms.py:336 netbox/extras/forms/filtersets.py:575 -#: netbox/extras/forms/filtersets.py:595 netbox/extras/tables/tables.py:403 -#: netbox/extras/tables/tables.py:443 -#: netbox/templates/core/objectchange.html:36 +#: netbox/core/ui/panels.py:73 netbox/dcim/forms/bulk_edit.py:458 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:362 +#: netbox/extras/forms/filtersets.py:575 netbox/extras/forms/filtersets.py:595 +#: netbox/extras/tables/tables.py:403 netbox/extras/tables/tables.py:443 #: netbox/templates/extras/savedfilter.html:21 #: netbox/templates/extras/tableconfig.html:29 #: netbox/templates/inc/user_menu.html:31 netbox/users/filtersets.py:135 @@ -2291,7 +2142,6 @@ msgstr "Lietotājs" #: netbox/core/forms/filtersets.py:149 netbox/core/tables/change_logging.py:16 #: netbox/core/tables/jobs.py:72 netbox/extras/tables/tables.py:785 #: netbox/extras/tables/tables.py:840 -#: netbox/templates/core/objectchange.html:32 msgid "Time" msgstr "Laiks" @@ -2305,21 +2155,19 @@ msgstr "Pirms" #: netbox/core/forms/filtersets.py:163 netbox/core/tables/change_logging.py:30 #: netbox/extras/forms/model_forms.py:490 -#: netbox/templates/core/objectchange.html:46 #: netbox/templates/extras/eventrule.html:71 msgid "Action" msgstr "Darbība" #: netbox/core/forms/model_forms.py:55 netbox/core/tables/data.py:57 -#: netbox/templates/core/datafile.html:21 #: netbox/templates/extras/report/base.html:33 #: netbox/templates/extras/script/base.html:32 msgid "Source" msgstr "Avots" #: netbox/core/forms/model_forms.py:57 -#: netbox/templates/core/datasource.html:14 -#: netbox/templates/core/datasource.html:20 +#: netbox/templates/core/datasource.html:10 +#: netbox/templates/core/datasource.html:16 #: netbox/utilities/templatetags/buttons.py:156 msgid "Sync" msgstr "Sinhronizācija" @@ -2345,7 +2193,7 @@ msgstr "Jāaugšupielādē fails vai jāizvēlas sinhronizējamais datu fails" msgid "Rack Elevations" msgstr "Statņu izkārtojumi" -#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1911 +#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1932 #: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340 #: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144 #: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320 @@ -2488,13 +2336,13 @@ msgid "Config revision #{id}" msgstr "Konfigurācijas pārskatīšana #{id}" #: netbox/core/models/data.py:45 netbox/dcim/models/cables.py:50 -#: netbox/dcim/models/device_component_templates.py:210 -#: netbox/dcim/models/device_component_templates.py:245 -#: netbox/dcim/models/device_component_templates.py:281 -#: netbox/dcim/models/device_component_templates.py:346 -#: netbox/dcim/models/device_component_templates.py:437 -#: netbox/dcim/models/device_component_templates.py:583 -#: netbox/dcim/models/device_component_templates.py:656 +#: netbox/dcim/models/device_component_templates.py:200 +#: netbox/dcim/models/device_component_templates.py:235 +#: netbox/dcim/models/device_component_templates.py:271 +#: netbox/dcim/models/device_component_templates.py:336 +#: netbox/dcim/models/device_component_templates.py:427 +#: netbox/dcim/models/device_component_templates.py:573 +#: netbox/dcim/models/device_component_templates.py:646 #: netbox/dcim/models/device_components.py:370 #: netbox/dcim/models/device_components.py:397 #: netbox/dcim/models/device_components.py:428 @@ -2508,15 +2356,14 @@ msgstr "Konfigurācijas pārskatīšana #{id}" msgid "type" msgstr "tips" -#: netbox/core/models/data.py:50 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:183 netbox/extras/tables/tables.py:850 -#: netbox/templates/core/datasource.html:62 -#: netbox/templates/core/plugin.html:66 +#: netbox/core/models/data.py:50 netbox/core/ui/panels.py:17 +#: netbox/extras/choices.py:37 netbox/extras/models/models.py:183 +#: netbox/extras/tables/tables.py:850 netbox/templates/core/plugin.html:66 msgid "URL" msgstr "URL" #: netbox/core/models/data.py:60 -#: netbox/dcim/models/device_component_templates.py:442 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:605 #: netbox/extras/models/models.py:81 netbox/extras/models/models.py:319 #: netbox/extras/models/models.py:507 netbox/extras/models/models.py:586 @@ -2588,7 +2435,7 @@ msgstr "ceļš" msgid "File path relative to the data source's root" msgstr "Faila ceļš attiecībā pret datu avota sakni" -#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:509 +#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:519 msgid "size" msgstr "izmērs" @@ -2735,27 +2582,24 @@ msgid "Full Name" msgstr "Pilns vārds" #: netbox/core/tables/change_logging.py:38 netbox/core/tables/jobs.py:23 -#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:286 -#: netbox/extras/tables/tables.py:379 netbox/extras/tables/tables.py:398 -#: netbox/extras/tables/tables.py:430 netbox/extras/tables/tables.py:514 -#: netbox/extras/tables/tables.py:583 netbox/extras/tables/tables.py:752 -#: netbox/extras/tables/tables.py:793 netbox/extras/tables/tables.py:847 -#: netbox/netbox/tables/tables.py:343 -#: netbox/templates/core/objectchange.html:58 +#: netbox/core/ui/panels.py:83 netbox/extras/choices.py:41 +#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:379 +#: netbox/extras/tables/tables.py:398 netbox/extras/tables/tables.py:430 +#: netbox/extras/tables/tables.py:514 netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:752 netbox/extras/tables/tables.py:793 +#: netbox/extras/tables/tables.py:847 netbox/netbox/tables/tables.py:343 #: netbox/templates/extras/eventrule.html:78 #: netbox/templates/extras/journalentry.html:18 #: netbox/tenancy/tables/contacts.py:87 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "Objekts" -#: netbox/core/tables/change_logging.py:43 -#: netbox/templates/core/objectchange.html:74 +#: netbox/core/tables/change_logging.py:43 netbox/core/ui/panels.py:89 msgid "Request ID" msgstr "Pieprasījuma ID" #: netbox/core/tables/change_logging.py:46 netbox/core/tables/jobs.py:79 #: netbox/extras/tables/tables.py:796 netbox/extras/tables/tables.py:853 -#: netbox/templates/core/objectchange.html:68 msgid "Message" msgstr "Ziņojums" @@ -2768,11 +2612,11 @@ msgstr "Ir aktīvs" msgid "Last Synced" msgstr "Pēdējo reizi sinhronizēts" -#: netbox/core/tables/data.py:37 netbox/templates/core/datasource.html:118 +#: netbox/core/tables/data.py:37 msgid "Files" msgstr "Faili" -#: netbox/core/tables/data.py:61 netbox/templates/core/datafile.html:25 +#: netbox/core/tables/data.py:61 msgid "Path" msgstr "Ceļš" @@ -2796,7 +2640,7 @@ msgstr "ID" msgid "Interval" msgstr "Intervāls" -#: netbox/core/tables/jobs.py:49 +#: netbox/core/tables/jobs.py:49 netbox/core/views.py:255 msgid "Log Entries" msgstr "Žurnāla ieraksti" @@ -2816,7 +2660,7 @@ msgstr "Nav žurnāla ierakstu" msgid "Version" msgstr "Versija" -#: netbox/core/tables/plugins.py:21 netbox/templates/core/datafile.html:32 +#: netbox/core/tables/plugins.py:21 msgid "Last Updated" msgstr "Pēdējo reizi atjaunināts" @@ -2912,7 +2756,61 @@ msgstr "PID" msgid "No workers found" msgstr "Netika atrasti darbinieki" -#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:447 +#: netbox/core/ui/panels.py:13 +msgid "Last synced" +msgstr "Pēdējo reizi sinhronizēts" + +#: netbox/core/ui/panels.py:29 +msgid "Backend" +msgstr "Aizmugurējā daļa" + +#: netbox/core/ui/panels.py:33 netbox/extras/tables/tables.py:234 +#: netbox/extras/tables/tables.py:604 netbox/extras/tables/tables.py:634 +#: netbox/extras/tables/tables.py:676 +#: netbox/templates/core/inc/datafile_panel.html:4 +#: netbox/templates/core/inc/datafile_panel.html:17 +#: netbox/templates/extras/configtemplate.html:47 +#: netbox/templates/extras/object_render_config.html:23 +#: netbox/templates/generic/bulk_import.html:35 +msgid "Data File" +msgstr "Datu fails" + +#: netbox/core/ui/panels.py:38 +msgid "SHA256 hash" +msgstr "SHA256 jaucējkrāns" + +#: netbox/core/ui/panels.py:43 +msgid "Content" +msgstr "saturs" + +#: netbox/core/ui/panels.py:47 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 +msgid "Job" +msgstr "Uzdevums" + +#: netbox/core/ui/panels.py:50 netbox/core/ui/panels.py:79 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 +#: netbox/extras/forms/filtersets.py:335 +#: netbox/extras/forms/model_forms.py:338 +#: netbox/extras/forms/model_forms.py:398 +#: netbox/extras/forms/model_forms.py:435 +#: netbox/tenancy/forms/filtersets.py:121 +msgid "Object type" +msgstr "Objekta tips" + +#: netbox/core/ui/panels.py:56 +msgid "Created by" +msgstr "Izveidojis" + +#: netbox/core/ui/panels.py:60 +msgid "Scheduling" +msgstr "Plānošana" + +#: netbox/core/ui/panels.py:69 netbox/users/ui/panels.py:53 +msgid "Change" +msgstr "Mainīt" + +#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Uzdevums{job_id} nav atrasts" @@ -2922,55 +2820,63 @@ msgstr "Uzdevums{job_id} nav atrasts" msgid "Job {id} not found." msgstr "Uzdevums{id} nav atrasts." -#: netbox/core/views.py:95 +#: netbox/core/views.py:125 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Rindā ievietotais uzdevums #{id} sinhronizēt {datasource}" -#: netbox/core/views.py:199 netbox/templates/extras/htmx/script_result.html:43 +#: netbox/core/views.py:237 netbox/extras/forms/filtersets.py:179 +#: netbox/extras/forms/filtersets.py:380 netbox/extras/forms/filtersets.py:403 +#: netbox/extras/forms/filtersets.py:499 +#: netbox/extras/forms/model_forms.py:696 +#: netbox/templates/extras/eventrule.html:84 +msgid "Data" +msgstr "Dati" + +#: netbox/core/views.py:248 netbox/templates/extras/htmx/script_result.html:43 msgid "Log" msgstr "žurnāls" -#: netbox/core/views.py:383 +#: netbox/core/views.py:467 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Atjaunota konfigurācijas pārskatīšana #{id}" -#: netbox/core/views.py:486 +#: netbox/core/views.py:570 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Uzdeuvms{id} ir dzēsts." -#: netbox/core/views.py:488 +#: netbox/core/views.py:572 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Kļūda dzēšot uzdevumu{id}: {error}" -#: netbox/core/views.py:497 +#: netbox/core/views.py:581 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Uzdevums{id} ir atkal ievietots rindā." -#: netbox/core/views.py:506 +#: netbox/core/views.py:590 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Uzdevums{id} ir ierindots rindā." -#: netbox/core/views.py:515 +#: netbox/core/views.py:599 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Uzdevums{id} ir apturēts." -#: netbox/core/views.py:517 +#: netbox/core/views.py:601 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Neizdevās pārtraukt uzdevumu {id}" -#: netbox/core/views.py:671 +#: netbox/core/views.py:755 msgid "Plugins catalog could not be loaded" msgstr "Spraudņu katalogu nevarēja ielādēt" -#: netbox/core/views.py:707 +#: netbox/core/views.py:791 #, python-brace-format msgid "Plugin {name} not found" msgstr "Spraudnis {name} nav atrasts" @@ -2993,7 +2899,7 @@ msgstr "Interfeisa režīms neatbalsta tagotus VLAN" msgid "Position (U)" msgstr "Pozīcija (U)" -#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:47 +#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:49 msgid "Facility ID" msgstr "Objekta ID" @@ -3020,8 +2926,8 @@ msgid "Staging" msgstr "Iestudējums" #: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208 -#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1934 -#: netbox/dcim/choices.py:2083 netbox/virtualization/choices.py:23 +#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1955 +#: netbox/dcim/choices.py:2104 netbox/virtualization/choices.py:23 #: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282 msgid "Decommissioning" msgstr "Demontē" @@ -3087,7 +2993,7 @@ msgstr "Novecojis" msgid "Millimeters" msgstr "Milimetri" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1956 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1977 msgid "Inches" msgstr "collas" @@ -3115,21 +3021,17 @@ msgstr "Novecojis" #: netbox/dcim/forms/bulk_import.py:1211 netbox/dcim/forms/filtersets.py:265 #: netbox/dcim/forms/filtersets.py:780 netbox/dcim/forms/filtersets.py:796 #: netbox/dcim/forms/model_forms.py:93 netbox/dcim/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:188 netbox/dcim/forms/model_forms.py:514 -#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1709 +#: netbox/dcim/forms/model_forms.py:214 netbox/dcim/forms/model_forms.py:540 +#: netbox/dcim/forms/model_forms.py:561 netbox/dcim/forms/model_forms.py:1252 +#: netbox/dcim/forms/model_forms.py:1735 #: netbox/dcim/forms/object_import.py:177 netbox/dcim/tables/devices.py:702 #: netbox/dcim/tables/devices.py:737 netbox/dcim/tables/devices.py:965 #: netbox/dcim/tables/devices.py:1052 netbox/dcim/tables/devices.py:1205 #: netbox/ipam/forms/bulk_import.py:601 netbox/ipam/forms/model_forms.py:758 #: netbox/ipam/tables/fhrp.py:56 netbox/ipam/tables/ip.py:329 #: netbox/ipam/tables/services.py:42 netbox/netbox/tables/tables.py:329 -#: netbox/netbox/ui/panels.py:206 netbox/templates/dcim/interface.html:113 -#: netbox/templates/ipam/service.html:30 -#: netbox/templates/tenancy/contactgroup.html:29 -#: netbox/templates/tenancy/tenantgroup.html:37 -#: netbox/tenancy/forms/bulk_edit.py:33 netbox/tenancy/forms/bulk_edit.py:62 -#: netbox/tenancy/forms/bulk_import.py:31 +#: netbox/netbox/ui/panels.py:207 netbox/tenancy/forms/bulk_edit.py:33 +#: netbox/tenancy/forms/bulk_edit.py:62 netbox/tenancy/forms/bulk_import.py:31 #: netbox/tenancy/forms/bulk_import.py:64 #: netbox/tenancy/forms/model_forms.py:26 #: netbox/tenancy/forms/model_forms.py:67 @@ -3163,7 +3065,7 @@ msgid "Rear" msgstr "Aizmugurē" #: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258 -#: netbox/dcim/choices.py:2081 netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:2102 netbox/virtualization/choices.py:47 msgid "Staged" msgstr "Iestrāvēts" @@ -3196,7 +3098,7 @@ msgid "Top to bottom" msgstr "No augšas uz leju" #: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280 -#: netbox/dcim/choices.py:1566 +#: netbox/dcim/choices.py:1587 msgid "Passive" msgstr "Pasīvs" @@ -3225,8 +3127,8 @@ msgid "Proprietary" msgstr "Patentēts" #: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853 -#: netbox/dcim/choices.py:1478 netbox/dcim/choices.py:1480 -#: netbox/dcim/choices.py:1716 netbox/dcim/choices.py:1718 +#: netbox/dcim/choices.py:1499 netbox/dcim/choices.py:1501 +#: netbox/dcim/choices.py:1737 netbox/dcim/choices.py:1739 #: netbox/netbox/navigation/menu.py:212 msgid "Other" msgstr "Cits" @@ -3239,350 +3141,352 @@ msgstr "ITA/Starptautiskais" msgid "Physical" msgstr "Fiziskais" -#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1153 +#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1162 msgid "Virtual" msgstr "Virtuāls" -#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1355 +#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 -#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125 -#: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150 -#: netbox/netbox/navigation/menu.py:154 -#: netbox/templates/dcim/interface.html:285 +#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1151 +#: netbox/dcim/forms/model_forms.py:1615 netbox/dcim/ui/panels.py:546 +#: netbox/netbox/navigation/menu.py:150 netbox/netbox/navigation/menu.py:154 msgid "Wireless" msgstr "Bezvadu radio" -#: netbox/dcim/choices.py:1151 +#: netbox/dcim/choices.py:1160 msgid "Virtual interfaces" msgstr "Virtuālie interfeisi" -#: netbox/dcim/choices.py:1154 netbox/dcim/forms/bulk_edit.py:1399 -#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107 -#: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:117 +#: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 +#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1133 +#: netbox/dcim/tables/devices.py:741 #: netbox/virtualization/forms/bulk_edit.py:177 #: netbox/virtualization/forms/bulk_import.py:171 #: netbox/virtualization/tables/virtualmachines.py:137 msgid "Bridge" msgstr "Tilts" -#: netbox/dcim/choices.py:1155 +#: netbox/dcim/choices.py:1164 msgid "Link Aggregation Group (LAG)" msgstr "Link Aggregation Group (LAG)" -#: netbox/dcim/choices.py:1159 +#: netbox/dcim/choices.py:1168 msgid "FastEthernet (100 Mbps)" msgstr "FastEthernet (100 Mb/s)" -#: netbox/dcim/choices.py:1168 +#: netbox/dcim/choices.py:1177 msgid "GigabitEthernet (1 Gbps)" msgstr "GigabiteEthernet (1 Gbps)" -#: netbox/dcim/choices.py:1186 +#: netbox/dcim/choices.py:1195 msgid "2.5/5 Gbps Ethernet" msgstr "2.5/5 Gbps Ethernet" -#: netbox/dcim/choices.py:1193 +#: netbox/dcim/choices.py:1202 msgid "10 Gbps Ethernet" msgstr "10 Gbps Ethernet" -#: netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1218 msgid "25 Gbps Ethernet" msgstr "25 Gbps Ethernet" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1228 msgid "40 Gbps Ethernet" msgstr "40 Gbps Ethernet" -#: netbox/dcim/choices.py:1230 +#: netbox/dcim/choices.py:1239 msgid "50 Gbps Ethernet" msgstr "50 Gbps Ethernet" -#: netbox/dcim/choices.py:1240 +#: netbox/dcim/choices.py:1249 msgid "100 Gbps Ethernet" msgstr "100 Gbps Ethernet" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1270 msgid "200 Gbps Ethernet" msgstr "200 Gbps Ethernet" -#: netbox/dcim/choices.py:1275 +#: netbox/dcim/choices.py:1284 msgid "400 Gbps Ethernet" msgstr "400 Gbps Ethernet" -#: netbox/dcim/choices.py:1293 +#: netbox/dcim/choices.py:1302 msgid "800 Gbps Ethernet" msgstr "800 Gbps Ethernet" -#: netbox/dcim/choices.py:1302 +#: netbox/dcim/choices.py:1311 +msgid "1.6 Tbps Ethernet" +msgstr "1.6 Tbps Ethernet" + +#: netbox/dcim/choices.py:1319 msgid "Pluggable transceivers" -msgstr "Pievienojamie uztvērēji" +msgstr "Pluggable transceivers" -#: netbox/dcim/choices.py:1339 +#: netbox/dcim/choices.py:1359 msgid "Backplane Ethernet" -msgstr "Ethernet aizmugures plāksne" +msgstr "Backplane Ethernet" -#: netbox/dcim/choices.py:1371 +#: netbox/dcim/choices.py:1392 msgid "Cellular" -msgstr "Šūnu" +msgstr "Mobilais" -#: netbox/dcim/choices.py:1423 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/choices.py:1444 netbox/dcim/forms/filtersets.py:425 #: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112 #: netbox/dcim/forms/filtersets.py:1910 -#: netbox/templates/dcim/inventoryitem.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:66 msgid "Serial" -msgstr "Sērijas" +msgstr "Seriālais" -#: netbox/dcim/choices.py:1438 +#: netbox/dcim/choices.py:1459 msgid "Coaxial" msgstr "Koaksiālais" -#: netbox/dcim/choices.py:1459 +#: netbox/dcim/choices.py:1480 msgid "Stacking" -msgstr "Iekraušana" +msgstr "Grēdošanas" -#: netbox/dcim/choices.py:1511 +#: netbox/dcim/choices.py:1532 msgid "Half" msgstr "Half" -#: netbox/dcim/choices.py:1512 +#: netbox/dcim/choices.py:1533 msgid "Full" -msgstr "Pilns" +msgstr "Full" -#: netbox/dcim/choices.py:1513 netbox/netbox/preferences.py:32 +#: netbox/dcim/choices.py:1534 netbox/netbox/preferences.py:32 #: netbox/wireless/choices.py:480 msgid "Auto" -msgstr "Automātisks" +msgstr "Auto" -#: netbox/dcim/choices.py:1525 +#: netbox/dcim/choices.py:1546 msgid "Access" -msgstr "Piekļuve" +msgstr "Access" -#: netbox/dcim/choices.py:1526 netbox/ipam/tables/vlans.py:148 +#: netbox/dcim/choices.py:1547 netbox/ipam/tables/vlans.py:148 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" -msgstr "Atzīmēts" +msgstr "Tagots" -#: netbox/dcim/choices.py:1527 +#: netbox/dcim/choices.py:1548 msgid "Tagged (All)" -msgstr "Atzīmēts (Visi)" +msgstr "Tagots (Visi)" -#: netbox/dcim/choices.py:1528 netbox/templates/ipam/vlan_edit.html:26 +#: netbox/dcim/choices.py:1549 netbox/templates/ipam/vlan_edit.html:26 msgid "Q-in-Q (802.1ad)" msgstr "Q-in-Q (802.1ad)" -#: netbox/dcim/choices.py:1557 +#: netbox/dcim/choices.py:1578 msgid "IEEE Standard" msgstr "IEEE standarts" -#: netbox/dcim/choices.py:1568 +#: netbox/dcim/choices.py:1589 msgid "Passive 24V (2-pair)" msgstr "Pasīvs 24V (2 pāri)" -#: netbox/dcim/choices.py:1569 +#: netbox/dcim/choices.py:1590 msgid "Passive 24V (4-pair)" msgstr "Pasīvs 24V (4 pāri)" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1591 msgid "Passive 48V (2-pair)" msgstr "Pasīvs 48V (2 pāri)" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1592 msgid "Passive 48V (4-pair)" msgstr "Pasīvs 48V (4 pāri)" -#: netbox/dcim/choices.py:1644 +#: netbox/dcim/choices.py:1665 msgid "Copper" msgstr "Varš" -#: netbox/dcim/choices.py:1667 +#: netbox/dcim/choices.py:1688 msgid "Fiber Optic" msgstr "Optiskā šķiedra" -#: netbox/dcim/choices.py:1703 netbox/dcim/choices.py:1917 +#: netbox/dcim/choices.py:1724 netbox/dcim/choices.py:1938 msgid "USB" msgstr "USB" -#: netbox/dcim/choices.py:1759 +#: netbox/dcim/choices.py:1780 msgid "Single" -msgstr "Vienvietīgs" +msgstr "Viens" -#: netbox/dcim/choices.py:1761 +#: netbox/dcim/choices.py:1782 msgid "1C1P" msgstr "1C1P" -#: netbox/dcim/choices.py:1762 +#: netbox/dcim/choices.py:1783 msgid "1C2P" msgstr "1C2P" -#: netbox/dcim/choices.py:1763 +#: netbox/dcim/choices.py:1784 msgid "1C4P" msgstr "1C4P" -#: netbox/dcim/choices.py:1764 +#: netbox/dcim/choices.py:1785 msgid "1C6P" msgstr "1C6P" -#: netbox/dcim/choices.py:1765 +#: netbox/dcim/choices.py:1786 msgid "1C8P" msgstr "1C8P" -#: netbox/dcim/choices.py:1766 +#: netbox/dcim/choices.py:1787 msgid "1C12P" msgstr "1C12P" -#: netbox/dcim/choices.py:1767 +#: netbox/dcim/choices.py:1788 msgid "1C16P" msgstr "1C16P" -#: netbox/dcim/choices.py:1771 -msgid "Trunk" -msgstr "Bagāžnieks" - -#: netbox/dcim/choices.py:1773 -msgid "2C1P trunk" -msgstr "2C1P bagāžnieks" - -#: netbox/dcim/choices.py:1774 -msgid "2C2P trunk" -msgstr "2C2P bagāžnieks" - -#: netbox/dcim/choices.py:1775 -msgid "2C4P trunk" -msgstr "2C4P bagāžnieks" - -#: netbox/dcim/choices.py:1776 -msgid "2C4P trunk (shuffle)" -msgstr "2C4P bagāžnieks (sajaukšana)" - -#: netbox/dcim/choices.py:1777 -msgid "2C6P trunk" -msgstr "2C6P bagāžnieks" - -#: netbox/dcim/choices.py:1778 -msgid "2C8P trunk" -msgstr "2C8P bagāžnieks" - -#: netbox/dcim/choices.py:1779 -msgid "2C12P trunk" -msgstr "2C12P bagāžnieks" - -#: netbox/dcim/choices.py:1780 -msgid "4C1P trunk" -msgstr "4C1P bagāžnieks" - -#: netbox/dcim/choices.py:1781 -msgid "4C2P trunk" -msgstr "4C2P bagāžnieks" - -#: netbox/dcim/choices.py:1782 -msgid "4C4P trunk" -msgstr "4C4P bagāžnieks" - -#: netbox/dcim/choices.py:1783 -msgid "4C4P trunk (shuffle)" -msgstr "4C4P bagāžnieks (sajaukšana)" - -#: netbox/dcim/choices.py:1784 -msgid "4C6P trunk" -msgstr "4C6P bagāžnieks" - -#: netbox/dcim/choices.py:1785 -msgid "4C8P trunk" -msgstr "4C8P bagāžnieks" - -#: netbox/dcim/choices.py:1786 -msgid "8C4P trunk" -msgstr "8C4P bagāžnieks" - -#: netbox/dcim/choices.py:1790 -msgid "Breakout" -msgstr "Izlauzums" - #: netbox/dcim/choices.py:1792 -msgid "1C4P:4C1P breakout" -msgstr "1C4P: 4C1P pārrāvums" - -#: netbox/dcim/choices.py:1793 -msgid "1C6P:6C1P breakout" -msgstr "1C6P: 6C1P izlaušanās" +msgid "Trunk" +msgstr "Trunk" #: netbox/dcim/choices.py:1794 +msgid "2C1P trunk" +msgstr "2C1P trunk" + +#: netbox/dcim/choices.py:1795 +msgid "2C2P trunk" +msgstr "2C2P trunk" + +#: netbox/dcim/choices.py:1796 +msgid "2C4P trunk" +msgstr "2C4P trunk" + +#: netbox/dcim/choices.py:1797 +msgid "2C4P trunk (shuffle)" +msgstr "2C4P trunk (shuffle)" + +#: netbox/dcim/choices.py:1798 +msgid "2C6P trunk" +msgstr "2C6P trunk" + +#: netbox/dcim/choices.py:1799 +msgid "2C8P trunk" +msgstr "2C8P trunk" + +#: netbox/dcim/choices.py:1800 +msgid "2C12P trunk" +msgstr "2C12P trunk" + +#: netbox/dcim/choices.py:1801 +msgid "4C1P trunk" +msgstr "4C1P trunk" + +#: netbox/dcim/choices.py:1802 +msgid "4C2P trunk" +msgstr "4C2P trunk" + +#: netbox/dcim/choices.py:1803 +msgid "4C4P trunk" +msgstr "4C4P trunk" + +#: netbox/dcim/choices.py:1804 +msgid "4C4P trunk (shuffle)" +msgstr "4C4P trunk (shuffle)" + +#: netbox/dcim/choices.py:1805 +msgid "4C6P trunk" +msgstr "4C6P trunk" + +#: netbox/dcim/choices.py:1806 +msgid "4C8P trunk" +msgstr "4C8P trunk" + +#: netbox/dcim/choices.py:1807 +msgid "8C4P trunk" +msgstr "8C4P trunk" + +#: netbox/dcim/choices.py:1811 +msgid "Breakout" +msgstr "Breakout" + +#: netbox/dcim/choices.py:1813 +msgid "1C4P:4C1P breakout" +msgstr "1C4P:4C1P breakout" + +#: netbox/dcim/choices.py:1814 +msgid "1C6P:6C1P breakout" +msgstr "1C6P:6C1P breakout" + +#: netbox/dcim/choices.py:1815 msgid "2C4P:8C1P breakout (shuffle)" -msgstr "2C4P: 8C1P izlaušanās (sajaukšana)" +msgstr "2C4P:8C1P breakout (shuffle)" -#: netbox/dcim/choices.py:1852 +#: netbox/dcim/choices.py:1873 msgid "Copper - Twisted Pair (UTP/STP)" -msgstr "Varš - savīts pāris (UTP/STP)" +msgstr "Varš - vītais pāris (UTP/STP)" -#: netbox/dcim/choices.py:1866 +#: netbox/dcim/choices.py:1887 msgid "Copper - Twinax (DAC)" msgstr "Varš - Twinax (DAC)" -#: netbox/dcim/choices.py:1873 +#: netbox/dcim/choices.py:1894 msgid "Copper - Coaxial" msgstr "Varš - koaksiāls" -#: netbox/dcim/choices.py:1888 +#: netbox/dcim/choices.py:1909 msgid "Fiber - Multimode" -msgstr "Šķiedra - daudzmodu" +msgstr "Šķiedra - daudzmodu (MM)" -#: netbox/dcim/choices.py:1899 +#: netbox/dcim/choices.py:1920 msgid "Fiber - Single-mode" -msgstr "Šķiedra - vienrežīms" +msgstr "Šķiedra - vienmodas (SM)" -#: netbox/dcim/choices.py:1907 +#: netbox/dcim/choices.py:1928 msgid "Fiber - Other" msgstr "Šķiedra - Cits" -#: netbox/dcim/choices.py:1932 netbox/dcim/forms/filtersets.py:1402 +#: netbox/dcim/choices.py:1953 netbox/dcim/forms/filtersets.py:1402 msgid "Connected" msgstr "Pieslēgts" -#: netbox/dcim/choices.py:1951 netbox/netbox/choices.py:177 +#: netbox/dcim/choices.py:1972 netbox/netbox/choices.py:177 msgid "Kilometers" msgstr "Kilometri" -#: netbox/dcim/choices.py:1952 netbox/netbox/choices.py:178 +#: netbox/dcim/choices.py:1973 netbox/netbox/choices.py:178 #: netbox/templates/dcim/cable_trace.html:65 msgid "Meters" -msgstr "skaitītāji" +msgstr "Metri" -#: netbox/dcim/choices.py:1953 +#: netbox/dcim/choices.py:1974 msgid "Centimeters" msgstr "Centimetri" -#: netbox/dcim/choices.py:1954 netbox/netbox/choices.py:179 +#: netbox/dcim/choices.py:1975 netbox/netbox/choices.py:179 msgid "Miles" -msgstr "jūdzes" +msgstr "Jūdzes" -#: netbox/dcim/choices.py:1955 netbox/netbox/choices.py:180 +#: netbox/dcim/choices.py:1976 netbox/netbox/choices.py:180 #: netbox/templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Pēdas" -#: netbox/dcim/choices.py:2003 -msgid "Redundant" -msgstr "Liekais" - #: netbox/dcim/choices.py:2024 -msgid "Single phase" -msgstr "Vienfāze" +msgid "Redundant" +msgstr "Redundants" -#: netbox/dcim/choices.py:2025 +#: netbox/dcim/choices.py:2045 +msgid "Single phase" +msgstr "Vienfāzes" + +#: netbox/dcim/choices.py:2046 msgid "Three-phase" msgstr "Trīsfāzu" -#: netbox/dcim/choices.py:2041 netbox/extras/choices.py:53 +#: netbox/dcim/choices.py:2062 netbox/extras/choices.py:53 #: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70 #: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Atspējots" -#: netbox/dcim/choices.py:2042 +#: netbox/dcim/choices.py:2063 msgid "Faulty" -msgstr "Kļūdīgs" +msgstr "Bojāts" #: netbox/dcim/fields.py:48 #, python-brace-format @@ -3862,8 +3766,9 @@ msgstr "Ir pilna dziļuma" #: netbox/dcim/filtersets.py:1323 netbox/dcim/forms/filtersets.py:920 #: netbox/dcim/forms/filtersets.py:1634 netbox/dcim/forms/filtersets.py:1979 -#: netbox/dcim/forms/model_forms.py:1915 netbox/dcim/models/devices.py:1313 -#: netbox/dcim/models/devices.py:1336 netbox/virtualization/filtersets.py:230 +#: netbox/dcim/forms/model_forms.py:1941 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1336 netbox/dcim/ui/panels.py:366 +#: netbox/dcim/ui/panels.py:504 netbox/virtualization/filtersets.py:230 #: netbox/virtualization/filtersets.py:318 #: netbox/virtualization/forms/filtersets.py:191 #: netbox/virtualization/forms/filtersets.py:245 @@ -3951,7 +3856,6 @@ msgstr "Virtuālā šasija (ID)" #: netbox/dcim/forms/object_create.py:329 netbox/dcim/tables/devices.py:215 #: netbox/netbox/navigation/menu.py:82 #: netbox/templates/dcim/device_edit.html:95 -#: netbox/templates/dcim/virtualchassis.html:10 #: netbox/templates/dcim/virtualchassis_edit.html:28 msgid "Virtual Chassis" msgstr "Virtuālā šasija" @@ -4011,7 +3915,7 @@ msgstr "Ir piešķirts" msgid "Is primary" msgstr "Ir primārais" -#: netbox/dcim/filtersets.py:2060 netbox/templates/dcim/interface.html:81 +#: netbox/dcim/filtersets.py:2060 #: netbox/virtualization/forms/model_forms.py:386 #: netbox/virtualization/ui/panels.py:62 msgid "802.1Q Mode" @@ -4028,27 +3932,25 @@ msgstr "Piešķirtais VID" #: netbox/dcim/filtersets.py:2074 netbox/dcim/forms/bulk_edit.py:1512 #: netbox/dcim/forms/bulk_import.py:1034 netbox/dcim/forms/filtersets.py:1687 -#: netbox/dcim/forms/model_forms.py:1555 +#: netbox/dcim/forms/model_forms.py:1581 #: netbox/dcim/models/device_components.py:867 -#: netbox/dcim/tables/devices.py:667 netbox/ipam/filtersets.py:360 -#: netbox/ipam/filtersets.py:372 netbox/ipam/filtersets.py:511 -#: netbox/ipam/filtersets.py:618 netbox/ipam/filtersets.py:630 -#: netbox/ipam/forms/bulk_edit.py:190 netbox/ipam/forms/bulk_edit.py:240 -#: netbox/ipam/forms/bulk_edit.py:281 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:248 netbox/ipam/forms/bulk_import.py:284 -#: netbox/ipam/forms/filtersets.py:70 netbox/ipam/forms/filtersets.py:194 -#: netbox/ipam/forms/filtersets.py:348 netbox/ipam/forms/model_forms.py:68 -#: netbox/ipam/forms/model_forms.py:203 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:303 netbox/ipam/forms/model_forms.py:466 -#: netbox/ipam/forms/model_forms.py:480 netbox/ipam/forms/model_forms.py:494 -#: netbox/ipam/models/ip.py:224 netbox/ipam/models/ip.py:518 -#: netbox/ipam/models/ip.py:747 netbox/ipam/models/vrfs.py:61 -#: netbox/ipam/tables/ip.py:187 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:311 netbox/ipam/tables/ip.py:413 -#: netbox/templates/dcim/interface.html:170 -#: netbox/templates/ipam/ipaddress.html:18 -#: netbox/templates/ipam/iprange.html:47 netbox/templates/ipam/prefix.html:19 -#: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 +#: netbox/dcim/tables/devices.py:667 netbox/dcim/ui/panels.py:507 +#: netbox/ipam/filtersets.py:360 netbox/ipam/filtersets.py:372 +#: netbox/ipam/filtersets.py:511 netbox/ipam/filtersets.py:618 +#: netbox/ipam/filtersets.py:630 netbox/ipam/forms/bulk_edit.py:190 +#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:281 +#: netbox/ipam/forms/bulk_import.py:163 netbox/ipam/forms/bulk_import.py:248 +#: netbox/ipam/forms/bulk_import.py:284 netbox/ipam/forms/filtersets.py:70 +#: netbox/ipam/forms/filtersets.py:194 netbox/ipam/forms/filtersets.py:348 +#: netbox/ipam/forms/model_forms.py:68 netbox/ipam/forms/model_forms.py:203 +#: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:303 +#: netbox/ipam/forms/model_forms.py:466 netbox/ipam/forms/model_forms.py:480 +#: netbox/ipam/forms/model_forms.py:494 netbox/ipam/models/ip.py:224 +#: netbox/ipam/models/ip.py:528 netbox/ipam/models/ip.py:757 +#: netbox/ipam/models/vrfs.py:61 netbox/ipam/tables/ip.py:187 +#: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:311 +#: netbox/ipam/tables/ip.py:413 netbox/ipam/ui/panels.py:102 +#: netbox/ipam/ui/panels.py:111 netbox/ipam/ui/panels.py:139 #: netbox/virtualization/forms/bulk_edit.py:226 #: netbox/virtualization/forms/bulk_import.py:218 #: netbox/virtualization/forms/filtersets.py:250 @@ -4071,9 +3973,9 @@ msgid "L2VPN (ID)" msgstr "L2VPN (ID)" #: netbox/dcim/filtersets.py:2092 netbox/dcim/forms/filtersets.py:1692 -#: netbox/dcim/tables/devices.py:607 netbox/ipam/filtersets.py:1087 -#: netbox/ipam/forms/filtersets.py:613 netbox/ipam/tables/vlans.py:116 -#: netbox/templates/dcim/interface.html:104 netbox/templates/ipam/vlan.html:82 +#: netbox/dcim/tables/devices.py:607 netbox/dcim/ui/panels.py:487 +#: netbox/ipam/filtersets.py:1087 netbox/ipam/forms/filtersets.py:613 +#: netbox/ipam/tables/vlans.py:116 netbox/ipam/ui/panels.py:206 #: netbox/virtualization/forms/filtersets.py:255 #: netbox/vpn/forms/bulk_import.py:285 netbox/vpn/forms/filtersets.py:268 #: netbox/vpn/forms/model_forms.py:407 netbox/vpn/forms/model_forms.py:425 @@ -4087,10 +3989,9 @@ msgid "VLAN Translation Policy (ID)" msgstr "VLAN pārveides politika (ID)" #: netbox/dcim/filtersets.py:2105 netbox/dcim/forms/filtersets.py:1658 -#: netbox/dcim/forms/model_forms.py:1572 +#: netbox/dcim/forms/model_forms.py:1598 #: netbox/dcim/models/device_components.py:668 #: netbox/ipam/forms/filtersets.py:531 netbox/ipam/forms/model_forms.py:703 -#: netbox/templates/ipam/vlantranslationpolicy.html:11 #: netbox/virtualization/forms/bulk_edit.py:231 #: netbox/virtualization/forms/filtersets.py:265 #: netbox/virtualization/forms/model_forms.py:364 @@ -4130,9 +4031,6 @@ msgid "LAG interface (ID)" msgstr "LAG interfeiss (ID)" #: netbox/dcim/filtersets.py:2185 netbox/dcim/tables/devices.py:1194 -#: netbox/templates/dcim/interface.html:149 -#: netbox/templates/dcim/macaddress.html:11 -#: netbox/templates/dcim/macaddress.html:14 #: netbox/virtualization/ui/panels.py:71 msgid "MAC Address" msgstr "MAC adrese" @@ -4141,15 +4039,14 @@ msgstr "MAC adrese" msgid "Primary MAC address (ID)" msgstr "Primārā MAC adrese (ID)" -#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1559 +#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1585 #: netbox/virtualization/filtersets.py:331 #: netbox/virtualization/forms/model_forms.py:302 msgid "Primary MAC address" msgstr "Primārā MAC adrese" #: netbox/dcim/filtersets.py:2225 netbox/dcim/filtersets.py:2237 -#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1895 -#: netbox/templates/dcim/virtualdevicecontext.html:15 +#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1921 msgid "Virtual Device Context" msgstr "Virtuālās iekārtas konteksts" @@ -4191,7 +4088,7 @@ msgstr "Galvenais (ID)" #: netbox/dcim/filtersets.py:2464 msgid "Master (name)" -msgstr "Galvenais (vārds)" +msgstr "Galvenais (nosaukums)" #: netbox/dcim/filtersets.py:2553 netbox/dcim/forms/filtersets.py:1233 msgid "Unterminated" @@ -4208,6 +4105,7 @@ msgstr "Barošanas panelis (ID)" #: netbox/netbox/forms/bulk_import.py:27 netbox/netbox/forms/mixins.py:131 #: netbox/netbox/tables/columns.py:495 #: netbox/templates/circuits/inc/circuit_termination.html:29 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:29 #: netbox/templates/generic/bulk_edit.html:78 #: netbox/templates/inc/panels/tags.html:5 #: netbox/utilities/forms/fields/fields.py:101 @@ -4215,14 +4113,12 @@ msgid "Tags" msgstr "Birkas" #: netbox/dcim/forms/bulk_create.py:116 netbox/dcim/forms/filtersets.py:1842 -#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:595 -#: netbox/dcim/forms/model_forms.py:661 netbox/dcim/forms/object_create.py:155 +#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:621 +#: netbox/dcim/forms/model_forms.py:687 netbox/dcim/forms/object_create.py:155 #: netbox/dcim/forms/object_create.py:256 netbox/dcim/tables/devices.py:169 -#: netbox/templates/dcim/frontport.html:132 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/panels/front_port_mappings.html:9 +#: netbox/templates/dcim/panels/rear_port_mappings.html:9 #: netbox/templates/dcim/panels/virtual_chassis_members.html:9 -#: netbox/templates/dcim/rearport.html:126 -#: netbox/templates/dcim/virtualchassis.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:67 msgid "Position" msgstr "Pozīcija" @@ -4252,7 +4148,7 @@ msgid "Contact E-mail" msgstr "Kontaktpersonas E-pasts" #: netbox/dcim/forms/bulk_edit.py:152 netbox/dcim/forms/bulk_import.py:138 -#: netbox/dcim/forms/model_forms.py:147 +#: netbox/dcim/forms/model_forms.py:157 msgid "Time zone" msgstr "Laika josla" @@ -4267,17 +4163,16 @@ msgstr "Laika josla" #: netbox/dcim/forms/filtersets.py:546 netbox/dcim/forms/filtersets.py:695 #: netbox/dcim/forms/filtersets.py:801 netbox/dcim/forms/filtersets.py:884 #: netbox/dcim/forms/filtersets.py:1096 netbox/dcim/forms/filtersets.py:1907 -#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:223 -#: netbox/dcim/forms/model_forms.py:354 netbox/dcim/forms/model_forms.py:366 -#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:540 -#: netbox/dcim/forms/model_forms.py:1239 netbox/dcim/forms/model_forms.py:1722 +#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:249 +#: netbox/dcim/forms/model_forms.py:380 netbox/dcim/forms/model_forms.py:392 +#: netbox/dcim/forms/model_forms.py:462 netbox/dcim/forms/model_forms.py:566 +#: netbox/dcim/forms/model_forms.py:1265 netbox/dcim/forms/model_forms.py:1748 #: netbox/dcim/forms/object_import.py:188 netbox/dcim/tables/devices.py:101 #: netbox/dcim/tables/devices.py:176 netbox/dcim/tables/devices.py:1035 #: netbox/dcim/tables/devicetypes.py:87 netbox/dcim/tables/devicetypes.py:322 #: netbox/dcim/tables/modules.py:47 netbox/dcim/tables/modules.py:90 #: netbox/dcim/tables/racks.py:51 netbox/dcim/tables/racks.py:121 -#: netbox/templates/dcim/inventoryitem.html:48 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/panels/installed_module.html:13 #: netbox/templates/dcim/panels/module_type.html:7 msgid "Manufacturer" msgstr "Ražotājs" @@ -4302,7 +4197,7 @@ msgid "Height (U)" msgstr "Augstums (U)" #: netbox/dcim/forms/bulk_edit.py:244 netbox/dcim/forms/bulk_edit.py:387 -#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:39 +#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:41 msgid "Descending units" msgstr "Dilstošas vienības" @@ -4336,10 +4231,10 @@ msgstr "Montāžas dziļums" #: netbox/dcim/forms/filtersets.py:362 netbox/dcim/forms/filtersets.py:441 #: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:651 #: netbox/dcim/forms/filtersets.py:683 netbox/dcim/forms/filtersets.py:755 -#: netbox/dcim/forms/model_forms.py:237 netbox/dcim/forms/model_forms.py:318 +#: netbox/dcim/forms/model_forms.py:263 netbox/dcim/forms/model_forms.py:344 #: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:55 #: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:162 -#: netbox/dcim/views.py:891 netbox/dcim/views.py:1019 +#: netbox/dcim/views.py:893 netbox/dcim/views.py:1021 #: netbox/extras/forms/bulk_edit.py:57 netbox/extras/forms/bulk_edit.py:137 #: netbox/extras/forms/bulk_edit.py:191 netbox/extras/forms/bulk_edit.py:219 #: netbox/extras/forms/bulk_edit.py:315 netbox/extras/forms/bulk_edit.py:341 @@ -4350,7 +4245,7 @@ msgstr "Montāžas dziļums" #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 #: netbox/templates/extras/tableconfig.html:41 -#: netbox/templates/extras/tag.html:32 netbox/templates/ipam/role.html:30 +#: netbox/templates/extras/tag.html:32 msgid "Weight" msgstr "Svars" @@ -4369,18 +4264,18 @@ msgid "Weight unit" msgstr "Svara vienība" #: netbox/dcim/forms/bulk_edit.py:290 netbox/dcim/forms/filtersets.py:335 -#: netbox/dcim/forms/model_forms.py:233 netbox/dcim/forms/model_forms.py:272 +#: netbox/dcim/forms/model_forms.py:259 netbox/dcim/forms/model_forms.py:298 msgid "Rack Type" msgstr "Statnes veids" #: netbox/dcim/forms/bulk_edit.py:292 netbox/dcim/forms/bulk_edit.py:440 -#: netbox/dcim/forms/model_forms.py:236 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/model_forms.py:262 netbox/dcim/forms/model_forms.py:343 msgid "Outer Dimensions" msgstr "Ārējie izmēri" -#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:238 -#: netbox/dcim/forms/model_forms.py:319 netbox/dcim/ui/panels.py:135 -#: netbox/dcim/views.py:885 netbox/dcim/views.py:1017 +#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:345 netbox/dcim/ui/panels.py:137 +#: netbox/dcim/views.py:887 netbox/dcim/views.py:1019 #: netbox/extras/tables/tables.py:278 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 #: netbox/templates/extras/imageattachment.html:40 @@ -4388,8 +4283,8 @@ msgid "Dimensions" msgstr "Izmēri" #: netbox/dcim/forms/bulk_edit.py:297 netbox/dcim/forms/filtersets.py:336 -#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:240 -#: netbox/dcim/views.py:890 netbox/dcim/views.py:1018 +#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:266 +#: netbox/dcim/views.py:892 netbox/dcim/views.py:1020 #: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "Numerācija" @@ -4400,13 +4295,14 @@ msgid "Rack type" msgstr "Statnes veids" #: netbox/dcim/forms/bulk_edit.py:363 netbox/dcim/forms/bulk_edit.py:708 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/templates/dcim/modulebay.html:70 +#: netbox/dcim/forms/bulk_edit.py:763 msgid "Serial Number" msgstr "Sērijas numurs" #: netbox/dcim/forms/bulk_edit.py:366 netbox/dcim/forms/filtersets.py:429 #: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1116 #: netbox/dcim/forms/filtersets.py:1914 +#: netbox/templates/dcim/panels/installed_module.html:25 msgid "Asset tag" msgstr "Inventāra numurs" @@ -4427,13 +4323,12 @@ msgstr "Gaisa plūsmas virziens" #: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/filtersets.py:501 #: netbox/dcim/forms/filtersets.py:874 netbox/dcim/forms/filtersets.py:1086 #: netbox/dcim/forms/filtersets.py:1186 netbox/dcim/forms/filtersets.py:1325 -#: netbox/dcim/forms/model_forms.py:282 netbox/dcim/forms/model_forms.py:326 -#: netbox/dcim/forms/model_forms.py:586 netbox/dcim/forms/model_forms.py:871 +#: netbox/dcim/forms/model_forms.py:308 netbox/dcim/forms/model_forms.py:352 +#: netbox/dcim/forms/model_forms.py:612 netbox/dcim/forms/model_forms.py:897 #: netbox/dcim/forms/object_create.py:303 netbox/dcim/tables/devices.py:165 #: netbox/dcim/tables/power.py:67 netbox/dcim/tables/racks.py:204 #: netbox/ipam/forms/filtersets.py:486 #: netbox/templates/dcim/inc/cable_termination.html:16 -#: netbox/templates/dcim/powerfeed.html:28 #: netbox/templates/dcim/rack/base.html:4 #: netbox/virtualization/forms/model_forms.py:107 msgid "Rack" @@ -4443,14 +4338,14 @@ msgstr "Statne" #: netbox/dcim/forms/filtersets.py:360 netbox/dcim/forms/filtersets.py:440 #: netbox/dcim/forms/filtersets.py:532 netbox/dcim/forms/filtersets.py:677 #: netbox/dcim/forms/filtersets.py:822 netbox/dcim/forms/filtersets.py:1043 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:787 -#: netbox/dcim/forms/model_forms.py:1790 +#: netbox/dcim/forms/model_forms.py:470 netbox/dcim/forms/model_forms.py:813 +#: netbox/dcim/forms/model_forms.py:1816 #: netbox/templates/dcim/device_edit.html:22 msgid "Hardware" msgstr "Aparatūra" #: netbox/dcim/forms/bulk_edit.py:490 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:397 msgid "Default platform" msgstr "Noklusējuma platforma" @@ -4467,29 +4362,29 @@ msgstr "U augstums" msgid "Exclude from utilization" msgstr "Neiekļaut statnes aizpildījumā" -#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:385 -#: netbox/dcim/forms/model_forms.py:1022 netbox/dcim/forms/model_forms.py:1064 -#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1119 -#: netbox/dcim/forms/model_forms.py:1140 netbox/dcim/forms/model_forms.py:1180 -#: netbox/dcim/forms/model_forms.py:1198 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:411 +#: netbox/dcim/forms/model_forms.py:1048 netbox/dcim/forms/model_forms.py:1090 +#: netbox/dcim/forms/model_forms.py:1117 netbox/dcim/forms/model_forms.py:1145 +#: netbox/dcim/forms/model_forms.py:1166 netbox/dcim/forms/model_forms.py:1206 +#: netbox/dcim/forms/model_forms.py:1224 #: netbox/dcim/forms/object_create.py:119 netbox/dcim/tables/devicetypes.py:84 -#: netbox/dcim/ui/panels.py:125 netbox/templates/dcim/devicebay.html:52 +#: netbox/dcim/ui/panels.py:127 msgid "Device Type" msgstr "iekārtas tips" -#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:412 -#: netbox/dcim/views.py:1590 netbox/extras/forms/model_forms.py:601 +#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:438 +#: netbox/dcim/views.py:1592 netbox/extras/forms/model_forms.py:601 msgid "Schema" msgstr "Shēma" #: netbox/dcim/forms/bulk_edit.py:549 netbox/dcim/forms/bulk_edit.py:556 #: netbox/dcim/forms/bulk_edit.py:787 netbox/dcim/forms/bulk_import.py:460 #: netbox/dcim/forms/bulk_import.py:1459 netbox/dcim/forms/filtersets.py:690 -#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:418 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/tables/modules.py:43 +#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:444 +#: netbox/dcim/forms/model_forms.py:457 netbox/dcim/tables/modules.py:43 #: netbox/extras/forms/filtersets.py:413 #: netbox/extras/forms/model_forms.py:626 netbox/extras/tables/tables.py:627 -#: netbox/templates/account/base.html:7 netbox/templates/dcim/cable.html:23 +#: netbox/templates/account/base.html:7 #: netbox/templates/extras/configcontext.html:21 #: netbox/templates/inc/user_menu.html:38 netbox/vpn/forms/bulk_edit.py:213 #: netbox/vpn/forms/filtersets.py:203 netbox/vpn/forms/model_forms.py:378 @@ -4497,22 +4392,21 @@ msgid "Profile" msgstr "Profils" #: netbox/dcim/forms/bulk_edit.py:588 netbox/dcim/forms/filtersets.py:1379 -#: netbox/dcim/forms/model_forms.py:443 netbox/dcim/forms/model_forms.py:1023 -#: netbox/dcim/forms/model_forms.py:1065 netbox/dcim/forms/model_forms.py:1092 -#: netbox/dcim/forms/model_forms.py:1120 netbox/dcim/forms/model_forms.py:1141 -#: netbox/dcim/forms/model_forms.py:1181 netbox/dcim/forms/model_forms.py:1199 +#: netbox/dcim/forms/model_forms.py:469 netbox/dcim/forms/model_forms.py:1049 +#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1118 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1167 +#: netbox/dcim/forms/model_forms.py:1207 netbox/dcim/forms/model_forms.py:1225 #: netbox/dcim/forms/object_create.py:120 netbox/dcim/tables/modules.py:52 -#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2848 -#: netbox/templates/dcim/modulebay.html:66 +#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2851 msgid "Module Type" msgstr "Moduļa tips" -#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:388 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:414 msgid "Chassis" msgstr "Šasija" #: netbox/dcim/forms/bulk_edit.py:611 netbox/dcim/models/devices.py:390 -#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:142 +#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:144 msgid "VM role" msgstr "VM loma" @@ -4522,8 +4416,8 @@ msgstr "VM loma" #: netbox/dcim/forms/bulk_import.py:561 netbox/dcim/forms/bulk_import.py:686 #: netbox/dcim/forms/bulk_import.py:690 netbox/dcim/forms/filtersets.py:775 #: netbox/dcim/forms/filtersets.py:806 netbox/dcim/forms/filtersets.py:925 -#: netbox/dcim/forms/model_forms.py:509 netbox/dcim/forms/model_forms.py:546 -#: netbox/dcim/forms/model_forms.py:670 +#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:572 +#: netbox/dcim/forms/model_forms.py:696 #: netbox/virtualization/forms/bulk_import.py:145 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/filtersets.py:207 @@ -4533,20 +4427,21 @@ msgstr "Konfigurācijas veidne" #: netbox/dcim/forms/bulk_edit.py:657 netbox/dcim/forms/bulk_edit.py:1040 #: netbox/dcim/forms/bulk_import.py:592 netbox/dcim/forms/filtersets.py:133 -#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:616 -#: netbox/dcim/forms/model_forms.py:986 netbox/dcim/forms/model_forms.py:1003 +#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:642 +#: netbox/dcim/forms/model_forms.py:1012 netbox/dcim/forms/model_forms.py:1029 #: netbox/extras/filtersets.py:729 +#: netbox/templates/dcim/panels/installed_device.html:13 msgid "Device type" msgstr "iekārtas tips" #: netbox/dcim/forms/bulk_edit.py:668 netbox/dcim/forms/bulk_import.py:573 -#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:624 +#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:650 msgid "Device role" msgstr "iekārtas loma" #: netbox/dcim/forms/bulk_edit.py:691 netbox/dcim/forms/bulk_import.py:598 #: netbox/dcim/forms/filtersets.py:789 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/model_forms.py:557 netbox/dcim/forms/model_forms.py:629 +#: netbox/dcim/forms/model_forms.py:583 netbox/dcim/forms/model_forms.py:655 #: netbox/dcim/tables/devices.py:191 netbox/extras/filtersets.py:745 #: netbox/virtualization/forms/bulk_edit.py:131 #: netbox/virtualization/forms/bulk_import.py:135 @@ -4558,7 +4453,7 @@ msgstr "Platforma" #: netbox/dcim/forms/bulk_edit.py:716 netbox/dcim/forms/bulk_import.py:617 #: netbox/dcim/forms/filtersets.py:830 netbox/dcim/forms/filtersets.py:1000 -#: netbox/dcim/forms/model_forms.py:638 netbox/dcim/tables/devices.py:211 +#: netbox/dcim/forms/model_forms.py:664 netbox/dcim/tables/devices.py:211 #: netbox/extras/filtersets.py:778 netbox/extras/forms/filtersets.py:406 #: netbox/ipam/forms/filtersets.py:457 netbox/ipam/forms/filtersets.py:491 #: netbox/virtualization/filtersets.py:148 @@ -4587,7 +4482,8 @@ msgid "Virtualization" msgstr "Virtualizācija" #: netbox/dcim/forms/bulk_edit.py:744 netbox/dcim/forms/bulk_import.py:759 -#: netbox/dcim/forms/model_forms.py:765 netbox/dcim/forms/model_forms.py:1011 +#: netbox/dcim/forms/model_forms.py:791 netbox/dcim/forms/model_forms.py:1037 +#: netbox/templates/dcim/panels/installed_module.html:17 msgid "Module type" msgstr "Moduļa tips" @@ -4597,25 +4493,15 @@ msgstr "Moduļa tips" #: netbox/dcim/forms/bulk_edit.py:1146 netbox/dcim/forms/bulk_edit.py:1173 #: netbox/dcim/forms/bulk_edit.py:1200 netbox/dcim/forms/bulk_edit.py:1218 #: netbox/dcim/forms/bulk_edit.py:1236 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/object_create.py:48 netbox/templates/dcim/cable.html:36 -#: netbox/templates/dcim/consoleport.html:32 -#: netbox/templates/dcim/consoleserverport.html:32 -#: netbox/templates/dcim/devicebay.html:28 -#: netbox/templates/dcim/frontport.html:32 +#: netbox/dcim/forms/object_create.py:48 #: netbox/templates/dcim/inc/panels/inventory_items.html:19 -#: netbox/templates/dcim/interface.html:42 -#: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:34 -#: netbox/templates/dcim/poweroutlet.html:32 -#: netbox/templates/dcim/powerport.html:32 -#: netbox/templates/dcim/rearport.html:32 +#: netbox/templates/dcim/panels/component_inventory_items.html:9 #: netbox/templates/extras/customfield.html:26 #: netbox/templates/generic/bulk_import.html:193 msgid "Label" msgstr "Etiķete" #: netbox/dcim/forms/bulk_edit.py:807 netbox/dcim/forms/filtersets.py:1224 -#: netbox/templates/dcim/cable.html:54 msgid "Length" msgstr "Garums" @@ -4625,34 +4511,29 @@ msgid "Length unit" msgstr "Garuma vienība" #: netbox/dcim/forms/bulk_edit.py:830 -#: netbox/templates/dcim/virtualchassis.html:13 msgid "Domain" msgstr "Domēns" #: netbox/dcim/forms/bulk_edit.py:886 netbox/dcim/forms/bulk_import.py:1646 -#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:865 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:891 msgid "Power panel" msgstr "Strāvas panelis" #: netbox/dcim/forms/bulk_edit.py:908 netbox/dcim/forms/bulk_import.py:1682 #: netbox/dcim/forms/filtersets.py:1338 -#: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Piegāde" #: netbox/dcim/forms/bulk_edit.py:914 netbox/dcim/forms/bulk_import.py:1687 #: netbox/dcim/forms/filtersets.py:1343 -#: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "fāze" #: netbox/dcim/forms/bulk_edit.py:920 netbox/dcim/forms/filtersets.py:1348 -#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Spriegums" #: netbox/dcim/forms/bulk_edit.py:924 netbox/dcim/forms/filtersets.py:1352 -#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Strāvas stiprums" @@ -4665,7 +4546,7 @@ msgid "Maximum draw" msgstr "Maksimālā jauda" #: netbox/dcim/forms/bulk_edit.py:1018 -#: netbox/dcim/models/device_component_templates.py:292 +#: netbox/dcim/models/device_component_templates.py:282 #: netbox/dcim/models/device_components.py:440 msgid "Maximum power draw (watts)" msgstr "Maksimālais jaudas patēriņš (vati)" @@ -4675,14 +4556,14 @@ msgid "Allocated draw" msgstr "Piešķirtā jauda" #: netbox/dcim/forms/bulk_edit.py:1024 -#: netbox/dcim/models/device_component_templates.py:299 +#: netbox/dcim/models/device_component_templates.py:289 #: netbox/dcim/models/device_components.py:447 msgid "Allocated power draw (watts)" msgstr "Piešķirtais jaudas patēriņš (vati)" #: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_import.py:892 -#: netbox/dcim/forms/model_forms.py:1080 netbox/dcim/forms/model_forms.py:1445 -#: netbox/dcim/forms/model_forms.py:1774 netbox/dcim/forms/object_import.py:56 +#: netbox/dcim/forms/model_forms.py:1106 netbox/dcim/forms/model_forms.py:1471 +#: netbox/dcim/forms/model_forms.py:1800 netbox/dcim/forms/object_import.py:56 msgid "Power port" msgstr "Strāvas ports" @@ -4691,23 +4572,23 @@ msgid "Feed leg" msgstr "Barošanas kāja" #: netbox/dcim/forms/bulk_edit.py:1112 netbox/dcim/forms/bulk_edit.py:1433 -#: netbox/dcim/forms/filtersets.py:1719 +#: netbox/dcim/forms/filtersets.py:1719 netbox/dcim/ui/panels.py:478 msgid "Management only" msgstr "Tikai vadība" #: netbox/dcim/forms/bulk_edit.py:1122 netbox/dcim/forms/bulk_edit.py:1439 #: netbox/dcim/forms/bulk_import.py:985 netbox/dcim/forms/filtersets.py:1643 #: netbox/dcim/forms/filtersets.py:1728 netbox/dcim/forms/object_import.py:91 -#: netbox/dcim/models/device_component_templates.py:462 -#: netbox/dcim/models/device_components.py:839 +#: netbox/dcim/models/device_component_templates.py:452 +#: netbox/dcim/models/device_components.py:839 netbox/dcim/ui/panels.py:480 msgid "PoE mode" msgstr "PoE režīms" #: netbox/dcim/forms/bulk_edit.py:1128 netbox/dcim/forms/bulk_edit.py:1445 #: netbox/dcim/forms/bulk_import.py:991 netbox/dcim/forms/filtersets.py:1648 #: netbox/dcim/forms/filtersets.py:1733 netbox/dcim/forms/object_import.py:96 -#: netbox/dcim/models/device_component_templates.py:469 -#: netbox/dcim/models/device_components.py:846 +#: netbox/dcim/models/device_component_templates.py:459 +#: netbox/dcim/models/device_components.py:846 netbox/dcim/ui/panels.py:481 msgid "PoE type" msgstr "PoE tips" @@ -4716,36 +4597,26 @@ msgstr "PoE tips" msgid "Wireless role" msgstr "Bezvada loma" -#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:786 -#: netbox/dcim/forms/model_forms.py:1390 netbox/dcim/tables/devices.py:330 -#: netbox/templates/dcim/consoleport.html:24 -#: netbox/templates/dcim/consoleserverport.html:24 -#: netbox/templates/dcim/frontport.html:24 -#: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/modulebay.html:26 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/poweroutlet.html:24 -#: netbox/templates/dcim/powerport.html:24 -#: netbox/templates/dcim/rearport.html:24 +#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:812 +#: netbox/dcim/forms/model_forms.py:1416 netbox/dcim/tables/devices.py:330 +#: netbox/templates/dcim/panels/installed_module.html:9 msgid "Module" msgstr "Modulis" #: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/tables/devices.py:746 -#: netbox/templates/dcim/interface.html:134 +#: netbox/dcim/ui/panels.py:495 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1472 +#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1498 msgid "Virtual device contexts" msgstr "Virtuālo iekārtu konteksti" #: netbox/dcim/forms/bulk_edit.py:1424 netbox/dcim/forms/bulk_import.py:819 #: netbox/dcim/forms/bulk_import.py:845 netbox/dcim/forms/filtersets.py:1429 #: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1607 -#: netbox/dcim/tables/devices.py:651 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 -#: netbox/templates/dcim/consoleport.html:40 -#: netbox/templates/dcim/consoleserverport.html:40 +#: netbox/dcim/tables/devices.py:651 netbox/dcim/ui/panels.py:474 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:64 msgid "Speed" msgstr "Ātrums" @@ -4762,7 +4633,7 @@ msgid "Mode" msgstr "Režīms" #: netbox/dcim/forms/bulk_edit.py:1461 netbox/dcim/forms/bulk_import.py:1000 -#: netbox/dcim/forms/model_forms.py:1521 netbox/ipam/forms/bulk_import.py:177 +#: netbox/dcim/forms/model_forms.py:1547 netbox/ipam/forms/bulk_import.py:177 #: netbox/ipam/forms/filtersets.py:582 netbox/ipam/models/vlans.py:93 #: netbox/virtualization/forms/bulk_edit.py:205 #: netbox/virtualization/forms/bulk_import.py:184 @@ -4771,16 +4642,15 @@ msgid "VLAN group" msgstr "VLAN grupa" #: netbox/dcim/forms/bulk_edit.py:1470 netbox/dcim/forms/bulk_import.py:1007 -#: netbox/dcim/forms/model_forms.py:1527 netbox/dcim/tables/devices.py:616 -#: netbox/templates/dcim/interface.html:91 -#: netbox/virtualization/forms/bulk_edit.py:213 +#: netbox/dcim/forms/model_forms.py:1553 netbox/dcim/tables/devices.py:616 +#: netbox/dcim/ui/panels.py:484 netbox/virtualization/forms/bulk_edit.py:213 #: netbox/virtualization/forms/bulk_import.py:191 #: netbox/virtualization/forms/model_forms.py:331 msgid "Untagged VLAN" msgstr "Neatzīmēts VLAN" #: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/bulk_import.py:1014 -#: netbox/dcim/forms/model_forms.py:1536 netbox/dcim/tables/devices.py:622 +#: netbox/dcim/forms/model_forms.py:1562 netbox/dcim/tables/devices.py:622 #: netbox/virtualization/forms/bulk_edit.py:221 #: netbox/virtualization/forms/bulk_import.py:198 #: netbox/virtualization/forms/model_forms.py:340 @@ -4796,30 +4666,29 @@ msgid "Remove tagged VLANs" msgstr "Noņemt atzīmētos VLAN" #: netbox/dcim/forms/bulk_edit.py:1502 netbox/dcim/forms/bulk_import.py:1027 -#: netbox/dcim/forms/model_forms.py:1545 +#: netbox/dcim/forms/model_forms.py:1571 #: netbox/virtualization/forms/bulk_import.py:211 #: netbox/virtualization/forms/model_forms.py:349 msgid "Q-in-Q Service VLAN" msgstr "Q-in-Q pakalpojums VLAN" -#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1508 +#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1534 #: netbox/wireless/forms/filtersets.py:26 msgid "Wireless LAN group" msgstr "Bezvadu tīkla grupa" -#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1513 -#: netbox/dcim/tables/devices.py:660 netbox/netbox/navigation/menu.py:156 -#: netbox/templates/dcim/interface.html:355 +#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1539 +#: netbox/dcim/tables/devices.py:660 netbox/dcim/ui/panels.py:561 +#: netbox/netbox/navigation/menu.py:156 #: netbox/wireless/tables/wirelesslan.py:20 msgid "Wireless LANs" msgstr "Bezvadu tīkli" #: netbox/dcim/forms/bulk_edit.py:1531 netbox/dcim/forms/filtersets.py:1574 -#: netbox/dcim/forms/model_forms.py:1579 netbox/ipam/forms/bulk_edit.py:227 -#: netbox/ipam/forms/bulk_edit.py:313 netbox/ipam/forms/filtersets.py:191 -#: netbox/netbox/navigation/menu.py:112 -#: netbox/templates/dcim/interface.html:146 -#: netbox/templates/ipam/prefix.html:91 +#: netbox/dcim/forms/model_forms.py:1605 netbox/dcim/ui/panels.py:499 +#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:313 +#: netbox/ipam/forms/filtersets.py:191 netbox/netbox/navigation/menu.py:112 +#: netbox/templates/ipam/panels/prefix_addressing.html:4 #: netbox/virtualization/forms/filtersets.py:218 #: netbox/virtualization/forms/model_forms.py:369 #: netbox/virtualization/ui/panels.py:68 @@ -4827,26 +4696,25 @@ msgid "Addressing" msgstr "Adresošana" #: netbox/dcim/forms/bulk_edit.py:1532 netbox/dcim/forms/filtersets.py:821 -#: netbox/dcim/forms/model_forms.py:1580 +#: netbox/dcim/forms/model_forms.py:1606 #: netbox/virtualization/forms/model_forms.py:370 msgid "Operation" msgstr "Darbība" #: netbox/dcim/forms/bulk_edit.py:1533 netbox/dcim/forms/filtersets.py:1575 -#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1124 -#: netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1150 +#: netbox/dcim/forms/model_forms.py:1608 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1581 -#: netbox/templates/dcim/interface.html:110 -#: netbox/virtualization/forms/bulk_edit.py:237 +#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1607 +#: netbox/dcim/ui/panels.py:491 netbox/virtualization/forms/bulk_edit.py:237 #: netbox/virtualization/forms/model_forms.py:371 msgid "Related Interfaces" msgstr "Saistītie interfeisi" #: netbox/dcim/forms/bulk_edit.py:1536 netbox/dcim/forms/filtersets.py:1576 -#: netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1611 #: netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/filtersets.py:219 #: netbox/virtualization/forms/model_forms.py:374 @@ -4954,7 +4822,7 @@ msgstr "Vecāk-vieta" msgid "Rack's location (if any)" msgstr "Statnes atrašanās telpa (ja tāda ir)" -#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:331 +#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:357 #: netbox/dcim/tables/racks.py:209 #: netbox/templates/dcim/rackreservation.html:7 msgid "Units" @@ -5035,7 +4903,7 @@ msgid "Assigned platform" msgstr "Piešķirtā platforma" #: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/bulk_import.py:614 -#: netbox/dcim/forms/model_forms.py:651 +#: netbox/dcim/forms/model_forms.py:677 msgid "Virtual chassis" msgstr "Virtuālā šasija" @@ -5051,7 +4919,7 @@ msgstr "Piešķirtā telpa (ja tāda ir)" msgid "Assigned rack (if any)" msgstr "Piešķirtā statne (ja tāda ir)" -#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:634 msgid "Face" msgstr "Seja" @@ -5075,7 +4943,7 @@ msgstr "Iekārtas nodalījums, kurā šī iekārta ir uzstādīta (bērnu ierīc msgid "The device in which this module is installed" msgstr "Iekārta, kurā šis modulis ir uzstādīts" -#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:755 +#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:781 msgid "Module bay" msgstr "Moduļu nodalījums" @@ -5087,7 +4955,7 @@ msgstr "Moduļa nodalījums, kurā šis modulis ir uzstādīts" msgid "The type of module" msgstr "Moduļa veids" -#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:773 +#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:799 msgid "Replicate components" msgstr "Atkārtojiet komponentus" @@ -5099,11 +4967,11 @@ msgstr "" "Automātiski aizpildīt komponentus, kas saistīti ar šo moduļa tipu (pēc " "noklusējuma iespējots)" -#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:779 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:805 msgid "Adopt components" msgstr "Pieņemt komponentus" -#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:782 +#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:808 msgid "Adopt already existing components" msgstr "Pieņemt jau esošos komponentus" @@ -5128,13 +4996,13 @@ msgstr "Vietējais strāvas ports, kas baro šo kontaktligzdu" msgid "Electrical phase (for three-phase circuits)" msgstr "Elektriskā fāze (trīsfāžu pieslēgumam)" -#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1483 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1509 #: netbox/virtualization/forms/bulk_import.py:168 #: netbox/virtualization/forms/model_forms.py:310 msgid "Parent interface" msgstr "Vecāk-interfeiss" -#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1491 +#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1517 #: netbox/virtualization/forms/bulk_import.py:175 #: netbox/virtualization/forms/model_forms.py:318 msgid "Bridged interface" @@ -5360,6 +5228,7 @@ msgid "Side B name" msgstr "B puses nosaukums" #: netbox/dcim/forms/bulk_import.py:1456 +#: netbox/templates/dcim/panels/connection.html:60 #: netbox/wireless/forms/bulk_import.py:133 msgid "Connection status" msgstr "Savienojuma statuss" @@ -5393,11 +5262,9 @@ msgstr "" "{color} neatbilda nevienam izmantotajam krāsu nosaukumam un bija garāks par " "sešām rakstzīmēm: nederīgs hex." -#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:900 +#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:926 #: netbox/dcim/tables/devices.py:1124 #: netbox/templates/dcim/panels/virtual_chassis_members.html:10 -#: netbox/templates/dcim/virtualchassis.html:17 -#: netbox/templates/dcim/virtualchassis.html:57 msgid "Master" msgstr "Galvenais" @@ -5425,9 +5292,8 @@ msgstr "Barošanas veids (maiņstrāvas/līdzstrāva)" msgid "Single or three-phase" msgstr "Viena vai trīsfāzu" -#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1875 -#: netbox/dcim/ui/panels.py:108 -#: netbox/templates/dcim/virtualdevicecontext.html:30 +#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1901 +#: netbox/dcim/ui/panels.py:110 netbox/dcim/ui/panels.py:354 #: netbox/virtualization/ui/panels.py:28 msgid "Primary IPv4" msgstr "Primārais IPv4" @@ -5436,9 +5302,8 @@ msgstr "Primārais IPv4" msgid "IPv4 address with mask, e.g. 1.2.3.4/24" msgstr "IPv4 adrese ar masku, piemēram, 1.2.3.4/24" -#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1884 -#: netbox/dcim/ui/panels.py:113 -#: netbox/templates/dcim/virtualdevicecontext.html:41 +#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1910 +#: netbox/dcim/ui/panels.py:115 netbox/dcim/ui/panels.py:359 #: netbox/virtualization/ui/panels.py:33 msgid "Primary IPv6" msgstr "Primārais IPv6" @@ -5448,8 +5313,7 @@ msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64" msgstr "IPv6 adrese ar prefiksa garumu, piemēram, 2001:db8: :1/64" #: netbox/dcim/forms/common.py:19 netbox/dcim/models/device_components.py:615 -#: netbox/templates/dcim/interface.html:57 -#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/dcim/ui/panels.py:476 netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/ui/panels.py:61 msgid "MTU" msgstr "MTU" @@ -5490,18 +5354,15 @@ msgstr "Nevar adoptēt {model} {name} jo tas jau pieder modulim" msgid "A {model} named {name} already exists" msgstr "A {model} nosaukts {name} jau pastāv" -#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:853 +#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:879 #: netbox/dcim/tables/power.py:63 #: netbox/templates/dcim/inc/cable_termination.html:40 -#: netbox/templates/dcim/powerfeed.html:24 -#: netbox/templates/dcim/powerpanel.html:19 #: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "Barošanas panelis" -#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:880 -#: netbox/templates/dcim/powerfeed.html:21 -#: netbox/templates/dcim/powerport.html:80 +#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:906 +#: netbox/dcim/views.py:3106 msgid "Power Feed" msgstr "Strāvas padeve" @@ -5523,18 +5384,18 @@ msgstr "Vecāku grupa" #: netbox/dcim/forms/filtersets.py:347 msgid "Rack count" -msgstr "Plauktu skaits" +msgstr "Statņu skaits" #: netbox/dcim/forms/filtersets.py:439 msgid "Function" msgstr "Funkcija" -#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:341 -#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1164 +#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:367 +#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1166 msgid "Reservation" msgstr "Rezervācija" -#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:390 +#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:416 #: netbox/netbox/views/generic/feature_views.py:97 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" @@ -5557,7 +5418,7 @@ msgstr "Apakšiekārtas loma" msgid "Module count" msgstr "Moduļu skaits" -#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:548 msgid "Device Role" msgstr "Iekārtas loma" @@ -5595,16 +5456,9 @@ msgstr "Aizņemts" #: netbox/dcim/forms/filtersets.py:1420 netbox/dcim/forms/filtersets.py:1460 #: netbox/dcim/forms/filtersets.py:1500 netbox/dcim/forms/filtersets.py:1535 #: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/tables/devices.py:381 -#: netbox/dcim/tables/devices.py:682 netbox/ipam/tables/vlans.py:174 +#: netbox/dcim/tables/devices.py:682 netbox/dcim/ui/panels.py:377 +#: netbox/dcim/ui/panels.py:516 netbox/ipam/tables/vlans.py:174 #: netbox/templates/circuits/inc/circuit_termination_fields.html:16 -#: netbox/templates/dcim/consoleport.html:55 -#: netbox/templates/dcim/consoleserverport.html:55 -#: netbox/templates/dcim/frontport.html:66 -#: netbox/templates/dcim/interface.html:215 -#: netbox/templates/dcim/powerfeed.html:110 -#: netbox/templates/dcim/poweroutlet.html:73 -#: netbox/templates/dcim/powerport.html:59 -#: netbox/templates/dcim/rearport.html:66 msgid "Connection" msgstr "Savienojums" @@ -5620,13 +5474,12 @@ msgstr "Veids" msgid "Mgmt only" msgstr "Tikai MGMT" -#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1567 -#: netbox/dcim/models/device_components.py:792 -#: netbox/templates/dcim/interface.html:160 +#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1593 +#: netbox/dcim/models/device_components.py:792 netbox/dcim/ui/panels.py:506 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1653 +#: netbox/dcim/forms/filtersets.py:1653 netbox/dcim/ui/panels.py:482 #: netbox/virtualization/forms/filtersets.py:260 msgid "802.1Q mode" msgstr "802.1Q režīms" @@ -5643,18 +5496,17 @@ msgstr "Kanāla frekvence (MHz)" msgid "Channel width (MHz)" msgstr "Kanāla platums (MHz)" -#: netbox/dcim/forms/filtersets.py:1680 -#: netbox/templates/dcim/interface.html:96 +#: netbox/dcim/forms/filtersets.py:1680 netbox/dcim/ui/panels.py:485 msgid "Transmit power (dBm)" msgstr "Pārraides jauda (dBm)" #: netbox/dcim/forms/filtersets.py:1751 netbox/dcim/forms/filtersets.py:1795 -#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable.html:12 -#: netbox/templates/dcim/cable_trace.html:46 -#: netbox/templates/dcim/frontport.html:74 +#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/htmx/cable_edit.html:53 #: netbox/templates/dcim/inc/connection_endpoints.html:4 -#: netbox/templates/dcim/rearport.html:74 +#: netbox/templates/dcim/panels/connection.html:14 +#: netbox/templates/dcim/panels/connection.html:51 +#: netbox/templates/dcim/panels/interface_connection.html:13 #: netbox/templates/dcim/trace/cable.html:7 msgid "Cable" msgstr "Kabelis" @@ -5694,9 +5546,7 @@ msgstr "Darbības vēriena veids" #: netbox/ipam/forms/bulk_edit.py:382 netbox/ipam/forms/filtersets.py:195 #: netbox/ipam/forms/model_forms.py:225 netbox/ipam/forms/model_forms.py:603 #: netbox/ipam/forms/model_forms.py:613 netbox/ipam/tables/ip.py:193 -#: netbox/ipam/tables/vlans.py:40 netbox/templates/ipam/prefix.html:48 -#: netbox/templates/ipam/vlangroup.html:38 -#: netbox/virtualization/forms/bulk_edit.py:74 +#: netbox/ipam/tables/vlans.py:40 netbox/virtualization/forms/bulk_edit.py:74 #: netbox/virtualization/forms/filtersets.py:53 #: netbox/virtualization/forms/model_forms.py:73 #: netbox/virtualization/tables/clusters.py:81 @@ -5764,31 +5614,31 @@ msgstr "" "Kopējais priekšējo ostu pozīciju skaits ({frontport_count}) jāatbilst " "izvēlētajam aizmugurējo ostu pozīciju skaitam ({rearport_count})." -#: netbox/dcim/forms/model_forms.py:158 +#: netbox/dcim/forms/model_forms.py:169 msgid "Contact Info" msgstr "Kontaktpersonas informācija" -#: netbox/dcim/forms/model_forms.py:211 +#: netbox/dcim/forms/model_forms.py:237 msgid "Rack Role" msgstr "Statnes loma" -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:380 -#: netbox/dcim/forms/model_forms.py:551 +#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:406 +#: netbox/dcim/forms/model_forms.py:577 #: netbox/utilities/forms/fields/fields.py:58 msgid "Slug" msgstr "URL identifikators" -#: netbox/dcim/forms/model_forms.py:276 +#: netbox/dcim/forms/model_forms.py:302 msgid "Select a pre-defined rack type, or set physical characteristics below." msgstr "" "Izvēlieties iepriekš definētu statnes tipu vai iestatiet fiziskās īpašības " "zemāk." -#: netbox/dcim/forms/model_forms.py:284 +#: netbox/dcim/forms/model_forms.py:310 msgid "Inventory Control" msgstr "Krājumu kontrole" -#: netbox/dcim/forms/model_forms.py:333 +#: netbox/dcim/forms/model_forms.py:359 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -5796,35 +5646,35 @@ msgstr "" "Ar komatu atdalīts ciparu vienību ID saraksts. Diapazonu var norādīt, " "izmantojot defisi." -#: netbox/dcim/forms/model_forms.py:414 netbox/extras/forms/model_forms.py:603 +#: netbox/dcim/forms/model_forms.py:440 netbox/extras/forms/model_forms.py:603 msgid "Enter a valid JSON schema to define supported attributes." msgstr "Ievadiet derīgu JSON shēmu, lai definētu atbalstītos atribūtus." -#: netbox/dcim/forms/model_forms.py:445 +#: netbox/dcim/forms/model_forms.py:471 msgid "Profile & Attributes" msgstr "Profils un atribūti" -#: netbox/dcim/forms/model_forms.py:597 netbox/dcim/models/devices.py:579 +#: netbox/dcim/forms/model_forms.py:623 netbox/dcim/models/devices.py:579 msgid "The lowest-numbered unit occupied by the device" msgstr "Zemāk numurētā vienība, ko aizņem iekārta" -#: netbox/dcim/forms/model_forms.py:662 +#: netbox/dcim/forms/model_forms.py:688 msgid "The position in the virtual chassis this device is identified by" msgstr "Šīs iekārtas pozīciju virtuālajā šasijā identificē ar" -#: netbox/dcim/forms/model_forms.py:667 +#: netbox/dcim/forms/model_forms.py:693 msgid "The priority of the device in the virtual chassis" msgstr "Iekārtas prioritāte virtuālajā šasijā" -#: netbox/dcim/forms/model_forms.py:776 +#: netbox/dcim/forms/model_forms.py:802 msgid "Automatically populate components associated with this module type" msgstr "Automātiski aizpildiet komponentus, kas saistīti ar šo moduļa tipu" -#: netbox/dcim/forms/model_forms.py:882 +#: netbox/dcim/forms/model_forms.py:908 msgid "Characteristics" msgstr "Raksturlielumi" -#: netbox/dcim/forms/model_forms.py:1038 +#: netbox/dcim/forms/model_forms.py:1064 #, python-brace-format msgid "" "Alphanumeric ranges are supported for bulk creation. Mixed cases and types " @@ -5838,107 +5688,95 @@ msgstr "" "[0-9]). Marķieris {module}, ja tāds ir, tiks automātiski" " aizstāts ar pozīcijas vērtību, veidojot jaunu moduli." -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "Konsoles porta veidne" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "Konsoles servera porta veidne" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "Priekšējā porta veidne" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "Interfeisa veidne" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "Strāvas kontaktligzdas veidne" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "Barošanas porta veidne" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "Aizmugurējā porta veidne" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "Konsoles ports" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "Konsoles servera ports" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "Priekšējais ports" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "Aizmugurējais ports" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "Strāvas ports" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "Strāvas kontaktligzda" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "Komponentu sasaiste" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "InventoryItem var piešķirt tikai vienam komponentam." -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "LAG interfeiss" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "Filtrēt VLAN, kas pieejami sasaistei pēc grupas.." -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "Bērn-iekārta" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -5946,43 +5784,41 @@ msgstr "" "Bērn-iekārtas vispirms ir jāizveido un jāpiešķir vecāk-iekārtas vietai un " "statnei." -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "Konsoles ports" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "Konsoles servera ports" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "Priekšējais ports" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "Strāvas kontaktligzda" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "Aizmugurējais ports" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "Inventāra vienība" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "Inventāra vienuma loma" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "VM interfeiss" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -5996,7 +5832,7 @@ msgstr "VM interfeiss" msgid "Virtual Machine" msgstr "Virtuālā mašīna" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "MAC adresi var piešķirt tikai vienam objektam." @@ -6019,9 +5855,9 @@ msgstr "" "sagaidāmi." #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "Biedri" @@ -6217,136 +6053,136 @@ msgstr "" "Komponenta veidnei jābūt saistītai vai nu ar iekārtas tipu, vai ar moduļa " "tipu." -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "konsoles porta veidne" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "konsoles portu veidnes" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "konsoles servera porta veidne" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "konsoles servera portu veidnes" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "maksimālā jauda" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "piešķirtā jauda" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "barošanas porta veidne" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "barošanas portu veidnes" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "Piešķirtā jauda nedrīkst pārsniegt maksimālo jaudu ({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "barības kāja" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "Fāze (trīsfāžu padevēm)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "strāvas kontaktligzdas veidne" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "strāvas kontaktligzdas veidnes" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Vecāk-barošanas portam ({power_port}) jāpieder vienam un tam pašam iekārtas " "tipam" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Vecāku barošanas ports ({power_port}) jāpieder vienam un tam pašam moduļa " "tipam" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "tikai vadība" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "tilta interfeiss" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "bezvada loma" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "interfeisa veidne" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "interfeisa veidnes" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" "Tilta interfeisam ({bridge}) jāpieder vienam un tam pašam iekārtas tipam" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "" "Tilta interfeisam ({bridge}) jāpieder vienam un tam pašam moduļa tipam" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "" "Aizmugurējam portam ({rear_port}) jāpieder vienam un tam pašam iekārtas " "tipam" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "pozīcijas" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "priekšējā porta veidne" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "priekšējo portu veidnes" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " @@ -6355,15 +6191,15 @@ msgstr "" "Pozīciju skaits nedrīkst būt mazāks par kartēto aizmugurējo portu veidņu " "skaitu ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "aizmugurējā porta veidne" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "aizmugurējo portu veidnes" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " @@ -6372,33 +6208,33 @@ msgstr "" "Pozīciju skaits nedrīkst būt mazāks par kartēto priekšējo portu veidņu " "skaitu ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "pozīcija" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "Identifikators, uz kuru jānorāda, pārdēvējot uzstādītos komponentus" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "moduļa līča veidne" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "moduļu līča veidnes" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "iekārtas nodalījuma veidne" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "iekārtas nodalījumu veidnes" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -6407,21 +6243,21 @@ msgstr "" "Iekārtas tipa apakšiekārtas lomai ({device_type}) jābūt iestatītai uz " "“vecāku”, lai atļautu iekārtu nodalījumus." -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "daļas ID" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "Ražotāja piešķirtais detaļas identifikators" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "inventāra vienības veidne" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "inventāra vienību veidnes" @@ -6551,10 +6387,10 @@ msgid "tagged VLANs" msgstr "ar atzīmi VLAN" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "Q-in-Q SVLAN" @@ -7688,11 +7524,11 @@ msgstr "Pievienot komponentus" msgid "Disconnect Selected" msgstr "Atvienot atlasīto" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "Savineojums A" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "Savineojums B" @@ -7737,6 +7573,8 @@ msgstr "Krāsas nosaukums" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "Sasniedzams" @@ -7773,7 +7611,7 @@ msgstr "U augstums" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "IP adrese" @@ -7822,16 +7660,14 @@ msgid "Power outlets" msgstr "Strāvas kontaktligzdas" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7864,18 +7700,17 @@ msgid "Device Site" msgstr "Iekārtas vieta" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Moduļa nodalījums" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "Inventāra preces" @@ -7899,13 +7734,13 @@ msgstr "Maksimālā jauda (W)" msgid "Allocated draw (W)" msgstr "Piešķirtā jauda (W)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "IP adreses" @@ -7913,18 +7748,18 @@ msgstr "IP adreses" msgid "Primary MAC" msgstr "Primārais MAC" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "MAC adreses" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP grupas" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -7933,7 +7768,6 @@ msgid "Tunnel" msgstr "Tunelis" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Tikai vadība" @@ -7941,7 +7775,7 @@ msgstr "Tikai vadība" msgid "VDCs" msgstr "VDC" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "Virtuāls pieslēgums" @@ -7950,7 +7784,7 @@ msgstr "Virtuāls pieslēgums" msgid "Mappings" msgstr "Kartēšana" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "Uzstādītā iekārta" @@ -7974,7 +7808,7 @@ msgstr "Uzstādītais sērijas numurs" msgid "Installed Asset Tag" msgstr "Uzstādītā inventāra numurs" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "Uzstādītais modulis" @@ -7991,7 +7825,6 @@ msgid "Module Status" msgstr "Moduļa statuss" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "Komponents" @@ -8009,7 +7842,7 @@ msgstr "Statņu veidi" msgid "Device Types" msgstr "Iekārtu veidi" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "Moduļu veidi" @@ -8032,8 +7865,8 @@ msgstr "Pilna dziļuma" msgid "Device Count" msgstr "Iekārtu skaits" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -8043,8 +7876,8 @@ msgstr "Iekārtu skaits" msgid "Console Ports" msgstr "Konsoles porti" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -8054,8 +7887,8 @@ msgstr "Konsoles porti" msgid "Console Server Ports" msgstr "Konsoles servera porti" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -8065,8 +7898,8 @@ msgstr "Konsoles servera porti" msgid "Power Ports" msgstr "Strāvas porti" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -8076,8 +7909,8 @@ msgstr "Strāvas porti" msgid "Power Outlets" msgstr "Strāvas kontaktligzdas" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -8086,8 +7919,8 @@ msgstr "Strāvas kontaktligzdas" msgid "Front Ports" msgstr "Priekšējie porti" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -8097,16 +7930,16 @@ msgstr "Priekšējie porti" msgid "Rear Ports" msgstr "Aizmugurējie porti" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Iekārtas nodalījumi" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8121,11 +7954,10 @@ msgid "Module Count" msgstr "Moduļu skaits" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Strāvas padeves" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "Maksimālā izmantošana" @@ -8140,7 +7972,7 @@ msgid "Racks" msgstr "Statnes" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Augstums" @@ -8166,11 +7998,11 @@ msgstr "Maksimālais svars" #: netbox/dcim/tables/racks.py:83 msgid "Rack Count" -msgstr "Plauktu skaits" +msgstr "Statņu skaits" #: netbox/dcim/tables/racks.py:140 msgid "Space" -msgstr "Kosmosa" +msgstr "Vieta" #: netbox/dcim/tables/sites.py:22 netbox/dcim/tables/sites.py:41 #: netbox/extras/forms/filtersets.py:441 @@ -8188,85 +8020,123 @@ msgstr "VLAN grupas" msgid "Test case must set peer_termination_type" msgstr "Testa gadījumā jāiestata peer_termination_type" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} milimetri" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "Sērijas numurs" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "Maksimālais svars" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "Vadība" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "OOB IP" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "Vecāks/bērns" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "Modeļa nosaukums" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "Vecāk-elements" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "Daļas ID" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "Savienotā iekārta" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "Aizpildījums (piešķirtais)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "Elektriskās īpašības" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{}V" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{}A" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "Primārais interfeiss" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "Virtuālās šasijas locekļi" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "Jaudas izmantošana" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "VLAN pārveide" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "Atvienots {count} {type}" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "Apakšreģioni" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "Apakšgrupas" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "Statnē neievietotas iekārtas" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "Apakštelpas" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "Rezervācijas" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "Iekārtu apakšlomas" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "Apakšplatformas" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "Lietotnes servisi" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8274,41 +8144,69 @@ msgstr "Lietotnes servisi" msgid "Config Context" msgstr "Konfigurācijas konteksts" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "Renderēšanas konfigurācija" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "Virtuālās mašīnas" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "Virtuālo iekārtu konteksti" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "VLAN" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "LAG Members" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "VLAN pārveide" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "Tilta interfeisi" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "Apakšinterfeisi" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Uzstādīta iekārta {device} nodalījumā {device_bay}." -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Demontēta iekārta {device} no nodalījuma {device_bay}." -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "Bērni" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "Pievienots dalībnieks {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "Nevar noņemt galveno iekārtu{device} no virtuālās šasijas." -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Noņemts {device} no virtuālās šasijas {chassis}" @@ -8404,10 +8302,9 @@ msgstr "Jā" msgid "No" msgstr "Nē" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "Saite" @@ -8861,15 +8758,6 @@ msgstr "Viens vai vairāki piešķirtie objektu tipi" msgid "Field data type (e.g. text, integer, etc.)" msgstr "Lauka datu tips (piemēram, teksts, vesels skaitlis utt.)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "Objekta tips" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "Objekta tips (objektu vai vairāku objektu laukiem)" @@ -8973,7 +8861,7 @@ msgstr "Ierakstu klasifikācija" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -8999,15 +8887,14 @@ msgstr "Lietotājvārdi, kas atdalīti ar komatiem, pārklāti ar dubultām pēd #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "Grupas" @@ -9034,13 +8921,6 @@ msgstr "Lauka veids" msgid "Choices" msgstr "Izvēles" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "Dati" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10319,17 +10199,6 @@ msgstr "Faila paplašinājums" msgid "As Attachment" msgstr "Kā pielikums" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "Datu fails" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10345,9 +10214,8 @@ msgstr "Attēls" msgid "Filename" msgstr "Faila nosaukums" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "Izmērs" @@ -10401,6 +10269,7 @@ msgstr "" "Lūdzu, mēģiniet pārkonfigurēt logrīku vai noņemt to no informācijas paneļa." #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10543,7 +10412,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "Nešifrēts teksts" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "Pakalpojums" @@ -10606,7 +10475,6 @@ msgstr "L2VPN eksportēšana (identifikators)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "Prefikss" @@ -10656,7 +10524,6 @@ msgstr "VLAN numurs (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "Adrese" @@ -10713,7 +10580,7 @@ msgstr "FHRP grupa (ID)" msgid "IP address (ID)" msgstr "IP adrese (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "IP adrese" @@ -10780,8 +10647,8 @@ msgstr "Ir privāts" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "RIR" @@ -10792,15 +10659,13 @@ msgstr "Pievienošanas datums" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN grupa" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10815,7 +10680,7 @@ msgid "Prefix length" msgstr "Prefiksa garums" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "Ir kopfonds" @@ -10834,23 +10699,21 @@ msgstr "VLAN sasaiste" msgid "Treat as populated" msgstr "Izturieties kā apdzīvotu" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "DNS nosaukums" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protokols" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "Grupas ID" @@ -10871,9 +10734,8 @@ msgid "Authentication key" msgstr "Autentifikācijas atslēga" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -10902,23 +10764,22 @@ msgstr "Vieta un grupa" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "Politika" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "Ports" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "Importa route-target" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "Eksporta route-target" @@ -10948,7 +10809,6 @@ msgstr "Darbības vēriena ID" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "FHRP grupa" @@ -11057,7 +10917,7 @@ msgid "Exported by VRF" msgstr "Eksportē VRF" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "Privāts" @@ -11066,7 +10926,7 @@ msgstr "Privāts" msgid "Address family" msgstr "Adreses ģimene" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "Diapazons" @@ -11094,18 +10954,10 @@ msgstr "Iekārta/VM" msgid "Parent Prefix" msgstr "Vecāku prefikss" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "DNS nosaukums" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLAN" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "Satur VLAN ID" @@ -11123,26 +10975,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Q-in-Q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "VLAN ID" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "Route Target" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" -msgstr "Summārais prefikss" +msgstr "Agregētais prefikss" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "ASN diapazons" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "IP diapazons" @@ -11193,8 +11043,7 @@ msgstr "Virtuālā IP adrese" msgid "Assignment already exists" msgstr "Sasaiste jau pastāv" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "VLAN ID" @@ -11212,7 +11061,6 @@ msgstr "" "laidienā. Lietotāji tiek aicināti šim nolūkam izmantot VLAN grupas." #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "VLAN pārveides kārtula" @@ -11225,7 +11073,6 @@ msgstr "" "izmantojot defisi." #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "Lietotnes servisa veidne" @@ -11344,15 +11191,15 @@ msgstr "pievienošanas datums" #: netbox/ipam/models/ip.py:113 msgid "aggregate" -msgstr "summārais prefikss" +msgstr "agregētais prefikss" #: netbox/ipam/models/ip.py:114 msgid "aggregates" -msgstr "summārie prefiksi" +msgstr "Agregēte prefiksi" #: netbox/ipam/models/ip.py:127 msgid "Cannot create aggregate with /0 mask." -msgstr "Nevar izveidot summāro prefiksu ar /0 masku." +msgstr "Nevar izveidot agregēto prefiksu ar /0 masku." #: netbox/ipam/models/ip.py:139 #, python-brace-format @@ -11360,7 +11207,7 @@ msgid "" "Aggregates cannot overlap. {prefix} is already covered by an existing " "aggregate ({aggregate})." msgstr "" -"Summāraie prefiksi nevar pārklāties. {prefix} jau ir iekļauts esošā sumārajā" +"Agregētie prefiksi nevar pārklāties. {prefix} jau ir iekļauts esošā agregētā" " prefiksā ({aggregate})." #: netbox/ipam/models/ip.py:153 @@ -11369,8 +11216,8 @@ msgid "" "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " "({aggregate})." msgstr "" -"Prefiksi nevar pārklāties ar sumārim prefiksiem. {prefix} aptver esošu " -"sumāro prefiksu ({aggregate})." +"Prefiksi nevar pārklāties ar agregētiem prefiksiem. {prefix} aptver esošu " +"agregēto prefiksu ({aggregate})." #: netbox/ipam/models/ip.py:202 msgid "roles" @@ -11400,7 +11247,7 @@ msgstr "ir kopfonds" msgid "All IP addresses within this prefix are considered usable" msgstr "Visas IP adreses šajā prefiksā tiek uzskatītas par izmantojamām" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "atzīmēt kā izmantotu" @@ -11412,12 +11259,12 @@ msgstr "prefiksi" msgid "Cannot create prefix with /0 mask." msgstr "Nevar izveidot prefiksu ar /0 masku." -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "globālā tabula" @@ -11426,140 +11273,140 @@ msgstr "globālā tabula" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Atrasts prefiksa dublikāts {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "sākuma adrese" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "IPv4 vai IPv6 adrese (ar masku)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "beigu adrese" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "Šī diapazona darbības stāvoklis" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "Šī diapazona galvenā funkcija" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "atzīme apdzīvota" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "Novērst IP adrešu izveidi šajā diapazonā" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "Ziņot par vietu, kā pilnībā izmantotu" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "IP diapazons" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "IP diapazoni" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "Sākuma un beigu IP adreses versijām ir jāatbilst" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "Sākuma un beigu IP adreses maskām jāsakrīt" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "Noslēguma adresei jābūt lielākai par sākuma adresi ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Definētās adreses pārklājas ar diapazonu {overlapping_range} uz VRF {vrf}" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "Noteiktais diapazons pārsniedz maksimālo atbalstīto izmēru ({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "adrese" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "Šīs IP darbības statuss" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "Šī IP funkcionālā loma" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (iekšpusē)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "IP, kuram šī adrese ir “ārējais” IP" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" -msgstr "Resursdatora nosaukums vai FQDN (nav lieluma lieluma skaitlis)" +msgstr "Resursdatora nosaukums vai FQDN (nav reģistrjūtīgs)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "IP adreses" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "Nevar izveidot IP adresi ar /0 masku." -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip} ir tīkla ID, kas var netikt piešķirts saskarnei." -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "{ip} ir apraides adrese, kuru nedrīkst piešķirt interfeisam." -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Atrastas IP adreses dublikāts {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "Nevar izveidot IP adresi {ip} iekšējais diapazons {range}." -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" msgstr "" "Nevar mainīt IP adresi, kamēr tā ir apzīmēta kā mātes objekta primārais IP" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" msgstr "Nevar mainīt IP adresi, kamēr tā ir norādīta kā vecāk-objekta OOB IP" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "SLAAC statusu var piešķirt tikai IPv6 adresēm" @@ -11746,24 +11593,24 @@ msgstr "Pakalpojuma sniedzēju skaits" #: netbox/ipam/tables/ip.py:43 netbox/netbox/navigation/menu.py:189 #: netbox/netbox/navigation/menu.py:191 msgid "Aggregates" -msgstr "Summārie prefiksi" +msgstr "Agregētie prefiksi" #: netbox/ipam/tables/ip.py:73 msgid "Added" msgstr "Pievienots" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "Prefiksi" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "Izmantošana" @@ -11790,7 +11637,7 @@ msgid "Pool" msgstr "Kopfonds" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "Atzīmēts kā izmantots" @@ -11798,7 +11645,7 @@ msgstr "Atzīmēts kā izmantots" msgid "Start address" msgstr "Sākuma adrese" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "Atzīmēts ar apdzīvotu" @@ -11828,17 +11675,14 @@ msgid "VID" msgstr "VIDEO" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "Kārtulas" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "Vietējais VID" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "Attālinātais VID" @@ -11858,16 +11702,71 @@ msgstr "Importa mērķi" msgid "Export Targets" msgstr "Eksporta mērķi" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "Izveidot grupu" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Piešķirt grupu" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "Route Distinguisher" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "Unikāla IP telpa" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "AS numurs" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Ģimene" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "Pievienošanas datums" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "Sākuma adrese" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "Noslēguma adrese" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (ārpusē)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "Primārais IP" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "OOB IP" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "Autentifikācijas veids" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "Autentifikācijas atslēga" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Q-in-Q loma" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "Klientu VLAN" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "Pievienojiet VLAN" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -11905,26 +11804,79 @@ msgstr "" "DNS nosaukumos ir atļautas tikai burtciparu rakstzīmes, zvaigznītes, " "defises, periodi un pasvītrojumi" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "Iekārtas interfeisi" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "VM interfeisi" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "VRF importēšana" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "VRF eksportēšana" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "L2VPN importēšana" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "L2VPN eksportēšana" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "Dublēti prefiksi" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "Vecāku prefiksi" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "Apakšprefiksi" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "Apakšdiapazoni" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "Dublēti IP" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "Lietojumprogrammu pakalpojumi" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "Saistītie IP adresi" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "VLAN tulkošanas noteikumi" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "Pievienot kārtulu" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "Virtuālās IP adreses" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "Pievienot IP adresi" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "Pievienojiet prefiksu" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "Šis lauks var nebūt tukšs." @@ -12303,7 +12255,7 @@ msgstr "" #: netbox/netbox/forms/bulk_import.py:79 msgid "Name of the object's owner" -msgstr "Objekta īpašnieka vārds" +msgstr "Objekta īpašnieka nosaukums" #: netbox/netbox/forms/mixins.py:62 #, python-brace-format @@ -12430,7 +12382,6 @@ msgid "Contact Groups" msgstr "Kontaktpersonu grupas" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Kontaktpersonu lomas" @@ -12444,17 +12395,12 @@ msgstr "Statņu lomas" #: netbox/netbox/navigation/menu.py:57 msgid "Elevations" -msgstr "Paaugstinājumi" +msgstr "Izkārtojumi" #: netbox/netbox/navigation/menu.py:79 msgid "Modules" msgstr "Moduļi" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "Virtuālo iekārtu konteksti" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "Moduļa tipa profili" @@ -12468,12 +12414,11 @@ msgid "Device Components" msgstr "Iekārtas komponentes" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Inventāra vienumu lomas" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "Savienojumi" @@ -12503,7 +12448,7 @@ msgstr "Bezvadu tīklu grupas" #: netbox/netbox/navigation/menu.py:178 msgid "Prefix & VLAN Roles" -msgstr "Prefiksa & VLAN lomas" +msgstr "Prefiksu & VLAN lomas" #: netbox/netbox/navigation/menu.py:184 msgid "ASN Ranges" @@ -12514,7 +12459,6 @@ msgid "VLAN Translation Policies" msgstr "VLAN pārveides politikas" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "VLAN pārveides kārtulas" @@ -12593,9 +12537,8 @@ msgid "Circuit Terminations" msgstr "Pieslēguma savienojumi" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" -msgstr "Virtuāli pieslēgumi" +msgstr "Virtuālie pieslēgumi" #: netbox/netbox/navigation/menu.py:293 msgid "Virtual Circuit Types" @@ -12609,24 +12552,17 @@ msgstr "Virtuālu pieslēgumu savienojumi" msgid "Circuit Groups" msgstr "Pieslēgumu grupas" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "Grupu sasaiste" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "Pakalpojuma sniedzēji" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Pakalpojuma sniedzēju konti" #: netbox/netbox/navigation/menu.py:309 msgid "Provider Networks" -msgstr "Pakalpojuma sniedzēja tīkli" +msgstr "Pakalpojuma sniedzēju tīkli" #: netbox/netbox/navigation/menu.py:323 msgid "Power Panels" @@ -12716,7 +12652,7 @@ msgid "Journal Entries" msgstr "Žurnāla ieraksti" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Vēsture" @@ -12769,6 +12705,7 @@ msgstr "Pamatuzdevumi" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12787,8 +12724,9 @@ msgstr "Klons" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -12800,8 +12738,9 @@ msgstr "Rediģēt" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -13071,7 +13010,7 @@ msgstr "Manekens spraudnis" msgid "Copy" msgstr "Kopēt" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -13079,11 +13018,19 @@ msgstr "" "Nederīga dekodēšanas opcija: {decoding}! Jābūt vienam no " "{image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" +"Nederīga max_items vērtība: {max_items}! Jābūt pozitīvam veselam skaitlim " +"vai neuzstādītam." + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "GPS koordinātes" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "Saistītie objekti" @@ -13157,7 +13104,7 @@ msgstr "Lielapjoma dzēšana {count} {object_type}" #: netbox/netbox/views/generic/bulk_views.py:1023 #, python-brace-format msgid "Deleted {count} {object_type}" -msgstr "Svītrots {count} {object_type}" +msgstr "{count} {object_type} izdzēsts(i)" #: netbox/netbox/views/generic/bulk_views.py:1040 msgid "Deletion failed due to the presence of one or more dependent objects." @@ -13357,8 +13304,7 @@ msgid "Account Details" msgstr "Informācija par lietotāju" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "E-pasts" @@ -13380,16 +13326,15 @@ msgid "Assigned Groups" msgstr "Piešķirtās grupas" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13464,55 +13409,21 @@ msgstr "Avota kods" msgid "Community" msgstr "Kopiena" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "Ieŗikošanas datums" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "Izbeigšanas datums" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "Apmainīt pieslēgumu savienojumus" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "Aomainīt šos savienojumus pieslēgumam %(circuit)s?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "A puse" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Z puse" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "Piešķirt pieslēgumu" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "Pieslēgumu grupas sasaiste" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "Pievienot pieslēgumu" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "Pieslēguma tips" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "Savienojuma punkts" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "Atzīmēts kā savienots" @@ -13522,13 +13433,14 @@ msgstr "uz" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "Izsekošana" @@ -13542,37 +13454,30 @@ msgstr "Noņemiet kabeli" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "Atvienojiet" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "Pievienojiet" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "Pakāpeniski" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "Augšpus" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "Savstarpēja savienojums" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "Patch panelis/ports" @@ -13580,39 +13485,10 @@ msgstr "Patch panelis/ports" msgid "Add circuit" msgstr "Pievienojiet pieslēgumu" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "Pakalpojuma sniedzēja konts" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "Pievienot virtuālu pieslēgumu" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "Pievienot savienojumu" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "Virtuāla pieslēguma savienojums" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "Pievienojiet virtuālu pieslēgumu" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "Virtuāla pieslēguma tips" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "Konfigurācijas dati" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "Komentārs" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13635,31 +13511,11 @@ msgstr "Jauna vērtība" msgid "Changed" msgstr "Mainīts" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "baiti" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "SHA256 Hash" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "saturs" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "Pēdējo reizi sinhronizēts" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "Aizmugurējā daļa" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "Nav definēti parametri" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "Statņu izkārtojumi" @@ -13718,72 +13574,11 @@ msgstr "Datu fails, kas saistīts ar šo objektu, ir izdzēsts" msgid "Data Synced" msgstr "Dati sinhronizēti" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "Uzdevums" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "Izveidojis" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "Plānošana" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "katrs %(interval)s minūtes" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "Mainīt" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "Atšķirība" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "Iepriekšējais" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "Nākamais" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "Izveidots objekts" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "Izdzēsts objekts" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "Nav izmaiņu" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "Iepriekšmaiņas dati" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Brīdinājums: Ne-atomisku izmaiņu salīdzināšana ar iepriekšējo izmaiņu " -"ierakstu" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "Dati pēc izmaiņām" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Skatīt visu %(count)s Izmaiņas" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -13799,6 +13594,61 @@ msgstr "dienas" msgid "Indefinite" msgstr "Nenoteikts" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "Komentārs" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "Konfigurācijas dati" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "Nav definēti parametri" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "Atšķirība" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "Iepriekšējais" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "Nākamais" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "Izveidots objekts" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "Objekts izdzēsts" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "Nav izmaiņu" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "Dati pēc izmaiņām" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "Iepriekšmaiņas dati" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Brīdinājums: Ne-atomisku izmaiņu salīdzināšana ar iepriekšējo izmaiņu " +"ierakstu" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Skatīt visu %(count)s Izmaiņas" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "Nav uzstādīts" @@ -14088,22 +13938,13 @@ msgstr "Segmenti" msgid "Incomplete" msgstr "Nepilnīgs" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "Nav savienots" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "NAKTS" @@ -14111,7 +13952,7 @@ msgstr "NAKTS" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "Kopēt starpliktuvē" @@ -14161,10 +14002,6 @@ msgstr "Noņemt" msgid "Local Config Context Data" msgstr "Vietējās konfigurācijas konteksta dati" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "Iekārtas nodalījums" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -14192,34 +14029,6 @@ msgstr "Nodalījums" msgid "Add Device" msgstr "Pievienot ierīci" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "Pozīcijas" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "Atzīmēts kā savienots" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "Savienojuma statuss" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "Ostu kartēšana" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "Nav definētas kartēšanas" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "A puse" @@ -14245,6 +14054,8 @@ msgid "Path Status" msgstr "Ceļa statuss" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "Nav sasniedzams" @@ -14253,8 +14064,6 @@ msgid "Path Endpoints" msgstr "Ceļa galapunkti" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "Nav savienots" @@ -14300,94 +14109,10 @@ msgstr "Statnes izskārtojums" msgid "Loading..." msgstr "Ielādē..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "Pievienot apakšinterfeisu" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "Ātrums/duplekss" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "PoE režīms" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "PoE tips" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "Tilta interfeisi" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "VLAN pārveide" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "Bezvadu savienojums" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "Kanāls" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "Kanāla frekvence" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "MHz" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "Kanāla platums" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "Pievienot IP adresi" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "Pievienot MAC adresi" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "Vecāku vienums" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "Daļas ID" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "Inventāra numurs" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "Primārais interfeiss" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "Pievienot iekārtas tipu" @@ -14396,6 +14121,64 @@ msgstr "Pievienot iekārtas tipu" msgid "Add Module Type" msgstr "Pievienot moduļa veidu" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "Savienojuma statuss" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "Savienojuma galapunkti" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "Nav savienots" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "Ostu kartēšana" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "Nav definētas kartēšanas" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "Bezvadu savienojums" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "Kanāls" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "Kanāla frekvence" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "MHz" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "Kanāla platums" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "Nav piešķirts profils" @@ -14415,7 +14198,7 @@ msgstr "Piešķirts" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "VA" @@ -14439,44 +14222,6 @@ msgstr "Tikai attēli" msgid "Labels only" msgstr "Tikai etiķetes" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "Savienotā iekārta" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "Izmantošana (piešķirta" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "Elektriskās īpašības" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "A" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "Barības kāja" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "Pievienojiet barošanas plūsmas" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "Maksimālā jauda" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "Piešķirtā jauda" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "Pievienot rezervāciju" @@ -14499,7 +14244,7 @@ msgstr "Nav atrastas statnes" #: netbox/templates/dcim/rack_list.html:8 msgid "View Elevations" -msgstr "Skatīt pacēlumus" +msgstr "Skatīt izkārtojumus" #: netbox/templates/dcim/rackrole.html:7 msgid "Add Rack" @@ -14516,10 +14261,6 @@ msgstr "Pievienot vietu" msgid "Attachment" msgstr "Pielikums" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "Pievienot biedru" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14571,10 +14312,6 @@ msgstr "" "Vai esat pārliecināts, ka vēlaties noņemt %(device)s no " "virtuālās šasijas %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "Identifikators" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -14909,6 +14646,10 @@ msgstr "" msgid "Journal Entry" msgstr "Žurnāla ieraksts" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "Izveidojis" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "Paziņojumu grupa" @@ -15403,37 +15144,15 @@ msgstr "Izrakstīties" msgid "Log In" msgstr "Pieslēgties" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Ģimene" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "Pievienošanas datums" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "Pievienot prefiksu" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "AS numurs" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "Autentifikācijas veids" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "Autentifikācijas atslēga" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "Virtuālās IP adreses" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "Globāls" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15468,15 +15187,6 @@ msgstr "Rādīt pieejamo" msgid "Show All" msgstr "Rādīt visu" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "Globāls" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (ārpusē)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "Piešķiriet IP adresi" @@ -15493,51 +15203,43 @@ msgstr "Meklēšanas rezultāti" msgid "Bulk Add IP Addresses" msgstr "Lielapjoma IP adreses pievienošana" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "Sākuma adrese" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "Noslēguma adrese" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "Informācija par adresēšanu" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "Atzīmēts, kā pilnībā izmantots" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "Iekļautās IP" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "Pieejamie IP" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "Pirmais pieejamais IP" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "Detaļas par prefiksu" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "Tīkla adrese" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "Tīkla maska" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "Aizstājējzīmju maska" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "Apraides adrese" @@ -15549,58 +15251,14 @@ msgstr "Pievienojiet IP diapazonu" msgid "Hide Depth Indicators" msgstr "Slēpt dziļuma indikatorus" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" -msgstr "Pievienot summāro prefiksu" +msgstr "Pievienot agregēto prefiksu" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "VRF importēšana" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "VRF eksportēšana" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "L2VPN importēšana" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "L2VPN eksportēšana" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Q-in-Q loma" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "Pievienojiet prefiksu" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "Klientu VLAN" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "Pievienojiet VLAN" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "Pievienot VLAN" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "Pievienot kārtulu" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "Route Distinguisher" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "Unikāla IP telpa" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15668,61 +15326,14 @@ msgstr "" "Noklikšķiniet šeit lai mēģinātu vēlreiz ielādēt" " NetBox." -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "Kontaktpersona" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "Nosaukums" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "Tālrunis" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "Kontaktpersonu grupa" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "Pievienot kontaktpersonu grupu" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "Kontaktpersonas loma" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "Pievienot kontaktpersonu" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "Pievienot īrnieku" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "Īrnieku grupa" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "Pievienot īrnieku grupu" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -15833,16 +15444,28 @@ msgstr "IPsec politika" msgid "PFS Group" msgstr "PFS grupa" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "Pievienot savienojumu" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "Pievienot tuneli" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "Kanāla frekvence" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "MHz" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "Kanāla platums" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "Pievienojiet bezvadu tīklu" @@ -15877,6 +15500,20 @@ msgstr "Kontaktpersonas loma (ID)" msgid "Contact role (slug)" msgstr "Kontaktpersonas loma (URL identifikators)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "Kontaktpersona" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "Kontaktpersonas loma" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "Kontaktpersonu grupa" @@ -15909,6 +15546,15 @@ msgstr "Pievienot grupas" msgid "Remove groups" msgstr "Noņemt grupas" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "Nosaukums" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "Tālrunis" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -15921,6 +15567,17 @@ msgstr "" msgid "Assigned contact" msgstr "Sasaistītā kontaktpersona" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "Īrnieku grupa" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "Kontaktpersonu grupa" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "kontaktpersonu grupa" @@ -16022,6 +15679,14 @@ msgstr "Kontaktpersonas saite" msgid "Contact Description" msgstr "Kontaktpersonas arpaksts" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "Pievienot īrnieku grupu" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "Pievienot kontaktpersonu grupu" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -16046,7 +15711,7 @@ msgstr "Īpašnieks (ID)" #: netbox/users/filterset_mixins.py:38 netbox/users/filtersets.py:42 #: netbox/users/filtersets.py:94 msgid "Owner (name)" -msgstr "Īpašnieks (vārds)" +msgstr "Īpašnieks (nosaukums)" #: netbox/users/filtersets.py:47 netbox/users/filtersets.py:99 msgid "Permission (ID)" @@ -16062,7 +15727,7 @@ msgstr "Lietotāju grupa (ID)" #: netbox/users/filtersets.py:303 msgid "User group (name)" -msgstr "Lietotāju grupa (vārds)" +msgstr "Lietotāju grupa (nosaukums)" #: netbox/users/filtersets.py:314 msgid "User (username)" @@ -17039,7 +16704,7 @@ msgstr "Izslēgts" #: netbox/virtualization/choices.py:64 msgid "Last State" -msgstr "Pēdējā valsts" +msgstr "Pēdējais stāvoklis" #: netbox/virtualization/filtersets.py:53 msgid "Parent group (ID)" @@ -17293,10 +16958,6 @@ msgstr "Pievienotas {count} iekārtas klāsterim{cluster}" msgid "Assigned VLANs" msgstr "Piešķirtie VLAN" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "Apakšinterfeisi" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPsec - transports" diff --git a/netbox/translations/nl/LC_MESSAGES/django.mo b/netbox/translations/nl/LC_MESSAGES/django.mo index dfe2cad916fb0aff117d14b9ed5fb7b0f8715c33..b43d10d02d7b37a609e9d6e81e345be67b7f6b36 100644 GIT binary patch delta 76067 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

    BZEUH(u)=v@lh>-|eR&O&({ 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 diff --git a/netbox/translations/nl/LC_MESSAGES/django.po b/netbox/translations/nl/LC_MESSAGES/django.po index c87970322..8f6db88aa 100644 --- a/netbox/translations/nl/LC_MESSAGES/django.po +++ b/netbox/translations/nl/LC_MESSAGES/django.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-14 05:18+0000\n" +"POT-Creation-Date: 2026-03-31 05:31+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2026\n" "Language-Team: Dutch (https://app.transifex.com/netbox-community/teams/178115/nl/)\n" @@ -51,9 +51,9 @@ msgstr "Je wachtwoord is succesvol gewijzigd." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 #: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204 -#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1933 -#: netbox/dcim/choices.py:1991 netbox/dcim/choices.py:2058 -#: netbox/dcim/choices.py:2080 netbox/virtualization/choices.py:20 +#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1954 +#: netbox/dcim/choices.py:2012 netbox/dcim/choices.py:2079 +#: netbox/dcim/choices.py:2101 netbox/virtualization/choices.py:20 #: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18 #: netbox/vpn/choices.py:281 msgid "Planned" @@ -67,8 +67,8 @@ msgstr "Provisioning" #: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22 #: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155 #: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256 -#: netbox/dcim/choices.py:1990 netbox/dcim/choices.py:2057 -#: netbox/dcim/choices.py:2079 netbox/extras/tables/tables.py:642 +#: netbox/dcim/choices.py:2011 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:2100 netbox/extras/tables/tables.py:642 #: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49 #: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154 #: netbox/templates/extras/configcontext.html:29 @@ -80,8 +80,8 @@ msgid "Active" msgstr "Actief" #: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202 -#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:1989 -#: netbox/dcim/choices.py:2059 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:2010 +#: netbox/dcim/choices.py:2080 netbox/dcim/choices.py:2099 #: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44 msgid "Offline" msgstr "Offline" @@ -94,8 +94,9 @@ msgstr "Deprovisioning" msgid "Decommissioned" msgstr "Buiten gebruik" -#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2002 -#: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:153 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2023 +#: netbox/dcim/tables/devices.py:1208 +#: netbox/templates/dcim/interface/attrs/mac_address.html:3 #: netbox/tenancy/choices.py:17 msgid "Primary" msgstr "Primair" @@ -114,7 +115,8 @@ msgid "Inactive" msgstr "Inactief" #: netbox/circuits/choices.py:107 netbox/dcim/tables/devices.py:714 -#: netbox/templates/dcim/interface.html:293 netbox/vpn/choices.py:63 +#: netbox/templates/dcim/panels/interface_wireless.html:12 +#: netbox/vpn/choices.py:63 msgid "Peer" msgstr "Peer" @@ -190,9 +192,9 @@ msgstr "Sitegroep (slug)" #: netbox/dcim/forms/filtersets.py:1172 netbox/dcim/forms/filtersets.py:1268 #: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:2024 #: netbox/dcim/forms/filtersets.py:2048 netbox/dcim/forms/filtersets.py:2072 -#: netbox/dcim/forms/model_forms.py:155 netbox/dcim/forms/model_forms.py:183 -#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:570 -#: netbox/dcim/forms/model_forms.py:839 netbox/dcim/forms/object_create.py:294 +#: netbox/dcim/forms/model_forms.py:166 netbox/dcim/forms/model_forms.py:209 +#: netbox/dcim/forms/model_forms.py:280 netbox/dcim/forms/model_forms.py:596 +#: netbox/dcim/forms/model_forms.py:865 netbox/dcim/forms/object_create.py:294 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:26 #: netbox/dcim/tables/power.py:90 netbox/dcim/tables/racks.py:111 #: netbox/dcim/tables/racks.py:194 netbox/dcim/tables/sites.py:102 @@ -203,7 +205,6 @@ msgstr "Sitegroep (slug)" #: netbox/ipam/tables/vlans.py:90 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:36 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/ipam/vlan.html:23 #: netbox/templates/ipam/vlan_edit.html:52 #: netbox/virtualization/forms/bulk_edit.py:95 #: netbox/virtualization/forms/bulk_import.py:60 @@ -235,7 +236,6 @@ msgstr "ASN (ID)" #: netbox/circuits/filtersets.py:85 netbox/circuits/forms/filtersets.py:42 #: netbox/ipam/forms/model_forms.py:162 netbox/ipam/models/asns.py:137 #: netbox/ipam/models/asns.py:154 netbox/ipam/tables/asn.py:51 -#: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" @@ -332,14 +332,12 @@ msgstr "Zoeken" #: netbox/circuits/forms/filtersets.py:232 #: netbox/circuits/forms/filtersets.py:259 #: netbox/circuits/forms/filtersets.py:306 -#: netbox/circuits/forms/model_forms.py:139 -#: netbox/circuits/forms/model_forms.py:162 -#: netbox/circuits/forms/model_forms.py:260 +#: netbox/circuits/forms/model_forms.py:168 +#: netbox/circuits/forms/model_forms.py:191 +#: netbox/circuits/forms/model_forms.py:289 #: netbox/circuits/tables/circuits.py:103 #: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 -#: netbox/templates/circuits/circuit.html:15 -#: netbox/templates/circuits/circuitgroupassignment.html:30 -#: netbox/templates/circuits/circuittermination.html:19 +#: netbox/templates/circuits/panels/circuit_termination.html:7 #: netbox/templates/dcim/inc/cable_termination.html:62 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -397,11 +395,9 @@ msgstr "Type virtueel circuit (slug)" #: netbox/circuits/forms/bulk_import.py:248 #: netbox/circuits/forms/filtersets.py:384 #: netbox/circuits/forms/filtersets.py:390 -#: netbox/circuits/forms/model_forms.py:338 -#: netbox/circuits/forms/model_forms.py:353 +#: netbox/circuits/forms/model_forms.py:367 +#: netbox/circuits/forms/model_forms.py:382 #: netbox/circuits/tables/virtual_circuits.py:84 -#: netbox/templates/circuits/virtualcircuit.html:20 -#: netbox/templates/circuits/virtualcircuittermination.html:38 msgid "Virtual circuit" msgstr "Virtueel circuit" @@ -414,12 +410,12 @@ msgstr "Interface (ID)" #: netbox/circuits/forms/bulk_edit.py:48 #: netbox/circuits/forms/filtersets.py:68 #: netbox/circuits/forms/model_forms.py:48 -#: netbox/circuits/tables/providers.py:32 netbox/dcim/forms/bulk_edit.py:134 -#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/model_forms.py:142 -#: netbox/dcim/tables/sites.py:74 netbox/ipam/models/asns.py:155 -#: netbox/ipam/tables/asn.py:37 netbox/ipam/views.py:270 -#: netbox/netbox/navigation/menu.py:182 netbox/netbox/navigation/menu.py:185 -#: netbox/templates/circuits/provider.html:23 +#: netbox/circuits/tables/providers.py:32 netbox/circuits/ui/panels.py:92 +#: netbox/dcim/forms/bulk_edit.py:134 netbox/dcim/forms/filtersets.py:225 +#: netbox/dcim/forms/model_forms.py:142 netbox/dcim/tables/sites.py:74 +#: netbox/ipam/models/asns.py:155 netbox/ipam/tables/asn.py:37 +#: netbox/ipam/views.py:365 netbox/netbox/navigation/menu.py:182 +#: netbox/netbox/navigation/menu.py:185 msgid "ASNs" msgstr "ASN's" @@ -439,9 +435,9 @@ msgstr "ASN's" #: netbox/circuits/forms/filtersets.py:349 #: netbox/circuits/forms/filtersets.py:385 #: netbox/circuits/forms/filtersets.py:408 -#: netbox/circuits/forms/model_forms.py:65 -#: netbox/circuits/forms/model_forms.py:80 -#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:90 +#: netbox/circuits/forms/model_forms.py:109 +#: netbox/circuits/forms/model_forms.py:140 #: netbox/circuits/tables/circuits.py:56 #: netbox/circuits/tables/circuits.py:107 #: netbox/circuits/tables/circuits.py:192 @@ -449,22 +445,14 @@ msgstr "ASN's" #: netbox/circuits/tables/providers.py:95 #: netbox/circuits/tables/virtual_circuits.py:46 #: netbox/circuits/tables/virtual_circuits.py:89 -#: netbox/templates/circuits/circuit.html:18 -#: netbox/templates/circuits/circuitgroupassignment.html:26 -#: netbox/templates/circuits/circuittermination.html:25 -#: netbox/templates/circuits/provider.html:20 -#: netbox/templates/circuits/provideraccount.html:20 -#: netbox/templates/circuits/providernetwork.html:20 -#: netbox/templates/circuits/virtualcircuit.html:23 -#: netbox/templates/circuits/virtualcircuittermination.html:26 +#: netbox/templates/circuits/panels/circuit_termination.html:11 #: netbox/templates/dcim/inc/cable_termination.html:58 -#: netbox/templates/dcim/interface.html:184 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:7 msgid "Provider" msgstr "Provider" #: netbox/circuits/forms/bulk_edit.py:86 -#: netbox/circuits/forms/filtersets.py:106 -#: netbox/templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/filtersets.py:106 netbox/circuits/ui/panels.py:106 msgid "Service ID" msgstr "Service-ID" @@ -483,12 +471,7 @@ msgstr "Service-ID" #: netbox/dcim/tables/devicetypes.py:214 netbox/dcim/tables/devicetypes.py:255 #: netbox/dcim/tables/devicetypes.py:274 netbox/dcim/tables/racks.py:30 #: netbox/extras/forms/bulk_edit.py:306 netbox/extras/tables/tables.py:552 -#: netbox/netbox/ui/attrs.py:194 netbox/templates/circuits/circuittype.html:30 -#: netbox/templates/circuits/virtualcircuittype.html:30 -#: netbox/templates/dcim/cable.html:44 netbox/templates/dcim/frontport.html:40 -#: netbox/templates/dcim/inventoryitemrole.html:26 -#: netbox/templates/dcim/poweroutlet.html:48 -#: netbox/templates/dcim/rearport.html:40 netbox/templates/extras/tag.html:26 +#: netbox/netbox/ui/attrs.py:213 netbox/templates/extras/tag.html:26 msgid "Color" msgstr "Kleur" @@ -522,27 +505,14 @@ msgstr "Kleur" #: netbox/dcim/forms/filtersets.py:1602 netbox/dcim/forms/filtersets.py:1707 #: netbox/dcim/forms/filtersets.py:1756 netbox/dcim/forms/filtersets.py:1775 #: netbox/dcim/forms/filtersets.py:1799 netbox/dcim/forms/filtersets.py:1818 -#: netbox/dcim/forms/model_forms.py:820 netbox/dcim/forms/model_forms.py:826 +#: netbox/dcim/forms/model_forms.py:846 netbox/dcim/forms/model_forms.py:852 #: netbox/dcim/forms/object_import.py:85 #: netbox/dcim/forms/object_import.py:114 #: netbox/dcim/forms/object_import.py:127 netbox/dcim/tables/devices.py:182 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 #: netbox/extras/forms/bulk_import.py:48 netbox/extras/tables/tables.py:510 #: netbox/extras/tables/tables.py:578 netbox/netbox/tables/tables.py:339 -#: netbox/templates/circuits/circuit.html:30 -#: netbox/templates/circuits/virtualcircuit.html:39 -#: netbox/templates/circuits/virtualcircuittermination.html:64 -#: netbox/templates/core/datasource.html:38 -#: netbox/templates/dcim/cable.html:15 -#: netbox/templates/dcim/consoleport.html:36 -#: netbox/templates/dcim/consoleserverport.html:36 -#: netbox/templates/dcim/frontport.html:36 -#: netbox/templates/dcim/interface.html:46 -#: netbox/templates/dcim/interface.html:244 -#: netbox/templates/dcim/powerfeed.html:32 -#: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 -#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/dcim/panels/interface_connection.html:68 #: netbox/templates/extras/eventrule.html:74 #: netbox/templates/wireless/panels/wirelesslink_interface.html:16 #: netbox/virtualization/forms/bulk_edit.py:50 @@ -563,10 +533,8 @@ msgstr "Type" #: netbox/circuits/forms/bulk_import.py:213 #: netbox/circuits/forms/filtersets.py:159 #: netbox/circuits/forms/filtersets.py:357 -#: netbox/circuits/forms/model_forms.py:117 -#: netbox/circuits/forms/model_forms.py:326 -#: netbox/templates/circuits/virtualcircuit.html:31 -#: netbox/templates/circuits/virtualcircuittermination.html:34 +#: netbox/circuits/forms/model_forms.py:146 +#: netbox/circuits/forms/model_forms.py:355 msgid "Provider account" msgstr "Provideraccount" @@ -608,19 +576,10 @@ msgstr "Provideraccount" #: netbox/ipam/forms/model_forms.py:503 netbox/ipam/tables/ip.py:182 #: netbox/ipam/tables/ip.py:261 netbox/ipam/tables/ip.py:314 #: netbox/ipam/tables/ip.py:389 netbox/ipam/tables/ip.py:416 -#: netbox/ipam/tables/vlans.py:98 netbox/templates/circuits/circuit.html:34 -#: netbox/templates/circuits/virtualcircuit.html:43 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:21 -#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:19 -#: netbox/templates/dcim/cable.html:19 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/powerfeed.html:36 -#: netbox/templates/dcim/poweroutlet.html:40 +#: netbox/ipam/tables/vlans.py:98 netbox/templates/core/rq_task.html:81 +#: netbox/templates/core/system.html:19 #: netbox/templates/extras/inc/script_list_content.html:35 -#: netbox/templates/ipam/ipaddress.html:37 -#: netbox/templates/ipam/iprange.html:61 netbox/templates/ipam/prefix.html:69 -#: netbox/templates/ipam/vlan.html:48 netbox/users/forms/filtersets.py:36 -#: netbox/users/forms/model_forms.py:223 +#: netbox/users/forms/filtersets.py:36 netbox/users/forms/model_forms.py:223 #: netbox/virtualization/forms/bulk_edit.py:60 #: netbox/virtualization/forms/bulk_edit.py:83 #: netbox/virtualization/forms/bulk_import.py:55 @@ -681,21 +640,9 @@ msgstr "Status" #: netbox/ipam/forms/filtersets.py:155 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:297 netbox/ipam/forms/filtersets.py:350 #: netbox/ipam/forms/filtersets.py:459 netbox/ipam/forms/filtersets.py:552 -#: netbox/ipam/tables/ip.py:419 netbox/templates/circuits/circuit.html:48 -#: netbox/templates/circuits/circuitgroup.html:36 -#: netbox/templates/circuits/virtualcircuit.html:47 -#: netbox/templates/dcim/cable.html:27 netbox/templates/dcim/powerfeed.html:44 -#: netbox/templates/dcim/virtualdevicecontext.html:52 -#: netbox/templates/ipam/aggregate.html:30 netbox/templates/ipam/asn.html:33 -#: netbox/templates/ipam/asnrange.html:29 -#: netbox/templates/ipam/ipaddress.html:28 -#: netbox/templates/ipam/iprange.html:65 netbox/templates/ipam/prefix.html:29 -#: netbox/templates/ipam/routetarget.html:17 -#: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vlangroup.html:50 -#: netbox/templates/ipam/vrf.html:20 netbox/templates/tenancy/tenant.html:17 -#: netbox/tenancy/forms/filtersets.py:55 netbox/tenancy/forms/forms.py:26 -#: netbox/tenancy/forms/forms.py:50 netbox/tenancy/forms/model_forms.py:51 -#: netbox/tenancy/tables/columns.py:50 +#: netbox/ipam/tables/ip.py:419 netbox/tenancy/forms/filtersets.py:55 +#: netbox/tenancy/forms/forms.py:26 netbox/tenancy/forms/forms.py:50 +#: netbox/tenancy/forms/model_forms.py:51 netbox/tenancy/tables/columns.py:50 #: netbox/virtualization/forms/bulk_edit.py:66 #: netbox/virtualization/forms/bulk_edit.py:126 #: netbox/virtualization/forms/bulk_import.py:67 @@ -730,8 +677,7 @@ msgstr "Vastleggingssnelheid (Kbps)" #: netbox/circuits/forms/bulk_edit.py:159 #: netbox/circuits/forms/filtersets.py:217 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/templates/circuits/circuit.html:38 +#: netbox/circuits/forms/model_forms.py:165 #: netbox/wireless/forms/bulk_edit.py:121 #: netbox/wireless/forms/filtersets.py:137 #: netbox/wireless/forms/model_forms.py:166 @@ -750,7 +696,7 @@ msgid "Distance unit" msgstr "Afstandseenheid" #: netbox/circuits/forms/bulk_edit.py:173 -#: netbox/circuits/forms/model_forms.py:141 +#: netbox/circuits/forms/model_forms.py:170 msgid "Service Parameters" msgstr "Serviceparameters" @@ -776,7 +722,7 @@ msgstr "Serviceparameters" #: netbox/dcim/forms/filtersets.py:1864 netbox/dcim/forms/filtersets.py:1879 #: netbox/dcim/forms/filtersets.py:1890 netbox/dcim/forms/filtersets.py:1936 #: netbox/dcim/forms/filtersets.py:1972 netbox/dcim/tables/modules.py:25 -#: netbox/dcim/views.py:1679 netbox/extras/forms/bulk_edit.py:94 +#: netbox/dcim/views.py:1681 netbox/extras/forms/bulk_edit.py:94 #: netbox/extras/forms/filtersets.py:48 netbox/extras/forms/filtersets.py:147 #: netbox/extras/forms/filtersets.py:226 netbox/extras/forms/filtersets.py:243 #: netbox/extras/forms/filtersets.py:275 netbox/extras/forms/filtersets.py:306 @@ -799,12 +745,12 @@ msgstr "Attributen" #: netbox/circuits/forms/bulk_edit.py:175 #: netbox/circuits/forms/bulk_edit.py:317 -#: netbox/circuits/forms/model_forms.py:142 -#: netbox/circuits/forms/model_forms.py:238 -#: netbox/circuits/forms/model_forms.py:340 -#: netbox/dcim/forms/model_forms.py:157 netbox/dcim/forms/model_forms.py:198 -#: netbox/dcim/forms/model_forms.py:285 netbox/dcim/forms/model_forms.py:342 -#: netbox/dcim/forms/model_forms.py:883 netbox/dcim/forms/model_forms.py:1897 +#: netbox/circuits/forms/model_forms.py:171 +#: netbox/circuits/forms/model_forms.py:267 +#: netbox/circuits/forms/model_forms.py:369 +#: netbox/dcim/forms/model_forms.py:168 netbox/dcim/forms/model_forms.py:224 +#: netbox/dcim/forms/model_forms.py:311 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/forms/model_forms.py:909 netbox/dcim/forms/model_forms.py:1923 #: netbox/ipam/forms/bulk_edit.py:383 netbox/ipam/forms/model_forms.py:70 #: netbox/ipam/forms/model_forms.py:87 netbox/ipam/forms/model_forms.py:118 #: netbox/ipam/forms/model_forms.py:139 netbox/ipam/forms/model_forms.py:163 @@ -839,34 +785,9 @@ msgstr "Tenants" #: netbox/extras/tables/tables.py:97 netbox/ipam/tables/vlans.py:214 #: netbox/ipam/tables/vlans.py:241 netbox/netbox/forms/bulk_edit.py:79 #: netbox/netbox/forms/bulk_edit.py:91 netbox/netbox/forms/bulk_edit.py:103 -#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 -#: netbox/templates/circuits/circuit.html:69 -#: netbox/templates/circuits/circuitgroup.html:32 -#: netbox/templates/circuits/circuittype.html:26 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:83 -#: netbox/templates/circuits/provider.html:33 -#: netbox/templates/circuits/provideraccount.html:32 -#: netbox/templates/circuits/providernetwork.html:32 -#: netbox/templates/circuits/virtualcircuit.html:56 -#: netbox/templates/circuits/virtualcircuittermination.html:68 -#: netbox/templates/circuits/virtualcircuittype.html:26 -#: netbox/templates/core/datasource.html:58 -#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:40 -#: netbox/templates/dcim/consoleport.html:44 -#: netbox/templates/dcim/consoleserverport.html:44 -#: netbox/templates/dcim/devicebay.html:32 -#: netbox/templates/dcim/frontport.html:54 -#: netbox/templates/dcim/interface.html:69 -#: netbox/templates/dcim/inventoryitem.html:64 -#: netbox/templates/dcim/inventoryitemrole.html:22 -#: netbox/templates/dcim/macaddress.html:21 -#: netbox/templates/dcim/modulebay.html:42 -#: netbox/templates/dcim/powerfeed.html:40 -#: netbox/templates/dcim/poweroutlet.html:44 -#: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 -#: netbox/templates/dcim/rearport.html:54 -#: netbox/templates/dcim/virtualchassis.html:21 +#: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:85 +#: netbox/templates/core/plugin.html:80 #: netbox/templates/extras/configcontext.html:25 #: netbox/templates/extras/configcontextprofile.html:17 #: netbox/templates/extras/configtemplate.html:17 @@ -881,23 +802,6 @@ msgstr "Tenants" #: netbox/templates/extras/tableconfig.html:17 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:151 -#: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 -#: netbox/templates/ipam/asnrange.html:38 -#: netbox/templates/ipam/fhrpgroup.html:34 -#: netbox/templates/ipam/ipaddress.html:55 -#: netbox/templates/ipam/iprange.html:74 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/rir.html:26 netbox/templates/ipam/role.html:26 -#: netbox/templates/ipam/routetarget.html:21 -#: netbox/templates/ipam/service.html:52 -#: netbox/templates/ipam/servicetemplate.html:27 -#: netbox/templates/ipam/vlan.html:62 netbox/templates/ipam/vlangroup.html:34 -#: netbox/templates/ipam/vlantranslationpolicy.html:18 -#: netbox/templates/ipam/vlantranslationrule.html:26 -#: netbox/templates/ipam/vrf.html:33 netbox/templates/tenancy/contact.html:77 -#: netbox/templates/tenancy/contactgroup.html:25 -#: netbox/templates/tenancy/contactrole.html:22 -#: netbox/templates/tenancy/tenant.html:24 -#: netbox/templates/tenancy/tenantgroup.html:33 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:12 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:12 #: netbox/users/forms/bulk_edit.py:62 netbox/users/forms/bulk_edit.py:80 @@ -909,7 +813,7 @@ msgid "Description" msgstr "Omschrijving" #: netbox/circuits/forms/bulk_edit.py:192 -#: netbox/circuits/forms/model_forms.py:170 +#: netbox/circuits/forms/model_forms.py:199 #: netbox/dcim/forms/bulk_import.py:1419 netbox/dcim/forms/bulk_import.py:1444 msgid "Termination type" msgstr "Soort beëindiging" @@ -917,9 +821,9 @@ msgstr "Soort beëindiging" #: netbox/circuits/forms/bulk_edit.py:195 #: netbox/circuits/forms/bulk_import.py:133 #: netbox/circuits/forms/filtersets.py:234 -#: netbox/circuits/forms/model_forms.py:173 +#: netbox/circuits/forms/model_forms.py:202 netbox/circuits/ui/panels.py:14 #: netbox/templates/circuits/inc/circuit_termination.html:6 -#: netbox/templates/dcim/cable.html:72 netbox/templates/dcim/cable.html:76 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:6 #: netbox/vpn/forms/bulk_import.py:99 netbox/vpn/forms/filtersets.py:87 msgid "Termination" msgstr "Eindpunt" @@ -941,26 +845,23 @@ msgid "Mark connected" msgstr "Markeren als verbonden" #: netbox/circuits/forms/bulk_edit.py:220 -#: netbox/circuits/forms/model_forms.py:184 +#: netbox/circuits/forms/model_forms.py:213 netbox/circuits/views.py:513 +#: netbox/dcim/views.py:3465 netbox/dcim/views.py:3566 #: netbox/templates/circuits/inc/circuit_termination_fields.html:55 -#: netbox/templates/dcim/frontport.html:118 -#: netbox/templates/dcim/interface.html:268 -#: netbox/templates/dcim/rearport.html:112 +#: netbox/templates/dcim/panels/interface_connection.html:92 msgid "Circuit Termination" msgstr "Circuitbeëindiging" #: netbox/circuits/forms/bulk_edit.py:222 -#: netbox/circuits/forms/model_forms.py:186 +#: netbox/circuits/forms/model_forms.py:215 msgid "Termination Details" msgstr "Details van de beëindiging" #: netbox/circuits/forms/bulk_edit.py:261 #: netbox/circuits/forms/bulk_import.py:188 #: netbox/circuits/forms/filtersets.py:314 -#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:666 -#: netbox/templates/circuits/circuitgroupassignment.html:34 +#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:692 #: netbox/templates/dcim/panels/virtual_chassis_members.html:11 -#: netbox/templates/dcim/virtualchassis.html:58 #: netbox/templates/dcim/virtualchassis_edit.html:68 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 #: netbox/templates/ipam/panels/fhrp_groups.html:12 @@ -975,7 +876,7 @@ msgstr "Prioriteit" #: netbox/circuits/forms/filtersets.py:272 #: netbox/circuits/forms/filtersets.py:365 #: netbox/circuits/forms/filtersets.py:403 -#: netbox/circuits/forms/model_forms.py:321 +#: netbox/circuits/forms/model_forms.py:350 #: netbox/circuits/tables/virtual_circuits.py:51 #: netbox/circuits/tables/virtual_circuits.py:95 msgid "Provider network" @@ -984,13 +885,13 @@ msgstr "Netwerkprovider" #: netbox/circuits/forms/bulk_edit.py:326 #: netbox/circuits/forms/bulk_import.py:253 #: netbox/circuits/forms/filtersets.py:393 -#: netbox/circuits/forms/model_forms.py:360 netbox/dcim/forms/bulk_edit.py:351 +#: netbox/circuits/forms/model_forms.py:389 netbox/dcim/forms/bulk_edit.py:351 #: netbox/dcim/forms/bulk_edit.py:1245 netbox/dcim/forms/bulk_edit.py:1681 #: netbox/dcim/forms/bulk_import.py:270 netbox/dcim/forms/bulk_import.py:1199 #: netbox/dcim/forms/filtersets.py:404 netbox/dcim/forms/filtersets.py:879 #: netbox/dcim/forms/filtersets.py:1902 netbox/dcim/forms/filtersets.py:1942 -#: netbox/dcim/forms/model_forms.py:267 netbox/dcim/forms/model_forms.py:1234 -#: netbox/dcim/forms/model_forms.py:1717 +#: netbox/dcim/forms/model_forms.py:293 netbox/dcim/forms/model_forms.py:1260 +#: netbox/dcim/forms/model_forms.py:1743 #: netbox/dcim/forms/object_import.py:182 netbox/dcim/tables/devices.py:173 #: netbox/dcim/tables/devices.py:1032 netbox/dcim/tables/devicetypes.py:318 #: netbox/dcim/tables/racks.py:118 netbox/extras/filtersets.py:734 @@ -1004,14 +905,10 @@ msgstr "Netwerkprovider" #: netbox/ipam/forms/model_forms.py:253 netbox/ipam/forms/model_forms.py:678 #: netbox/ipam/tables/ip.py:208 netbox/ipam/tables/ip.py:265 #: netbox/ipam/tables/ip.py:318 netbox/ipam/tables/vlans.py:102 -#: netbox/templates/circuits/virtualcircuittermination.html:42 #: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:196 -#: netbox/templates/dcim/interface.html:298 -#: netbox/templates/dcim/inventoryitem.html:40 -#: netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:57 netbox/templates/ipam/prefix.html:73 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/dcim/panels/component_inventory_items.html:10 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:19 +#: netbox/templates/dcim/panels/interface_wireless.html:17 #: netbox/templates/wireless/panels/wirelesslink_interface.html:20 #: netbox/tenancy/forms/bulk_edit.py:136 #: netbox/tenancy/forms/filtersets.py:136 @@ -1107,22 +1004,19 @@ msgid "Operational role" msgstr "Operationele rol" #: netbox/circuits/forms/bulk_import.py:258 -#: netbox/circuits/forms/model_forms.py:363 +#: netbox/circuits/forms/model_forms.py:392 #: netbox/circuits/tables/virtual_circuits.py:108 -#: netbox/dcim/forms/bulk_import.py:1330 netbox/dcim/forms/model_forms.py:1308 -#: netbox/dcim/forms/model_forms.py:1577 netbox/dcim/forms/model_forms.py:1758 -#: netbox/dcim/forms/model_forms.py:1793 netbox/dcim/forms/model_forms.py:1918 -#: netbox/dcim/tables/connections.py:66 netbox/dcim/tables/devices.py:1199 -#: netbox/ipam/forms/bulk_import.py:323 netbox/ipam/forms/model_forms.py:283 -#: netbox/ipam/forms/model_forms.py:292 netbox/ipam/tables/fhrp.py:61 -#: netbox/ipam/tables/ip.py:323 netbox/ipam/tables/vlans.py:145 +#: netbox/circuits/ui/panels.py:134 netbox/dcim/forms/bulk_import.py:1330 +#: netbox/dcim/forms/model_forms.py:1334 netbox/dcim/forms/model_forms.py:1603 +#: netbox/dcim/forms/model_forms.py:1784 netbox/dcim/forms/model_forms.py:1819 +#: netbox/dcim/forms/model_forms.py:1944 netbox/dcim/tables/connections.py:66 +#: netbox/dcim/tables/devices.py:1199 netbox/dcim/views.py:3457 +#: netbox/dcim/views.py:3560 netbox/ipam/forms/bulk_import.py:323 +#: netbox/ipam/forms/model_forms.py:283 netbox/ipam/forms/model_forms.py:292 +#: netbox/ipam/tables/fhrp.py:61 netbox/ipam/tables/ip.py:323 +#: netbox/ipam/tables/vlans.py:145 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 -#: netbox/templates/circuits/virtualcircuittermination.html:53 -#: netbox/templates/circuits/virtualcircuittermination.html:60 -#: netbox/templates/dcim/frontport.html:103 -#: netbox/templates/dcim/interface.html:27 -#: netbox/templates/dcim/interface.html:259 -#: netbox/templates/dcim/rearport.html:103 +#: netbox/templates/dcim/panels/interface_connection.html:83 #: netbox/templates/wireless/panels/wirelesslink_interface.html:12 #: netbox/virtualization/forms/model_forms.py:368 #: netbox/vpn/forms/bulk_import.py:302 netbox/vpn/forms/model_forms.py:434 @@ -1154,8 +1048,8 @@ msgstr "Interface" #: netbox/dcim/forms/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1746 #: netbox/dcim/forms/filtersets.py:1790 netbox/dcim/forms/filtersets.py:1833 #: netbox/dcim/forms/filtersets.py:1865 netbox/dcim/forms/filtersets.py:1892 -#: netbox/dcim/forms/model_forms.py:197 netbox/dcim/forms/model_forms.py:259 -#: netbox/dcim/forms/model_forms.py:575 netbox/dcim/forms/model_forms.py:844 +#: netbox/dcim/forms/model_forms.py:223 netbox/dcim/forms/model_forms.py:285 +#: netbox/dcim/forms/model_forms.py:601 netbox/dcim/forms/model_forms.py:870 #: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:30 #: netbox/dcim/tables/racks.py:107 netbox/dcim/tables/racks.py:199 #: netbox/extras/filtersets.py:718 netbox/extras/forms/filtersets.py:404 @@ -1163,7 +1057,6 @@ msgstr "Interface" #: netbox/ipam/forms/filtersets.py:481 netbox/ipam/forms/filtersets.py:549 #: netbox/templates/dcim/device_edit.html:32 #: netbox/templates/dcim/inc/cable_termination.html:12 -#: netbox/templates/dcim/powerpanel.html:26 #: netbox/virtualization/forms/filtersets.py:87 #: netbox/virtualization/forms/filtersets.py:113 #: netbox/wireless/forms/filtersets.py:99 @@ -1274,7 +1167,7 @@ msgstr "Contacten" #: netbox/dcim/tables/devices.py:147 netbox/dcim/tables/sites.py:65 #: netbox/extras/filtersets.py:685 netbox/ipam/forms/bulk_edit.py:404 #: netbox/ipam/forms/filtersets.py:241 netbox/ipam/forms/filtersets.py:466 -#: netbox/ipam/forms/filtersets.py:559 netbox/templates/ipam/vlan.html:16 +#: netbox/ipam/forms/filtersets.py:559 netbox/ipam/ui/panels.py:195 #: netbox/virtualization/forms/filtersets.py:67 #: netbox/virtualization/forms/filtersets.py:147 #: netbox/virtualization/forms/model_forms.py:86 @@ -1306,8 +1199,6 @@ msgstr "Sitegroep" #: netbox/circuits/tables/providers.py:61 #: netbox/circuits/tables/virtual_circuits.py:55 #: netbox/circuits/tables/virtual_circuits.py:99 -#: netbox/templates/circuits/circuit.html:22 -#: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Account" @@ -1318,9 +1209,7 @@ msgstr "Termzijde" #: netbox/circuits/forms/filtersets.py:296 netbox/dcim/forms/bulk_edit.py:1540 #: netbox/extras/forms/model_forms.py:706 netbox/ipam/forms/filtersets.py:154 #: netbox/ipam/forms/filtersets.py:642 netbox/ipam/forms/model_forms.py:329 -#: netbox/templates/dcim/macaddress.html:25 -#: netbox/templates/extras/configcontext.html:36 -#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/ipam/ui/panels.py:121 netbox/templates/extras/configcontext.html:36 #: netbox/templates/ipam/vlan_edit.html:42 #: netbox/tenancy/forms/filtersets.py:116 #: netbox/users/forms/model_forms.py:375 @@ -1328,18 +1217,16 @@ msgid "Assignment" msgstr "Opdracht" #: netbox/circuits/forms/filtersets.py:311 -#: netbox/circuits/forms/model_forms.py:250 +#: netbox/circuits/forms/model_forms.py:279 #: netbox/circuits/tables/circuits.py:187 netbox/dcim/forms/bulk_edit.py:118 #: netbox/dcim/forms/bulk_import.py:115 netbox/dcim/forms/model_forms.py:135 #: netbox/dcim/tables/sites.py:69 netbox/extras/forms/filtersets.py:600 #: netbox/ipam/filtersets.py:1034 netbox/ipam/forms/bulk_edit.py:423 #: netbox/ipam/forms/bulk_import.py:515 netbox/ipam/forms/model_forms.py:561 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/vlans.py:94 -#: netbox/templates/circuits/circuitgroupassignment.html:22 -#: netbox/templates/dcim/interface.html:359 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:8 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 #: netbox/templates/ipam/panels/fhrp_groups.html:9 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/tenant.html:20 #: netbox/tenancy/forms/bulk_edit.py:44 netbox/tenancy/forms/bulk_import.py:46 #: netbox/tenancy/forms/filtersets.py:63 #: netbox/tenancy/forms/filtersets.py:126 @@ -1365,23 +1252,38 @@ msgstr "Opdracht" msgid "Group" msgstr "groep" -#: netbox/circuits/forms/model_forms.py:237 -#: netbox/templates/circuits/circuitgroup.html:25 +#: netbox/circuits/forms/model_forms.py:53 +#: netbox/dcim/forms/model_forms.py:147 +msgid "Add ASNs" +msgstr "ASN's toevoegen" + +#: netbox/circuits/forms/model_forms.py:58 +#: netbox/dcim/forms/model_forms.py:152 +msgid "Remove ASNs" +msgstr "ASN's verwijderen" + +#: netbox/circuits/forms/model_forms.py:79 +#: netbox/dcim/forms/model_forms.py:198 +#, python-brace-format +msgid "{count} ASNs currently assigned" +msgstr "{count} ASN's die momenteel zijn toegewezen" + +#: netbox/circuits/forms/model_forms.py:266 msgid "Circuit Group" msgstr "Circuitgroep" -#: netbox/circuits/forms/model_forms.py:257 +#: netbox/circuits/forms/model_forms.py:286 msgid "Circuit type" msgstr "Circuittype" -#: netbox/circuits/forms/model_forms.py:268 +#: netbox/circuits/forms/model_forms.py:297 msgid "Group Assignment" msgstr "Groepsopdracht" #: netbox/circuits/models/base.py:18 netbox/dcim/models/cables.py:81 -#: netbox/dcim/models/device_component_templates.py:353 -#: netbox/dcim/models/device_component_templates.py:588 -#: netbox/dcim/models/device_component_templates.py:661 +#: netbox/dcim/models/device_component_templates.py:343 +#: netbox/dcim/models/device_component_templates.py:578 +#: netbox/dcim/models/device_component_templates.py:651 #: netbox/dcim/models/device_components.py:573 #: netbox/dcim/models/device_components.py:1156 #: netbox/dcim/models/device_components.py:1204 @@ -1418,8 +1320,8 @@ msgstr "Uniek circuit-ID" #: netbox/dcim/models/modules.py:219 netbox/dcim/models/power.py:95 #: netbox/dcim/models/racks.py:301 netbox/dcim/models/racks.py:685 #: netbox/dcim/models/sites.py:163 netbox/dcim/models/sites.py:287 -#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:528 -#: netbox/ipam/models/ip.py:757 netbox/ipam/models/vlans.py:228 +#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:538 +#: netbox/ipam/models/ip.py:767 netbox/ipam/models/vlans.py:228 #: netbox/virtualization/models/clusters.py:70 #: netbox/virtualization/models/virtualmachines.py:80 #: netbox/vpn/models/l2vpn.py:36 netbox/vpn/models/tunnels.py:38 @@ -1539,7 +1441,7 @@ msgstr "beëindiging van het circuit" msgid "circuit terminations" msgstr "circuitafsluitingen" -#: netbox/circuits/models/circuits.py:360 +#: netbox/circuits/models/circuits.py:367 msgid "A circuit termination must attach to a terminating object." msgstr "" "Een circuitafsluiting moet worden aangesloten op een afsluitend object." @@ -1644,7 +1546,7 @@ msgid "virtual circuits" msgstr "virtuele circuits" #: netbox/circuits/models/virtual_circuits.py:135 netbox/ipam/models/ip.py:201 -#: netbox/ipam/models/ip.py:764 netbox/vpn/models/tunnels.py:109 +#: netbox/ipam/models/ip.py:774 netbox/vpn/models/tunnels.py:109 msgid "role" msgstr "functie" @@ -1692,30 +1594,13 @@ msgstr "beëindigingen van virtuele circuits" #: netbox/ipam/tables/vlans.py:33 netbox/ipam/tables/vlans.py:86 #: netbox/ipam/tables/vlans.py:205 netbox/ipam/tables/vrfs.py:26 #: netbox/ipam/tables/vrfs.py:65 netbox/netbox/tables/tables.py:325 -#: netbox/netbox/ui/panels.py:198 netbox/netbox/ui/panels.py:207 -#: netbox/templates/circuits/circuitgroup.html:28 -#: netbox/templates/circuits/circuittype.html:22 -#: netbox/templates/circuits/provideraccount.html:28 -#: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/circuits/virtualcircuittype.html:22 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:17 +#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 #: netbox/templates/core/plugin.html:54 #: netbox/templates/core/rq_worker.html:43 -#: netbox/templates/dcim/consoleport.html:28 -#: netbox/templates/dcim/consoleserverport.html:28 -#: netbox/templates/dcim/devicebay.html:24 -#: netbox/templates/dcim/frontport.html:28 #: netbox/templates/dcim/inc/interface_vlans_table.html:5 #: netbox/templates/dcim/inc/panels/inventory_items.html:18 -#: netbox/templates/dcim/interface.html:38 -#: netbox/templates/dcim/interface.html:240 -#: netbox/templates/dcim/inventoryitem.html:28 -#: netbox/templates/dcim/inventoryitemrole.html:18 -#: netbox/templates/dcim/modulebay.html:30 -#: netbox/templates/dcim/poweroutlet.html:28 -#: netbox/templates/dcim/powerport.html:28 -#: netbox/templates/dcim/rearport.html:28 -#: netbox/templates/dcim/virtualdevicecontext.html:18 +#: netbox/templates/dcim/panels/component_inventory_items.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:64 #: netbox/templates/extras/configcontext.html:13 #: netbox/templates/extras/configcontextprofile.html:13 #: netbox/templates/extras/configtemplate.html:13 @@ -1729,18 +1614,6 @@ msgstr "beëindigingen van virtuele circuits" #: netbox/templates/extras/savedfilter.html:13 #: netbox/templates/extras/tableconfig.html:13 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 -#: netbox/templates/ipam/asnrange.html:15 -#: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 -#: netbox/templates/ipam/role.html:22 -#: netbox/templates/ipam/routetarget.html:13 -#: netbox/templates/ipam/service.html:26 -#: netbox/templates/ipam/servicetemplate.html:15 -#: netbox/templates/ipam/vlan.html:35 netbox/templates/ipam/vlangroup.html:30 -#: netbox/templates/ipam/vlantranslationpolicy.html:14 -#: netbox/templates/tenancy/contact.html:35 -#: netbox/templates/tenancy/contactgroup.html:21 -#: netbox/templates/tenancy/contactrole.html:18 -#: netbox/templates/tenancy/tenantgroup.html:29 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:8 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:8 #: netbox/tenancy/tables/contacts.py:38 netbox/tenancy/tables/contacts.py:53 @@ -1770,17 +1643,13 @@ msgstr "Naam" #: netbox/circuits/tables/virtual_circuits.py:27 #: netbox/netbox/navigation/menu.py:278 netbox/netbox/navigation/menu.py:282 #: netbox/netbox/navigation/menu.py:284 -#: netbox/templates/circuits/provider.html:57 -#: netbox/templates/circuits/provideraccount.html:48 -#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Circuits" #: netbox/circuits/tables/circuits.py:53 #: netbox/circuits/tables/virtual_circuits.py:42 -#: netbox/templates/circuits/circuit.html:26 -#: netbox/templates/circuits/virtualcircuit.html:35 -#: netbox/templates/dcim/interface.html:192 +#: netbox/circuits/ui/panels.py:75 netbox/circuits/ui/panels.py:118 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:15 msgid "Circuit ID" msgstr "Circuit-ID" @@ -1794,13 +1663,11 @@ msgid "Side Z" msgstr "Kant Z" #: netbox/circuits/tables/circuits.py:78 -#: netbox/templates/circuits/circuit.html:65 msgid "Commit Rate" msgstr "Vastleggingspercentage" #: netbox/circuits/tables/circuits.py:85 netbox/dcim/forms/filtersets.py:1973 -#: netbox/templates/tenancy/contact.html:94 -#: netbox/tenancy/tables/contacts.py:67 +#: netbox/tenancy/tables/contacts.py:67 netbox/tenancy/views.py:416 msgid "Assignments" msgstr "Toewijzingen" @@ -1822,10 +1689,7 @@ msgid "Site Group" msgstr "Sitegroep" #: netbox/circuits/tables/circuits.py:145 -#: netbox/templates/circuits/providernetwork.html:17 -#: netbox/templates/circuits/virtualcircuit.html:27 -#: netbox/templates/circuits/virtualcircuittermination.html:30 -#: netbox/templates/dcim/interface.html:188 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:11 msgid "Provider Network" msgstr "Netwerkprovider" @@ -1841,8 +1705,7 @@ msgstr "Aantal accounts" msgid "ASN Count" msgstr "Aantal ASN's" -#: netbox/circuits/tables/virtual_circuits.py:64 -#: netbox/templates/circuits/virtualcircuit.html:87 +#: netbox/circuits/tables/virtual_circuits.py:64 netbox/circuits/views.py:802 #: netbox/vpn/tables/tunnels.py:59 netbox/vpn/views.py:139 #: netbox/vpn/views.py:685 msgid "Terminations" @@ -1871,9 +1734,9 @@ msgstr "Beëindigingen" #: netbox/dcim/forms/filtersets.py:1868 netbox/dcim/forms/filtersets.py:1880 #: netbox/dcim/forms/filtersets.py:1895 netbox/dcim/forms/filtersets.py:1937 #: netbox/dcim/forms/filtersets.py:2032 netbox/dcim/forms/filtersets.py:2056 -#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:748 -#: netbox/dcim/forms/model_forms.py:963 netbox/dcim/forms/model_forms.py:1375 -#: netbox/dcim/forms/model_forms.py:1869 netbox/dcim/forms/model_forms.py:1942 +#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:774 +#: netbox/dcim/forms/model_forms.py:989 netbox/dcim/forms/model_forms.py:1401 +#: netbox/dcim/forms/model_forms.py:1895 netbox/dcim/forms/model_forms.py:1968 #: netbox/dcim/forms/object_create.py:207 netbox/dcim/tables/connections.py:23 #: netbox/dcim/tables/connections.py:42 netbox/dcim/tables/connections.py:61 #: netbox/dcim/tables/devices.py:293 netbox/dcim/tables/devices.py:388 @@ -1885,24 +1748,11 @@ msgstr "Beëindigingen" #: netbox/dcim/tables/modules.py:82 netbox/extras/forms/filtersets.py:405 #: netbox/ipam/forms/bulk_import.py:309 netbox/ipam/forms/filtersets.py:649 #: netbox/ipam/forms/model_forms.py:325 netbox/ipam/tables/vlans.py:156 -#: netbox/templates/circuits/virtualcircuittermination.html:56 -#: netbox/templates/dcim/consoleport.html:20 -#: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device_edit.html:12 -#: netbox/templates/dcim/devicebay.html:20 -#: netbox/templates/dcim/devicebay.html:48 -#: netbox/templates/dcim/frontport.html:20 -#: netbox/templates/dcim/interface.html:30 -#: netbox/templates/dcim/interface.html:236 -#: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/modulebay.html:20 +#: netbox/templates/dcim/panels/installed_device.html:9 +#: netbox/templates/dcim/panels/interface_connection.html:60 #: netbox/templates/dcim/panels/virtual_chassis_members.html:8 -#: netbox/templates/dcim/poweroutlet.html:20 -#: netbox/templates/dcim/powerport.html:20 -#: netbox/templates/dcim/rearport.html:20 -#: netbox/templates/dcim/virtualchassis.html:55 #: netbox/templates/dcim/virtualchassis_edit.html:63 -#: netbox/templates/dcim/virtualdevicecontext.html:22 #: netbox/templates/wireless/panels/wirelesslink_interface.html:8 #: netbox/virtualization/filtersets.py:160 #: netbox/virtualization/forms/bulk_edit.py:108 @@ -1920,6 +1770,15 @@ msgstr "Beëindigingen" msgid "Device" msgstr "Apparaat" +#: netbox/circuits/ui/panels.py:37 netbox/netbox/navigation/menu.py:301 +msgid "Group Assignments" +msgstr "Groepstoewijzingen" + +#: netbox/circuits/ui/panels.py:46 netbox/ipam/ui/panels.py:36 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Groep toewijzen" + #: netbox/core/api/views.py:51 msgid "This user does not have permission to synchronize this data source." msgstr "" @@ -1968,14 +1827,14 @@ msgid "Syncing" msgstr "Synchroniseren" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:43 netbox/templates/core/job.html:59 +#: netbox/core/tables/jobs.py:43 msgid "Completed" msgstr "Voltooid" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35 #: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259 -#: netbox/dcim/choices.py:1992 netbox/dcim/choices.py:2082 +#: netbox/dcim/choices.py:2013 netbox/dcim/choices.py:2103 #: netbox/virtualization/choices.py:48 msgid "Failed" msgstr "Mislukt" @@ -1999,7 +1858,6 @@ msgstr "In afwachting" #: netbox/core/choices.py:55 netbox/core/constants.py:24 #: netbox/core/tables/jobs.py:34 netbox/core/tables/tasks.py:39 -#: netbox/templates/core/job.html:46 msgid "Scheduled" msgstr "Gepland" @@ -2038,10 +1896,9 @@ msgstr "30 dagen" #: netbox/core/choices.py:102 netbox/core/tables/jobs.py:31 #: netbox/core/tables/tasks.py:80 netbox/extras/tables/tables.py:436 #: netbox/extras/tables/tables.py:742 -#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision.html:23 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:42 netbox/templates/core/rq_task.html:16 -#: netbox/templates/core/rq_task.html:73 +#: netbox/templates/core/rq_task.html:16 netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 #: netbox/templates/extras/journalentry.html:22 @@ -2063,7 +1920,6 @@ msgid "Finished" msgstr "Klaar" #: netbox/core/constants.py:22 netbox/core/tables/jobs.py:40 -#: netbox/templates/core/job.html:55 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Gestart" @@ -2095,13 +1951,12 @@ msgid "Warning" msgstr "Waarschuwing" #: netbox/core/constants.py:33 netbox/netbox/tables/columns.py:589 -#: netbox/templates/core/job.html:26 msgid "Error" msgstr "Fout" #: netbox/core/data_backends.py:46 netbox/core/tables/plugins.py:54 #: netbox/templates/core/plugin.html:88 -#: netbox/templates/dcim/interface.html:291 +#: netbox/templates/dcim/panels/interface_wireless.html:10 msgid "Local" msgstr "Lokaal" @@ -2160,7 +2015,7 @@ msgid "User name" msgstr "Gebruikersnaam" #: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47 -#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2040 +#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2061 #: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386 #: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712 #: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233 @@ -2171,8 +2026,6 @@ msgstr "Gebruikersnaam" #: netbox/extras/tables/tables.py:188 netbox/extras/tables/tables.py:319 #: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:520 #: netbox/netbox/preferences.py:46 netbox/netbox/preferences.py:71 -#: netbox/templates/core/datasource.html:42 -#: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 #: netbox/templates/extras/eventrule.html:17 #: netbox/templates/extras/savedfilter.html:25 @@ -2186,7 +2039,7 @@ msgid "Enabled" msgstr "Ingeschakeld" #: netbox/core/forms/bulk_edit.py:30 netbox/core/forms/filtersets.py:54 -#: netbox/core/tables/data.py:31 netbox/templates/core/datasource.html:50 +#: netbox/core/tables/data.py:31 netbox/core/ui/panels.py:12 msgid "Sync interval" msgstr "Synchronisatie-interval" @@ -2200,17 +2053,17 @@ msgstr "Synchronisatie-interval" msgid "Parameters" msgstr "Parameters" -#: netbox/core/forms/bulk_edit.py:37 netbox/templates/core/datasource.html:72 +#: netbox/core/forms/bulk_edit.py:37 netbox/core/ui/panels.py:22 msgid "Ignore rules" msgstr "Regels negeren" #: netbox/core/forms/filtersets.py:33 netbox/core/forms/model_forms.py:100 -#: netbox/extras/forms/model_forms.py:280 +#: netbox/core/ui/panels.py:7 netbox/extras/forms/model_forms.py:280 #: netbox/extras/forms/model_forms.py:613 #: netbox/extras/forms/model_forms.py:702 #: netbox/extras/forms/model_forms.py:755 netbox/extras/tables/tables.py:230 #: netbox/extras/tables/tables.py:600 netbox/extras/tables/tables.py:630 -#: netbox/extras/tables/tables.py:672 netbox/templates/core/datasource.html:31 +#: netbox/extras/tables/tables.py:672 #: netbox/templates/core/inc/datafile_panel.html:7 #: netbox/templates/extras/configtemplate.html:37 #: netbox/templates/extras/object_render_config.html:19 @@ -2237,15 +2090,14 @@ msgstr "Aangemaakt" #: netbox/extras/forms/filtersets.py:580 netbox/extras/tables/tables.py:283 #: netbox/extras/tables/tables.py:350 netbox/extras/tables/tables.py:376 #: netbox/extras/tables/tables.py:395 netbox/extras/tables/tables.py:427 -#: netbox/extras/tables/tables.py:747 netbox/templates/core/job.html:11 -#: netbox/templates/core/objectchange.html:52 +#: netbox/extras/tables/tables.py:747 #: netbox/templates/extras/tableconfig.html:21 #: netbox/tenancy/tables/contacts.py:84 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Soort object" #: netbox/core/forms/filtersets.py:95 netbox/core/tables/jobs.py:46 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:61 +#: netbox/core/ui/panels.py:65 netbox/templates/core/rq_task.html:61 msgid "Queue" msgstr "Wachtrij" @@ -2282,11 +2134,10 @@ msgid "Completed before" msgstr "Eerder voltooid" #: netbox/core/forms/filtersets.py:141 netbox/core/forms/filtersets.py:170 -#: netbox/dcim/forms/bulk_edit.py:458 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/model_forms.py:336 netbox/extras/forms/filtersets.py:575 -#: netbox/extras/forms/filtersets.py:595 netbox/extras/tables/tables.py:403 -#: netbox/extras/tables/tables.py:443 -#: netbox/templates/core/objectchange.html:36 +#: netbox/core/ui/panels.py:73 netbox/dcim/forms/bulk_edit.py:458 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:362 +#: netbox/extras/forms/filtersets.py:575 netbox/extras/forms/filtersets.py:595 +#: netbox/extras/tables/tables.py:403 netbox/extras/tables/tables.py:443 #: netbox/templates/extras/savedfilter.html:21 #: netbox/templates/extras/tableconfig.html:29 #: netbox/templates/inc/user_menu.html:31 netbox/users/filtersets.py:135 @@ -2299,7 +2150,6 @@ msgstr "Gebruiker" #: netbox/core/forms/filtersets.py:149 netbox/core/tables/change_logging.py:16 #: netbox/core/tables/jobs.py:72 netbox/extras/tables/tables.py:785 #: netbox/extras/tables/tables.py:840 -#: netbox/templates/core/objectchange.html:32 msgid "Time" msgstr "Tijd" @@ -2313,21 +2163,19 @@ msgstr "Voordien" #: netbox/core/forms/filtersets.py:163 netbox/core/tables/change_logging.py:30 #: netbox/extras/forms/model_forms.py:490 -#: netbox/templates/core/objectchange.html:46 #: netbox/templates/extras/eventrule.html:71 msgid "Action" msgstr "Actie" #: netbox/core/forms/model_forms.py:55 netbox/core/tables/data.py:57 -#: netbox/templates/core/datafile.html:21 #: netbox/templates/extras/report/base.html:33 #: netbox/templates/extras/script/base.html:32 msgid "Source" msgstr "Bron" #: netbox/core/forms/model_forms.py:57 -#: netbox/templates/core/datasource.html:14 -#: netbox/templates/core/datasource.html:20 +#: netbox/templates/core/datasource.html:10 +#: netbox/templates/core/datasource.html:16 #: netbox/utilities/templatetags/buttons.py:156 msgid "Sync" msgstr "Synchroniseer" @@ -2356,7 +2204,7 @@ msgstr "" msgid "Rack Elevations" msgstr "Rackverhogingen" -#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1911 +#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1932 #: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340 #: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144 #: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320 @@ -2501,13 +2349,13 @@ msgid "Config revision #{id}" msgstr "Revisie van de configuratie #{id}" #: netbox/core/models/data.py:45 netbox/dcim/models/cables.py:50 -#: netbox/dcim/models/device_component_templates.py:210 -#: netbox/dcim/models/device_component_templates.py:245 -#: netbox/dcim/models/device_component_templates.py:281 -#: netbox/dcim/models/device_component_templates.py:346 -#: netbox/dcim/models/device_component_templates.py:437 -#: netbox/dcim/models/device_component_templates.py:583 -#: netbox/dcim/models/device_component_templates.py:656 +#: netbox/dcim/models/device_component_templates.py:200 +#: netbox/dcim/models/device_component_templates.py:235 +#: netbox/dcim/models/device_component_templates.py:271 +#: netbox/dcim/models/device_component_templates.py:336 +#: netbox/dcim/models/device_component_templates.py:427 +#: netbox/dcim/models/device_component_templates.py:573 +#: netbox/dcim/models/device_component_templates.py:646 #: netbox/dcim/models/device_components.py:370 #: netbox/dcim/models/device_components.py:397 #: netbox/dcim/models/device_components.py:428 @@ -2521,15 +2369,14 @@ msgstr "Revisie van de configuratie #{id}" msgid "type" msgstr "type" -#: netbox/core/models/data.py:50 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:183 netbox/extras/tables/tables.py:850 -#: netbox/templates/core/datasource.html:62 -#: netbox/templates/core/plugin.html:66 +#: netbox/core/models/data.py:50 netbox/core/ui/panels.py:17 +#: netbox/extras/choices.py:37 netbox/extras/models/models.py:183 +#: netbox/extras/tables/tables.py:850 netbox/templates/core/plugin.html:66 msgid "URL" msgstr "URL" #: netbox/core/models/data.py:60 -#: netbox/dcim/models/device_component_templates.py:442 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:605 #: netbox/extras/models/models.py:81 netbox/extras/models/models.py:319 #: netbox/extras/models/models.py:507 netbox/extras/models/models.py:586 @@ -2604,7 +2451,7 @@ msgstr "pad" msgid "File path relative to the data source's root" msgstr "Bestandspad relatief ten opzichte van de hoofdmap van de gegevensbron" -#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:509 +#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:519 msgid "size" msgstr "grootte" @@ -2755,27 +2602,24 @@ msgid "Full Name" msgstr "Volledige naam" #: netbox/core/tables/change_logging.py:38 netbox/core/tables/jobs.py:23 -#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:286 -#: netbox/extras/tables/tables.py:379 netbox/extras/tables/tables.py:398 -#: netbox/extras/tables/tables.py:430 netbox/extras/tables/tables.py:514 -#: netbox/extras/tables/tables.py:583 netbox/extras/tables/tables.py:752 -#: netbox/extras/tables/tables.py:793 netbox/extras/tables/tables.py:847 -#: netbox/netbox/tables/tables.py:343 -#: netbox/templates/core/objectchange.html:58 +#: netbox/core/ui/panels.py:83 netbox/extras/choices.py:41 +#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:379 +#: netbox/extras/tables/tables.py:398 netbox/extras/tables/tables.py:430 +#: netbox/extras/tables/tables.py:514 netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:752 netbox/extras/tables/tables.py:793 +#: netbox/extras/tables/tables.py:847 netbox/netbox/tables/tables.py:343 #: netbox/templates/extras/eventrule.html:78 #: netbox/templates/extras/journalentry.html:18 #: netbox/tenancy/tables/contacts.py:87 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "Object" -#: netbox/core/tables/change_logging.py:43 -#: netbox/templates/core/objectchange.html:74 +#: netbox/core/tables/change_logging.py:43 netbox/core/ui/panels.py:89 msgid "Request ID" msgstr "ID aanvragen" #: netbox/core/tables/change_logging.py:46 netbox/core/tables/jobs.py:79 #: netbox/extras/tables/tables.py:796 netbox/extras/tables/tables.py:853 -#: netbox/templates/core/objectchange.html:68 msgid "Message" msgstr "Bericht" @@ -2788,11 +2632,11 @@ msgstr "Is actief" msgid "Last Synced" msgstr "Laatst gesynchroniseerd" -#: netbox/core/tables/data.py:37 netbox/templates/core/datasource.html:118 +#: netbox/core/tables/data.py:37 msgid "Files" msgstr "bestanden" -#: netbox/core/tables/data.py:61 netbox/templates/core/datafile.html:25 +#: netbox/core/tables/data.py:61 msgid "Path" msgstr "Pad" @@ -2816,7 +2660,7 @@ msgstr "ID" msgid "Interval" msgstr "Interval" -#: netbox/core/tables/jobs.py:49 +#: netbox/core/tables/jobs.py:49 netbox/core/views.py:255 msgid "Log Entries" msgstr "Logboekvermeldingen" @@ -2836,7 +2680,7 @@ msgstr "Geen logboekvermeldingen" msgid "Version" msgstr "Versie" -#: netbox/core/tables/plugins.py:21 netbox/templates/core/datafile.html:32 +#: netbox/core/tables/plugins.py:21 msgid "Last Updated" msgstr "Laatst bijgewerkt" @@ -2932,7 +2776,61 @@ msgstr "PIDE" msgid "No workers found" msgstr "Geen workers gevonden" -#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:447 +#: netbox/core/ui/panels.py:13 +msgid "Last synced" +msgstr "Laatst gesynchroniseerd" + +#: netbox/core/ui/panels.py:29 +msgid "Backend" +msgstr "Backend" + +#: netbox/core/ui/panels.py:33 netbox/extras/tables/tables.py:234 +#: netbox/extras/tables/tables.py:604 netbox/extras/tables/tables.py:634 +#: netbox/extras/tables/tables.py:676 +#: netbox/templates/core/inc/datafile_panel.html:4 +#: netbox/templates/core/inc/datafile_panel.html:17 +#: netbox/templates/extras/configtemplate.html:47 +#: netbox/templates/extras/object_render_config.html:23 +#: netbox/templates/generic/bulk_import.html:35 +msgid "Data File" +msgstr "Gegevensbestand" + +#: netbox/core/ui/panels.py:38 +msgid "SHA256 hash" +msgstr "SHA256-hash" + +#: netbox/core/ui/panels.py:43 +msgid "Content" +msgstr "Inhoud" + +#: netbox/core/ui/panels.py:47 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 +msgid "Job" +msgstr "Taak" + +#: netbox/core/ui/panels.py:50 netbox/core/ui/panels.py:79 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 +#: netbox/extras/forms/filtersets.py:335 +#: netbox/extras/forms/model_forms.py:338 +#: netbox/extras/forms/model_forms.py:398 +#: netbox/extras/forms/model_forms.py:435 +#: netbox/tenancy/forms/filtersets.py:121 +msgid "Object type" +msgstr "Soort object" + +#: netbox/core/ui/panels.py:56 +msgid "Created by" +msgstr "Gemaakt door" + +#: netbox/core/ui/panels.py:60 +msgid "Scheduling" +msgstr "Planning" + +#: netbox/core/ui/panels.py:69 netbox/users/ui/panels.py:53 +msgid "Change" +msgstr "Verandering" + +#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Taak {job_id} niet gevonden" @@ -2942,55 +2840,63 @@ msgstr "Taak {job_id} niet gevonden" msgid "Job {id} not found." msgstr "Baan {id} niet gevonden." -#: netbox/core/views.py:95 +#: netbox/core/views.py:125 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Taak in de wachtrij #{id} om te synchroniseren {datasource}" -#: netbox/core/views.py:199 netbox/templates/extras/htmx/script_result.html:43 +#: netbox/core/views.py:237 netbox/extras/forms/filtersets.py:179 +#: netbox/extras/forms/filtersets.py:380 netbox/extras/forms/filtersets.py:403 +#: netbox/extras/forms/filtersets.py:499 +#: netbox/extras/forms/model_forms.py:696 +#: netbox/templates/extras/eventrule.html:84 +msgid "Data" +msgstr "Gegevens" + +#: netbox/core/views.py:248 netbox/templates/extras/htmx/script_result.html:43 msgid "Log" msgstr "Logboek" -#: netbox/core/views.py:383 +#: netbox/core/views.py:467 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Herstelde configuratierevisie #{id}" -#: netbox/core/views.py:486 +#: netbox/core/views.py:570 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Baan {id} is verwijderd." -#: netbox/core/views.py:488 +#: netbox/core/views.py:572 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Fout bij het verwijderen van de taak {id}: {error}" -#: netbox/core/views.py:497 +#: netbox/core/views.py:581 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Baan {id} is opnieuw gevraagd." -#: netbox/core/views.py:506 +#: netbox/core/views.py:590 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Baan {id} is ondervraagd." -#: netbox/core/views.py:515 +#: netbox/core/views.py:599 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Baan {id} is gestopt." -#: netbox/core/views.py:517 +#: netbox/core/views.py:601 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Kon de taak niet stoppen {id}" -#: netbox/core/views.py:671 +#: netbox/core/views.py:755 msgid "Plugins catalog could not be loaded" msgstr "De catalogus met plug-ins kon niet worden geladen" -#: netbox/core/views.py:707 +#: netbox/core/views.py:791 #, python-brace-format msgid "Plugin {name} not found" msgstr "Plug-in {name} niet gevonden" @@ -3013,7 +2919,7 @@ msgstr "De interfacemodus ondersteunt geen gelabelde VLAN's" msgid "Position (U)" msgstr "Positie (U)" -#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:47 +#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:49 msgid "Facility ID" msgstr "Faciliteits-ID" @@ -3040,8 +2946,8 @@ msgid "Staging" msgstr "Klaarzetten" #: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208 -#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1934 -#: netbox/dcim/choices.py:2083 netbox/virtualization/choices.py:23 +#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1955 +#: netbox/dcim/choices.py:2104 netbox/virtualization/choices.py:23 #: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282 msgid "Decommissioning" msgstr "Ontmanteling" @@ -3107,7 +3013,7 @@ msgstr "Verouderd" msgid "Millimeters" msgstr "Millimeters" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1956 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1977 msgid "Inches" msgstr "Inches" @@ -3135,21 +3041,17 @@ msgstr "Muf" #: netbox/dcim/forms/bulk_import.py:1211 netbox/dcim/forms/filtersets.py:265 #: netbox/dcim/forms/filtersets.py:780 netbox/dcim/forms/filtersets.py:796 #: netbox/dcim/forms/model_forms.py:93 netbox/dcim/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:188 netbox/dcim/forms/model_forms.py:514 -#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1709 +#: netbox/dcim/forms/model_forms.py:214 netbox/dcim/forms/model_forms.py:540 +#: netbox/dcim/forms/model_forms.py:561 netbox/dcim/forms/model_forms.py:1252 +#: netbox/dcim/forms/model_forms.py:1735 #: netbox/dcim/forms/object_import.py:177 netbox/dcim/tables/devices.py:702 #: netbox/dcim/tables/devices.py:737 netbox/dcim/tables/devices.py:965 #: netbox/dcim/tables/devices.py:1052 netbox/dcim/tables/devices.py:1205 #: netbox/ipam/forms/bulk_import.py:601 netbox/ipam/forms/model_forms.py:758 #: netbox/ipam/tables/fhrp.py:56 netbox/ipam/tables/ip.py:329 #: netbox/ipam/tables/services.py:42 netbox/netbox/tables/tables.py:329 -#: netbox/netbox/ui/panels.py:206 netbox/templates/dcim/interface.html:113 -#: netbox/templates/ipam/service.html:30 -#: netbox/templates/tenancy/contactgroup.html:29 -#: netbox/templates/tenancy/tenantgroup.html:37 -#: netbox/tenancy/forms/bulk_edit.py:33 netbox/tenancy/forms/bulk_edit.py:62 -#: netbox/tenancy/forms/bulk_import.py:31 +#: netbox/netbox/ui/panels.py:207 netbox/tenancy/forms/bulk_edit.py:33 +#: netbox/tenancy/forms/bulk_edit.py:62 netbox/tenancy/forms/bulk_import.py:31 #: netbox/tenancy/forms/bulk_import.py:64 #: netbox/tenancy/forms/model_forms.py:26 #: netbox/tenancy/forms/model_forms.py:67 @@ -3183,7 +3085,7 @@ msgid "Rear" msgstr "Achterkant" #: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258 -#: netbox/dcim/choices.py:2081 netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:2102 netbox/virtualization/choices.py:47 msgid "Staged" msgstr "Klaargezet" @@ -3216,7 +3118,7 @@ msgid "Top to bottom" msgstr "Van boven naar beneden" #: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280 -#: netbox/dcim/choices.py:1566 +#: netbox/dcim/choices.py:1587 msgid "Passive" msgstr "Passief" @@ -3245,8 +3147,8 @@ msgid "Proprietary" msgstr "Gepatenteerd" #: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853 -#: netbox/dcim/choices.py:1478 netbox/dcim/choices.py:1480 -#: netbox/dcim/choices.py:1716 netbox/dcim/choices.py:1718 +#: netbox/dcim/choices.py:1499 netbox/dcim/choices.py:1501 +#: netbox/dcim/choices.py:1737 netbox/dcim/choices.py:1739 #: netbox/netbox/navigation/menu.py:212 msgid "Other" msgstr "Andere" @@ -3259,348 +3161,350 @@ msgstr "ITA/internationaal" msgid "Physical" msgstr "Fysiek" -#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1153 +#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1162 msgid "Virtual" msgstr "Virtueel" -#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1355 +#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 -#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125 -#: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150 -#: netbox/netbox/navigation/menu.py:154 -#: netbox/templates/dcim/interface.html:285 +#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1151 +#: netbox/dcim/forms/model_forms.py:1615 netbox/dcim/ui/panels.py:546 +#: netbox/netbox/navigation/menu.py:150 netbox/netbox/navigation/menu.py:154 msgid "Wireless" msgstr "Draadloos" -#: netbox/dcim/choices.py:1151 +#: netbox/dcim/choices.py:1160 msgid "Virtual interfaces" msgstr "Virtuele interfaces" -#: netbox/dcim/choices.py:1154 netbox/dcim/forms/bulk_edit.py:1399 -#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107 -#: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:117 +#: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 +#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1133 +#: netbox/dcim/tables/devices.py:741 #: netbox/virtualization/forms/bulk_edit.py:177 #: netbox/virtualization/forms/bulk_import.py:171 #: netbox/virtualization/tables/virtualmachines.py:137 msgid "Bridge" msgstr "Bridge" -#: netbox/dcim/choices.py:1155 +#: netbox/dcim/choices.py:1164 msgid "Link Aggregation Group (LAG)" msgstr "Linkaggregatiegroep (LAG)" -#: netbox/dcim/choices.py:1159 +#: netbox/dcim/choices.py:1168 msgid "FastEthernet (100 Mbps)" msgstr "Snel Ethernet (100 Mbps)" -#: netbox/dcim/choices.py:1168 +#: netbox/dcim/choices.py:1177 msgid "GigabitEthernet (1 Gbps)" msgstr "Gigabit Ethernet (1 Gbps)" -#: netbox/dcim/choices.py:1186 +#: netbox/dcim/choices.py:1195 msgid "2.5/5 Gbps Ethernet" msgstr "2,5/5 Gbps Ethernet" -#: netbox/dcim/choices.py:1193 +#: netbox/dcim/choices.py:1202 msgid "10 Gbps Ethernet" msgstr "10 Gbps Ethernet" -#: netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1218 msgid "25 Gbps Ethernet" msgstr "25 Gbps Ethernet" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1228 msgid "40 Gbps Ethernet" msgstr "40 Gbps Ethernet" -#: netbox/dcim/choices.py:1230 +#: netbox/dcim/choices.py:1239 msgid "50 Gbps Ethernet" msgstr "50 Gbps Ethernet" -#: netbox/dcim/choices.py:1240 +#: netbox/dcim/choices.py:1249 msgid "100 Gbps Ethernet" msgstr "100 Gbps Ethernet" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1270 msgid "200 Gbps Ethernet" msgstr "200 Gbps Ethernet" -#: netbox/dcim/choices.py:1275 +#: netbox/dcim/choices.py:1284 msgid "400 Gbps Ethernet" msgstr "400 Gbps Ethernet" -#: netbox/dcim/choices.py:1293 +#: netbox/dcim/choices.py:1302 msgid "800 Gbps Ethernet" msgstr "800 Gbps Ethernet" -#: netbox/dcim/choices.py:1302 +#: netbox/dcim/choices.py:1311 +msgid "1.6 Tbps Ethernet" +msgstr "1,6 Tbps Ethernet" + +#: netbox/dcim/choices.py:1319 msgid "Pluggable transceivers" msgstr "Pluggable transceivers" -#: netbox/dcim/choices.py:1339 +#: netbox/dcim/choices.py:1359 msgid "Backplane Ethernet" msgstr "Backplane Ethernet" -#: netbox/dcim/choices.py:1371 +#: netbox/dcim/choices.py:1392 msgid "Cellular" msgstr "Mobiel" -#: netbox/dcim/choices.py:1423 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/choices.py:1444 netbox/dcim/forms/filtersets.py:425 #: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112 #: netbox/dcim/forms/filtersets.py:1910 -#: netbox/templates/dcim/inventoryitem.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:66 msgid "Serial" msgstr "Serienummer" -#: netbox/dcim/choices.py:1438 +#: netbox/dcim/choices.py:1459 msgid "Coaxial" msgstr "Coaxiaal" -#: netbox/dcim/choices.py:1459 +#: netbox/dcim/choices.py:1480 msgid "Stacking" msgstr "Stapelen" -#: netbox/dcim/choices.py:1511 +#: netbox/dcim/choices.py:1532 msgid "Half" msgstr "Half" -#: netbox/dcim/choices.py:1512 +#: netbox/dcim/choices.py:1533 msgid "Full" msgstr "Volledig" -#: netbox/dcim/choices.py:1513 netbox/netbox/preferences.py:32 +#: netbox/dcim/choices.py:1534 netbox/netbox/preferences.py:32 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Auto" -#: netbox/dcim/choices.py:1525 +#: netbox/dcim/choices.py:1546 msgid "Access" msgstr "Toegang" -#: netbox/dcim/choices.py:1526 netbox/ipam/tables/vlans.py:148 +#: netbox/dcim/choices.py:1547 netbox/ipam/tables/vlans.py:148 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Getagd" -#: netbox/dcim/choices.py:1527 +#: netbox/dcim/choices.py:1548 msgid "Tagged (All)" msgstr "Getagd (Alles)" -#: netbox/dcim/choices.py:1528 netbox/templates/ipam/vlan_edit.html:26 +#: netbox/dcim/choices.py:1549 netbox/templates/ipam/vlan_edit.html:26 msgid "Q-in-Q (802.1ad)" msgstr "Q-in-Q (802.1ad)" -#: netbox/dcim/choices.py:1557 +#: netbox/dcim/choices.py:1578 msgid "IEEE Standard" msgstr "IEEE-standaard" -#: netbox/dcim/choices.py:1568 +#: netbox/dcim/choices.py:1589 msgid "Passive 24V (2-pair)" msgstr "Passief 24V (2 paren)" -#: netbox/dcim/choices.py:1569 +#: netbox/dcim/choices.py:1590 msgid "Passive 24V (4-pair)" msgstr "Passief 24V (4 paren)" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1591 msgid "Passive 48V (2-pair)" msgstr "Passief 48V (2 paren)" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1592 msgid "Passive 48V (4-pair)" msgstr "Passief 48V (4 paren)" -#: netbox/dcim/choices.py:1644 +#: netbox/dcim/choices.py:1665 msgid "Copper" msgstr "Koper" -#: netbox/dcim/choices.py:1667 +#: netbox/dcim/choices.py:1688 msgid "Fiber Optic" msgstr "Glasvezel" -#: netbox/dcim/choices.py:1703 netbox/dcim/choices.py:1917 +#: netbox/dcim/choices.py:1724 netbox/dcim/choices.py:1938 msgid "USB" msgstr "USB" -#: netbox/dcim/choices.py:1759 +#: netbox/dcim/choices.py:1780 msgid "Single" msgstr "Alleenstaand" -#: netbox/dcim/choices.py:1761 +#: netbox/dcim/choices.py:1782 msgid "1C1P" msgstr "1PC" -#: netbox/dcim/choices.py:1762 +#: netbox/dcim/choices.py:1783 msgid "1C2P" msgstr "1C2P" -#: netbox/dcim/choices.py:1763 +#: netbox/dcim/choices.py:1784 msgid "1C4P" msgstr "14 STUKS" -#: netbox/dcim/choices.py:1764 +#: netbox/dcim/choices.py:1785 msgid "1C6P" msgstr "16 STUKS" -#: netbox/dcim/choices.py:1765 +#: netbox/dcim/choices.py:1786 msgid "1C8P" msgstr "18 STUKS" -#: netbox/dcim/choices.py:1766 +#: netbox/dcim/choices.py:1787 msgid "1C12P" msgstr "1X12P" -#: netbox/dcim/choices.py:1767 +#: netbox/dcim/choices.py:1788 msgid "1C16P" msgstr "1C16P" -#: netbox/dcim/choices.py:1771 +#: netbox/dcim/choices.py:1792 msgid "Trunk" msgstr "Kofferbak" -#: netbox/dcim/choices.py:1773 +#: netbox/dcim/choices.py:1794 msgid "2C1P trunk" msgstr "2C1P kofferbak" -#: netbox/dcim/choices.py:1774 +#: netbox/dcim/choices.py:1795 msgid "2C2P trunk" msgstr "2C2P-kofferbak" -#: netbox/dcim/choices.py:1775 +#: netbox/dcim/choices.py:1796 msgid "2C4P trunk" msgstr "2C4P kofferbak" -#: netbox/dcim/choices.py:1776 +#: netbox/dcim/choices.py:1797 msgid "2C4P trunk (shuffle)" msgstr "24CP-kofferbak (shuffle)" -#: netbox/dcim/choices.py:1777 +#: netbox/dcim/choices.py:1798 msgid "2C6P trunk" msgstr "2C6P kofferbak" -#: netbox/dcim/choices.py:1778 +#: netbox/dcim/choices.py:1799 msgid "2C8P trunk" msgstr "C28P kofferbak" -#: netbox/dcim/choices.py:1779 +#: netbox/dcim/choices.py:1800 msgid "2C12P trunk" msgstr "2C12P kofferbak" -#: netbox/dcim/choices.py:1780 +#: netbox/dcim/choices.py:1801 msgid "4C1P trunk" msgstr "4C1P kofferbak" -#: netbox/dcim/choices.py:1781 +#: netbox/dcim/choices.py:1802 msgid "4C2P trunk" msgstr "4C2P-kofferbak" -#: netbox/dcim/choices.py:1782 +#: netbox/dcim/choices.py:1803 msgid "4C4P trunk" msgstr "4C4P kofferbak" -#: netbox/dcim/choices.py:1783 +#: netbox/dcim/choices.py:1804 msgid "4C4P trunk (shuffle)" msgstr "4C4P kofferbak (shuffle)" -#: netbox/dcim/choices.py:1784 +#: netbox/dcim/choices.py:1805 msgid "4C6P trunk" msgstr "4C6P kofferbak" -#: netbox/dcim/choices.py:1785 +#: netbox/dcim/choices.py:1806 msgid "4C8P trunk" msgstr "4C8P kofferbak" -#: netbox/dcim/choices.py:1786 +#: netbox/dcim/choices.py:1807 msgid "8C4P trunk" msgstr "8C4P kofferbak" -#: netbox/dcim/choices.py:1790 +#: netbox/dcim/choices.py:1811 msgid "Breakout" msgstr "Uitbraak" -#: netbox/dcim/choices.py:1792 +#: netbox/dcim/choices.py:1813 msgid "1C4P:4C1P breakout" msgstr "1C4P:4C1P-uitbraak" -#: netbox/dcim/choices.py:1793 +#: netbox/dcim/choices.py:1814 msgid "1C6P:6C1P breakout" msgstr "1C6P:6C1P-uitbraak" -#: netbox/dcim/choices.py:1794 +#: netbox/dcim/choices.py:1815 msgid "2C4P:8C1P breakout (shuffle)" msgstr "2C4P:8C1P-uitbraak (shuffle)" -#: netbox/dcim/choices.py:1852 +#: netbox/dcim/choices.py:1873 msgid "Copper - Twisted Pair (UTP/STP)" msgstr "Koper - Gedraaid paar (UTP/STP)" -#: netbox/dcim/choices.py:1866 +#: netbox/dcim/choices.py:1887 msgid "Copper - Twinax (DAC)" msgstr "Koper - Twinax (DAC)" -#: netbox/dcim/choices.py:1873 +#: netbox/dcim/choices.py:1894 msgid "Copper - Coaxial" msgstr "Koper - Coaxiaal" -#: netbox/dcim/choices.py:1888 +#: netbox/dcim/choices.py:1909 msgid "Fiber - Multimode" msgstr "Fiber - Multimode" -#: netbox/dcim/choices.py:1899 +#: netbox/dcim/choices.py:1920 msgid "Fiber - Single-mode" msgstr "Fiber - Single-modus" -#: netbox/dcim/choices.py:1907 +#: netbox/dcim/choices.py:1928 msgid "Fiber - Other" msgstr "Vezel - overig" -#: netbox/dcim/choices.py:1932 netbox/dcim/forms/filtersets.py:1402 +#: netbox/dcim/choices.py:1953 netbox/dcim/forms/filtersets.py:1402 msgid "Connected" msgstr "Verbonden" -#: netbox/dcim/choices.py:1951 netbox/netbox/choices.py:177 +#: netbox/dcim/choices.py:1972 netbox/netbox/choices.py:177 msgid "Kilometers" msgstr "Kilometers" -#: netbox/dcim/choices.py:1952 netbox/netbox/choices.py:178 +#: netbox/dcim/choices.py:1973 netbox/netbox/choices.py:178 #: netbox/templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Meters" -#: netbox/dcim/choices.py:1953 +#: netbox/dcim/choices.py:1974 msgid "Centimeters" msgstr "Centimeters" -#: netbox/dcim/choices.py:1954 netbox/netbox/choices.py:179 +#: netbox/dcim/choices.py:1975 netbox/netbox/choices.py:179 msgid "Miles" msgstr "Mijlen" -#: netbox/dcim/choices.py:1955 netbox/netbox/choices.py:180 +#: netbox/dcim/choices.py:1976 netbox/netbox/choices.py:180 #: netbox/templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Feet" -#: netbox/dcim/choices.py:2003 +#: netbox/dcim/choices.py:2024 msgid "Redundant" msgstr "Redundant" -#: netbox/dcim/choices.py:2024 +#: netbox/dcim/choices.py:2045 msgid "Single phase" msgstr "Een fase" -#: netbox/dcim/choices.py:2025 +#: netbox/dcim/choices.py:2046 msgid "Three-phase" msgstr "Drie fase" -#: netbox/dcim/choices.py:2041 netbox/extras/choices.py:53 +#: netbox/dcim/choices.py:2062 netbox/extras/choices.py:53 #: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70 #: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Uitgeschakeld" -#: netbox/dcim/choices.py:2042 +#: netbox/dcim/choices.py:2063 msgid "Faulty" msgstr "Defect" @@ -3882,8 +3786,9 @@ msgstr "Is volledige diepte" #: netbox/dcim/filtersets.py:1323 netbox/dcim/forms/filtersets.py:920 #: netbox/dcim/forms/filtersets.py:1634 netbox/dcim/forms/filtersets.py:1979 -#: netbox/dcim/forms/model_forms.py:1915 netbox/dcim/models/devices.py:1313 -#: netbox/dcim/models/devices.py:1336 netbox/virtualization/filtersets.py:230 +#: netbox/dcim/forms/model_forms.py:1941 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1336 netbox/dcim/ui/panels.py:366 +#: netbox/dcim/ui/panels.py:504 netbox/virtualization/filtersets.py:230 #: netbox/virtualization/filtersets.py:318 #: netbox/virtualization/forms/filtersets.py:191 #: netbox/virtualization/forms/filtersets.py:245 @@ -3971,7 +3876,6 @@ msgstr "Virtueel chassis (ID)" #: netbox/dcim/forms/object_create.py:329 netbox/dcim/tables/devices.py:215 #: netbox/netbox/navigation/menu.py:82 #: netbox/templates/dcim/device_edit.html:95 -#: netbox/templates/dcim/virtualchassis.html:10 #: netbox/templates/dcim/virtualchassis_edit.html:28 msgid "Virtual Chassis" msgstr "Virtueel chassis" @@ -4031,7 +3935,7 @@ msgstr "Is toegewezen" msgid "Is primary" msgstr "Is primair" -#: netbox/dcim/filtersets.py:2060 netbox/templates/dcim/interface.html:81 +#: netbox/dcim/filtersets.py:2060 #: netbox/virtualization/forms/model_forms.py:386 #: netbox/virtualization/ui/panels.py:62 msgid "802.1Q Mode" @@ -4048,27 +3952,25 @@ msgstr "Toegewezen VID" #: netbox/dcim/filtersets.py:2074 netbox/dcim/forms/bulk_edit.py:1512 #: netbox/dcim/forms/bulk_import.py:1034 netbox/dcim/forms/filtersets.py:1687 -#: netbox/dcim/forms/model_forms.py:1555 +#: netbox/dcim/forms/model_forms.py:1581 #: netbox/dcim/models/device_components.py:867 -#: netbox/dcim/tables/devices.py:667 netbox/ipam/filtersets.py:360 -#: netbox/ipam/filtersets.py:372 netbox/ipam/filtersets.py:511 -#: netbox/ipam/filtersets.py:618 netbox/ipam/filtersets.py:630 -#: netbox/ipam/forms/bulk_edit.py:190 netbox/ipam/forms/bulk_edit.py:240 -#: netbox/ipam/forms/bulk_edit.py:281 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:248 netbox/ipam/forms/bulk_import.py:284 -#: netbox/ipam/forms/filtersets.py:70 netbox/ipam/forms/filtersets.py:194 -#: netbox/ipam/forms/filtersets.py:348 netbox/ipam/forms/model_forms.py:68 -#: netbox/ipam/forms/model_forms.py:203 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:303 netbox/ipam/forms/model_forms.py:466 -#: netbox/ipam/forms/model_forms.py:480 netbox/ipam/forms/model_forms.py:494 -#: netbox/ipam/models/ip.py:224 netbox/ipam/models/ip.py:518 -#: netbox/ipam/models/ip.py:747 netbox/ipam/models/vrfs.py:61 -#: netbox/ipam/tables/ip.py:187 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:311 netbox/ipam/tables/ip.py:413 -#: netbox/templates/dcim/interface.html:170 -#: netbox/templates/ipam/ipaddress.html:18 -#: netbox/templates/ipam/iprange.html:47 netbox/templates/ipam/prefix.html:19 -#: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 +#: netbox/dcim/tables/devices.py:667 netbox/dcim/ui/panels.py:507 +#: netbox/ipam/filtersets.py:360 netbox/ipam/filtersets.py:372 +#: netbox/ipam/filtersets.py:511 netbox/ipam/filtersets.py:618 +#: netbox/ipam/filtersets.py:630 netbox/ipam/forms/bulk_edit.py:190 +#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:281 +#: netbox/ipam/forms/bulk_import.py:163 netbox/ipam/forms/bulk_import.py:248 +#: netbox/ipam/forms/bulk_import.py:284 netbox/ipam/forms/filtersets.py:70 +#: netbox/ipam/forms/filtersets.py:194 netbox/ipam/forms/filtersets.py:348 +#: netbox/ipam/forms/model_forms.py:68 netbox/ipam/forms/model_forms.py:203 +#: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:303 +#: netbox/ipam/forms/model_forms.py:466 netbox/ipam/forms/model_forms.py:480 +#: netbox/ipam/forms/model_forms.py:494 netbox/ipam/models/ip.py:224 +#: netbox/ipam/models/ip.py:528 netbox/ipam/models/ip.py:757 +#: netbox/ipam/models/vrfs.py:61 netbox/ipam/tables/ip.py:187 +#: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:311 +#: netbox/ipam/tables/ip.py:413 netbox/ipam/ui/panels.py:102 +#: netbox/ipam/ui/panels.py:111 netbox/ipam/ui/panels.py:139 #: netbox/virtualization/forms/bulk_edit.py:226 #: netbox/virtualization/forms/bulk_import.py:218 #: netbox/virtualization/forms/filtersets.py:250 @@ -4091,9 +3993,9 @@ msgid "L2VPN (ID)" msgstr "L2VPN (ID)" #: netbox/dcim/filtersets.py:2092 netbox/dcim/forms/filtersets.py:1692 -#: netbox/dcim/tables/devices.py:607 netbox/ipam/filtersets.py:1087 -#: netbox/ipam/forms/filtersets.py:613 netbox/ipam/tables/vlans.py:116 -#: netbox/templates/dcim/interface.html:104 netbox/templates/ipam/vlan.html:82 +#: netbox/dcim/tables/devices.py:607 netbox/dcim/ui/panels.py:487 +#: netbox/ipam/filtersets.py:1087 netbox/ipam/forms/filtersets.py:613 +#: netbox/ipam/tables/vlans.py:116 netbox/ipam/ui/panels.py:206 #: netbox/virtualization/forms/filtersets.py:255 #: netbox/vpn/forms/bulk_import.py:285 netbox/vpn/forms/filtersets.py:268 #: netbox/vpn/forms/model_forms.py:407 netbox/vpn/forms/model_forms.py:425 @@ -4107,10 +4009,9 @@ msgid "VLAN Translation Policy (ID)" msgstr "VLAN-vertaalbeleid (ID)" #: netbox/dcim/filtersets.py:2105 netbox/dcim/forms/filtersets.py:1658 -#: netbox/dcim/forms/model_forms.py:1572 +#: netbox/dcim/forms/model_forms.py:1598 #: netbox/dcim/models/device_components.py:668 #: netbox/ipam/forms/filtersets.py:531 netbox/ipam/forms/model_forms.py:703 -#: netbox/templates/ipam/vlantranslationpolicy.html:11 #: netbox/virtualization/forms/bulk_edit.py:231 #: netbox/virtualization/forms/filtersets.py:265 #: netbox/virtualization/forms/model_forms.py:364 @@ -4152,9 +4053,6 @@ msgid "LAG interface (ID)" msgstr "LAG-interface (ID)" #: netbox/dcim/filtersets.py:2185 netbox/dcim/tables/devices.py:1194 -#: netbox/templates/dcim/interface.html:149 -#: netbox/templates/dcim/macaddress.html:11 -#: netbox/templates/dcim/macaddress.html:14 #: netbox/virtualization/ui/panels.py:71 msgid "MAC Address" msgstr "MAC-adres" @@ -4163,15 +4061,14 @@ msgstr "MAC-adres" msgid "Primary MAC address (ID)" msgstr "Primair MAC-adres (ID)" -#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1559 +#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1585 #: netbox/virtualization/filtersets.py:331 #: netbox/virtualization/forms/model_forms.py:302 msgid "Primary MAC address" msgstr "Primair MAC-adres" #: netbox/dcim/filtersets.py:2225 netbox/dcim/filtersets.py:2237 -#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1895 -#: netbox/templates/dcim/virtualdevicecontext.html:15 +#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1921 msgid "Virtual Device Context" msgstr "Context van het virtuele apparaat" @@ -4230,6 +4127,7 @@ msgstr "Voedingspaneel (ID)" #: netbox/netbox/forms/bulk_import.py:27 netbox/netbox/forms/mixins.py:131 #: netbox/netbox/tables/columns.py:495 #: netbox/templates/circuits/inc/circuit_termination.html:29 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:29 #: netbox/templates/generic/bulk_edit.html:78 #: netbox/templates/inc/panels/tags.html:5 #: netbox/utilities/forms/fields/fields.py:101 @@ -4237,14 +4135,12 @@ msgid "Tags" msgstr "Labels" #: netbox/dcim/forms/bulk_create.py:116 netbox/dcim/forms/filtersets.py:1842 -#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:595 -#: netbox/dcim/forms/model_forms.py:661 netbox/dcim/forms/object_create.py:155 +#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:621 +#: netbox/dcim/forms/model_forms.py:687 netbox/dcim/forms/object_create.py:155 #: netbox/dcim/forms/object_create.py:256 netbox/dcim/tables/devices.py:169 -#: netbox/templates/dcim/frontport.html:132 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/panels/front_port_mappings.html:9 +#: netbox/templates/dcim/panels/rear_port_mappings.html:9 #: netbox/templates/dcim/panels/virtual_chassis_members.html:9 -#: netbox/templates/dcim/rearport.html:126 -#: netbox/templates/dcim/virtualchassis.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:67 msgid "Position" msgstr "Positie" @@ -4275,7 +4171,7 @@ msgid "Contact E-mail" msgstr "E-mailadres voor contact" #: netbox/dcim/forms/bulk_edit.py:152 netbox/dcim/forms/bulk_import.py:138 -#: netbox/dcim/forms/model_forms.py:147 +#: netbox/dcim/forms/model_forms.py:157 msgid "Time zone" msgstr "Tijdzone" @@ -4290,17 +4186,16 @@ msgstr "Tijdzone" #: netbox/dcim/forms/filtersets.py:546 netbox/dcim/forms/filtersets.py:695 #: netbox/dcim/forms/filtersets.py:801 netbox/dcim/forms/filtersets.py:884 #: netbox/dcim/forms/filtersets.py:1096 netbox/dcim/forms/filtersets.py:1907 -#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:223 -#: netbox/dcim/forms/model_forms.py:354 netbox/dcim/forms/model_forms.py:366 -#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:540 -#: netbox/dcim/forms/model_forms.py:1239 netbox/dcim/forms/model_forms.py:1722 +#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:249 +#: netbox/dcim/forms/model_forms.py:380 netbox/dcim/forms/model_forms.py:392 +#: netbox/dcim/forms/model_forms.py:462 netbox/dcim/forms/model_forms.py:566 +#: netbox/dcim/forms/model_forms.py:1265 netbox/dcim/forms/model_forms.py:1748 #: netbox/dcim/forms/object_import.py:188 netbox/dcim/tables/devices.py:101 #: netbox/dcim/tables/devices.py:176 netbox/dcim/tables/devices.py:1035 #: netbox/dcim/tables/devicetypes.py:87 netbox/dcim/tables/devicetypes.py:322 #: netbox/dcim/tables/modules.py:47 netbox/dcim/tables/modules.py:90 #: netbox/dcim/tables/racks.py:51 netbox/dcim/tables/racks.py:121 -#: netbox/templates/dcim/inventoryitem.html:48 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/panels/installed_module.html:13 #: netbox/templates/dcim/panels/module_type.html:7 msgid "Manufacturer" msgstr "Fabrikant" @@ -4325,7 +4220,7 @@ msgid "Height (U)" msgstr "Hoogte (U)" #: netbox/dcim/forms/bulk_edit.py:244 netbox/dcim/forms/bulk_edit.py:387 -#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:39 +#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:41 msgid "Descending units" msgstr "Aflopende eenheden" @@ -4359,10 +4254,10 @@ msgstr "Inbouwdiepte" #: netbox/dcim/forms/filtersets.py:362 netbox/dcim/forms/filtersets.py:441 #: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:651 #: netbox/dcim/forms/filtersets.py:683 netbox/dcim/forms/filtersets.py:755 -#: netbox/dcim/forms/model_forms.py:237 netbox/dcim/forms/model_forms.py:318 +#: netbox/dcim/forms/model_forms.py:263 netbox/dcim/forms/model_forms.py:344 #: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:55 #: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:162 -#: netbox/dcim/views.py:891 netbox/dcim/views.py:1019 +#: netbox/dcim/views.py:893 netbox/dcim/views.py:1021 #: netbox/extras/forms/bulk_edit.py:57 netbox/extras/forms/bulk_edit.py:137 #: netbox/extras/forms/bulk_edit.py:191 netbox/extras/forms/bulk_edit.py:219 #: netbox/extras/forms/bulk_edit.py:315 netbox/extras/forms/bulk_edit.py:341 @@ -4373,7 +4268,7 @@ msgstr "Inbouwdiepte" #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 #: netbox/templates/extras/tableconfig.html:41 -#: netbox/templates/extras/tag.html:32 netbox/templates/ipam/role.html:30 +#: netbox/templates/extras/tag.html:32 msgid "Weight" msgstr "Gewicht" @@ -4392,18 +4287,18 @@ msgid "Weight unit" msgstr "Gewichtseenheid" #: netbox/dcim/forms/bulk_edit.py:290 netbox/dcim/forms/filtersets.py:335 -#: netbox/dcim/forms/model_forms.py:233 netbox/dcim/forms/model_forms.py:272 +#: netbox/dcim/forms/model_forms.py:259 netbox/dcim/forms/model_forms.py:298 msgid "Rack Type" msgstr "Racktype" #: netbox/dcim/forms/bulk_edit.py:292 netbox/dcim/forms/bulk_edit.py:440 -#: netbox/dcim/forms/model_forms.py:236 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/model_forms.py:262 netbox/dcim/forms/model_forms.py:343 msgid "Outer Dimensions" msgstr "Buitenafmetingen" -#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:238 -#: netbox/dcim/forms/model_forms.py:319 netbox/dcim/ui/panels.py:135 -#: netbox/dcim/views.py:885 netbox/dcim/views.py:1017 +#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:345 netbox/dcim/ui/panels.py:137 +#: netbox/dcim/views.py:887 netbox/dcim/views.py:1019 #: netbox/extras/tables/tables.py:278 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 #: netbox/templates/extras/imageattachment.html:40 @@ -4411,8 +4306,8 @@ msgid "Dimensions" msgstr "Dimensies" #: netbox/dcim/forms/bulk_edit.py:297 netbox/dcim/forms/filtersets.py:336 -#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:240 -#: netbox/dcim/views.py:890 netbox/dcim/views.py:1018 +#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:266 +#: netbox/dcim/views.py:892 netbox/dcim/views.py:1020 #: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "Nummering" @@ -4423,13 +4318,14 @@ msgid "Rack type" msgstr "Racktype" #: netbox/dcim/forms/bulk_edit.py:363 netbox/dcim/forms/bulk_edit.py:708 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/templates/dcim/modulebay.html:70 +#: netbox/dcim/forms/bulk_edit.py:763 msgid "Serial Number" msgstr "Serienummer" #: netbox/dcim/forms/bulk_edit.py:366 netbox/dcim/forms/filtersets.py:429 #: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1116 #: netbox/dcim/forms/filtersets.py:1914 +#: netbox/templates/dcim/panels/installed_module.html:25 msgid "Asset tag" msgstr "Tag voor bedrijfsmiddelen" @@ -4450,13 +4346,12 @@ msgstr "Luchtstroom" #: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/filtersets.py:501 #: netbox/dcim/forms/filtersets.py:874 netbox/dcim/forms/filtersets.py:1086 #: netbox/dcim/forms/filtersets.py:1186 netbox/dcim/forms/filtersets.py:1325 -#: netbox/dcim/forms/model_forms.py:282 netbox/dcim/forms/model_forms.py:326 -#: netbox/dcim/forms/model_forms.py:586 netbox/dcim/forms/model_forms.py:871 +#: netbox/dcim/forms/model_forms.py:308 netbox/dcim/forms/model_forms.py:352 +#: netbox/dcim/forms/model_forms.py:612 netbox/dcim/forms/model_forms.py:897 #: netbox/dcim/forms/object_create.py:303 netbox/dcim/tables/devices.py:165 #: netbox/dcim/tables/power.py:67 netbox/dcim/tables/racks.py:204 #: netbox/ipam/forms/filtersets.py:486 #: netbox/templates/dcim/inc/cable_termination.html:16 -#: netbox/templates/dcim/powerfeed.html:28 #: netbox/templates/dcim/rack/base.html:4 #: netbox/virtualization/forms/model_forms.py:107 msgid "Rack" @@ -4466,14 +4361,14 @@ msgstr "Rek" #: netbox/dcim/forms/filtersets.py:360 netbox/dcim/forms/filtersets.py:440 #: netbox/dcim/forms/filtersets.py:532 netbox/dcim/forms/filtersets.py:677 #: netbox/dcim/forms/filtersets.py:822 netbox/dcim/forms/filtersets.py:1043 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:787 -#: netbox/dcim/forms/model_forms.py:1790 +#: netbox/dcim/forms/model_forms.py:470 netbox/dcim/forms/model_forms.py:813 +#: netbox/dcim/forms/model_forms.py:1816 #: netbox/templates/dcim/device_edit.html:22 msgid "Hardware" msgstr "Hardware" #: netbox/dcim/forms/bulk_edit.py:490 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:397 msgid "Default platform" msgstr "Standaardplatform" @@ -4490,29 +4385,29 @@ msgstr "U-hoogte" msgid "Exclude from utilization" msgstr "Uitsluiten van gebruik" -#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:385 -#: netbox/dcim/forms/model_forms.py:1022 netbox/dcim/forms/model_forms.py:1064 -#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1119 -#: netbox/dcim/forms/model_forms.py:1140 netbox/dcim/forms/model_forms.py:1180 -#: netbox/dcim/forms/model_forms.py:1198 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:411 +#: netbox/dcim/forms/model_forms.py:1048 netbox/dcim/forms/model_forms.py:1090 +#: netbox/dcim/forms/model_forms.py:1117 netbox/dcim/forms/model_forms.py:1145 +#: netbox/dcim/forms/model_forms.py:1166 netbox/dcim/forms/model_forms.py:1206 +#: netbox/dcim/forms/model_forms.py:1224 #: netbox/dcim/forms/object_create.py:119 netbox/dcim/tables/devicetypes.py:84 -#: netbox/dcim/ui/panels.py:125 netbox/templates/dcim/devicebay.html:52 +#: netbox/dcim/ui/panels.py:127 msgid "Device Type" msgstr "Soort apparaat" -#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:412 -#: netbox/dcim/views.py:1590 netbox/extras/forms/model_forms.py:601 +#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:438 +#: netbox/dcim/views.py:1592 netbox/extras/forms/model_forms.py:601 msgid "Schema" msgstr "Schema" #: netbox/dcim/forms/bulk_edit.py:549 netbox/dcim/forms/bulk_edit.py:556 #: netbox/dcim/forms/bulk_edit.py:787 netbox/dcim/forms/bulk_import.py:460 #: netbox/dcim/forms/bulk_import.py:1459 netbox/dcim/forms/filtersets.py:690 -#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:418 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/tables/modules.py:43 +#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:444 +#: netbox/dcim/forms/model_forms.py:457 netbox/dcim/tables/modules.py:43 #: netbox/extras/forms/filtersets.py:413 #: netbox/extras/forms/model_forms.py:626 netbox/extras/tables/tables.py:627 -#: netbox/templates/account/base.html:7 netbox/templates/dcim/cable.html:23 +#: netbox/templates/account/base.html:7 #: netbox/templates/extras/configcontext.html:21 #: netbox/templates/inc/user_menu.html:38 netbox/vpn/forms/bulk_edit.py:213 #: netbox/vpn/forms/filtersets.py:203 netbox/vpn/forms/model_forms.py:378 @@ -4520,22 +4415,21 @@ msgid "Profile" msgstr "Profiel" #: netbox/dcim/forms/bulk_edit.py:588 netbox/dcim/forms/filtersets.py:1379 -#: netbox/dcim/forms/model_forms.py:443 netbox/dcim/forms/model_forms.py:1023 -#: netbox/dcim/forms/model_forms.py:1065 netbox/dcim/forms/model_forms.py:1092 -#: netbox/dcim/forms/model_forms.py:1120 netbox/dcim/forms/model_forms.py:1141 -#: netbox/dcim/forms/model_forms.py:1181 netbox/dcim/forms/model_forms.py:1199 +#: netbox/dcim/forms/model_forms.py:469 netbox/dcim/forms/model_forms.py:1049 +#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1118 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1167 +#: netbox/dcim/forms/model_forms.py:1207 netbox/dcim/forms/model_forms.py:1225 #: netbox/dcim/forms/object_create.py:120 netbox/dcim/tables/modules.py:52 -#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2848 -#: netbox/templates/dcim/modulebay.html:66 +#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2851 msgid "Module Type" msgstr "Moduletype" -#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:388 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:414 msgid "Chassis" msgstr "Chassis" #: netbox/dcim/forms/bulk_edit.py:611 netbox/dcim/models/devices.py:390 -#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:142 +#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:144 msgid "VM role" msgstr "VM-rol" @@ -4545,8 +4439,8 @@ msgstr "VM-rol" #: netbox/dcim/forms/bulk_import.py:561 netbox/dcim/forms/bulk_import.py:686 #: netbox/dcim/forms/bulk_import.py:690 netbox/dcim/forms/filtersets.py:775 #: netbox/dcim/forms/filtersets.py:806 netbox/dcim/forms/filtersets.py:925 -#: netbox/dcim/forms/model_forms.py:509 netbox/dcim/forms/model_forms.py:546 -#: netbox/dcim/forms/model_forms.py:670 +#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:572 +#: netbox/dcim/forms/model_forms.py:696 #: netbox/virtualization/forms/bulk_import.py:145 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/filtersets.py:207 @@ -4556,20 +4450,21 @@ msgstr "Configuratiesjabloon" #: netbox/dcim/forms/bulk_edit.py:657 netbox/dcim/forms/bulk_edit.py:1040 #: netbox/dcim/forms/bulk_import.py:592 netbox/dcim/forms/filtersets.py:133 -#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:616 -#: netbox/dcim/forms/model_forms.py:986 netbox/dcim/forms/model_forms.py:1003 +#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:642 +#: netbox/dcim/forms/model_forms.py:1012 netbox/dcim/forms/model_forms.py:1029 #: netbox/extras/filtersets.py:729 +#: netbox/templates/dcim/panels/installed_device.html:13 msgid "Device type" msgstr "Soort apparaat" #: netbox/dcim/forms/bulk_edit.py:668 netbox/dcim/forms/bulk_import.py:573 -#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:624 +#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:650 msgid "Device role" msgstr "Rol van het apparaat" #: netbox/dcim/forms/bulk_edit.py:691 netbox/dcim/forms/bulk_import.py:598 #: netbox/dcim/forms/filtersets.py:789 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/model_forms.py:557 netbox/dcim/forms/model_forms.py:629 +#: netbox/dcim/forms/model_forms.py:583 netbox/dcim/forms/model_forms.py:655 #: netbox/dcim/tables/devices.py:191 netbox/extras/filtersets.py:745 #: netbox/virtualization/forms/bulk_edit.py:131 #: netbox/virtualization/forms/bulk_import.py:135 @@ -4581,7 +4476,7 @@ msgstr "Platform" #: netbox/dcim/forms/bulk_edit.py:716 netbox/dcim/forms/bulk_import.py:617 #: netbox/dcim/forms/filtersets.py:830 netbox/dcim/forms/filtersets.py:1000 -#: netbox/dcim/forms/model_forms.py:638 netbox/dcim/tables/devices.py:211 +#: netbox/dcim/forms/model_forms.py:664 netbox/dcim/tables/devices.py:211 #: netbox/extras/filtersets.py:778 netbox/extras/forms/filtersets.py:406 #: netbox/ipam/forms/filtersets.py:457 netbox/ipam/forms/filtersets.py:491 #: netbox/virtualization/filtersets.py:148 @@ -4610,7 +4505,8 @@ msgid "Virtualization" msgstr "Virtualisatie" #: netbox/dcim/forms/bulk_edit.py:744 netbox/dcim/forms/bulk_import.py:759 -#: netbox/dcim/forms/model_forms.py:765 netbox/dcim/forms/model_forms.py:1011 +#: netbox/dcim/forms/model_forms.py:791 netbox/dcim/forms/model_forms.py:1037 +#: netbox/templates/dcim/panels/installed_module.html:17 msgid "Module type" msgstr "Moduletype" @@ -4620,25 +4516,15 @@ msgstr "Moduletype" #: netbox/dcim/forms/bulk_edit.py:1146 netbox/dcim/forms/bulk_edit.py:1173 #: netbox/dcim/forms/bulk_edit.py:1200 netbox/dcim/forms/bulk_edit.py:1218 #: netbox/dcim/forms/bulk_edit.py:1236 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/object_create.py:48 netbox/templates/dcim/cable.html:36 -#: netbox/templates/dcim/consoleport.html:32 -#: netbox/templates/dcim/consoleserverport.html:32 -#: netbox/templates/dcim/devicebay.html:28 -#: netbox/templates/dcim/frontport.html:32 +#: netbox/dcim/forms/object_create.py:48 #: netbox/templates/dcim/inc/panels/inventory_items.html:19 -#: netbox/templates/dcim/interface.html:42 -#: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:34 -#: netbox/templates/dcim/poweroutlet.html:32 -#: netbox/templates/dcim/powerport.html:32 -#: netbox/templates/dcim/rearport.html:32 +#: netbox/templates/dcim/panels/component_inventory_items.html:9 #: netbox/templates/extras/customfield.html:26 #: netbox/templates/generic/bulk_import.html:193 msgid "Label" msgstr "Label" #: netbox/dcim/forms/bulk_edit.py:807 netbox/dcim/forms/filtersets.py:1224 -#: netbox/templates/dcim/cable.html:54 msgid "Length" msgstr "Lengte" @@ -4648,34 +4534,29 @@ msgid "Length unit" msgstr "Lengte-eenheid" #: netbox/dcim/forms/bulk_edit.py:830 -#: netbox/templates/dcim/virtualchassis.html:13 msgid "Domain" msgstr "Domein" #: netbox/dcim/forms/bulk_edit.py:886 netbox/dcim/forms/bulk_import.py:1646 -#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:865 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:891 msgid "Power panel" msgstr "Voedingspaneel" #: netbox/dcim/forms/bulk_edit.py:908 netbox/dcim/forms/bulk_import.py:1682 #: netbox/dcim/forms/filtersets.py:1338 -#: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Levering" #: netbox/dcim/forms/bulk_edit.py:914 netbox/dcim/forms/bulk_import.py:1687 #: netbox/dcim/forms/filtersets.py:1343 -#: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Fase" #: netbox/dcim/forms/bulk_edit.py:920 netbox/dcim/forms/filtersets.py:1348 -#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Spanning" #: netbox/dcim/forms/bulk_edit.py:924 netbox/dcim/forms/filtersets.py:1352 -#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Stroomsterkte" @@ -4688,7 +4569,7 @@ msgid "Maximum draw" msgstr "Maximale trekking" #: netbox/dcim/forms/bulk_edit.py:1018 -#: netbox/dcim/models/device_component_templates.py:292 +#: netbox/dcim/models/device_component_templates.py:282 #: netbox/dcim/models/device_components.py:440 msgid "Maximum power draw (watts)" msgstr "Maximaal stroomverbruik (watt)" @@ -4698,14 +4579,14 @@ msgid "Allocated draw" msgstr "Toegewezen loting" #: netbox/dcim/forms/bulk_edit.py:1024 -#: netbox/dcim/models/device_component_templates.py:299 +#: netbox/dcim/models/device_component_templates.py:289 #: netbox/dcim/models/device_components.py:447 msgid "Allocated power draw (watts)" msgstr "Toegewezen stroomverbruik (watt)" #: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_import.py:892 -#: netbox/dcim/forms/model_forms.py:1080 netbox/dcim/forms/model_forms.py:1445 -#: netbox/dcim/forms/model_forms.py:1774 netbox/dcim/forms/object_import.py:56 +#: netbox/dcim/forms/model_forms.py:1106 netbox/dcim/forms/model_forms.py:1471 +#: netbox/dcim/forms/model_forms.py:1800 netbox/dcim/forms/object_import.py:56 msgid "Power port" msgstr "Voedingspoort" @@ -4714,23 +4595,23 @@ msgid "Feed leg" msgstr "Voer de poot in" #: netbox/dcim/forms/bulk_edit.py:1112 netbox/dcim/forms/bulk_edit.py:1433 -#: netbox/dcim/forms/filtersets.py:1719 +#: netbox/dcim/forms/filtersets.py:1719 netbox/dcim/ui/panels.py:478 msgid "Management only" msgstr "Alleen voor beheer" #: netbox/dcim/forms/bulk_edit.py:1122 netbox/dcim/forms/bulk_edit.py:1439 #: netbox/dcim/forms/bulk_import.py:985 netbox/dcim/forms/filtersets.py:1643 #: netbox/dcim/forms/filtersets.py:1728 netbox/dcim/forms/object_import.py:91 -#: netbox/dcim/models/device_component_templates.py:462 -#: netbox/dcim/models/device_components.py:839 +#: netbox/dcim/models/device_component_templates.py:452 +#: netbox/dcim/models/device_components.py:839 netbox/dcim/ui/panels.py:480 msgid "PoE mode" msgstr "PoE-modus" #: netbox/dcim/forms/bulk_edit.py:1128 netbox/dcim/forms/bulk_edit.py:1445 #: netbox/dcim/forms/bulk_import.py:991 netbox/dcim/forms/filtersets.py:1648 #: netbox/dcim/forms/filtersets.py:1733 netbox/dcim/forms/object_import.py:96 -#: netbox/dcim/models/device_component_templates.py:469 -#: netbox/dcim/models/device_components.py:846 +#: netbox/dcim/models/device_component_templates.py:459 +#: netbox/dcim/models/device_components.py:846 netbox/dcim/ui/panels.py:481 msgid "PoE type" msgstr "PoE-type" @@ -4739,36 +4620,26 @@ msgstr "PoE-type" msgid "Wireless role" msgstr "Draadloze rol" -#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:786 -#: netbox/dcim/forms/model_forms.py:1390 netbox/dcim/tables/devices.py:330 -#: netbox/templates/dcim/consoleport.html:24 -#: netbox/templates/dcim/consoleserverport.html:24 -#: netbox/templates/dcim/frontport.html:24 -#: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/modulebay.html:26 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/poweroutlet.html:24 -#: netbox/templates/dcim/powerport.html:24 -#: netbox/templates/dcim/rearport.html:24 +#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:812 +#: netbox/dcim/forms/model_forms.py:1416 netbox/dcim/tables/devices.py:330 +#: netbox/templates/dcim/panels/installed_module.html:9 msgid "Module" msgstr "Module" #: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/tables/devices.py:746 -#: netbox/templates/dcim/interface.html:134 +#: netbox/dcim/ui/panels.py:495 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1472 +#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1498 msgid "Virtual device contexts" msgstr "Contexten van virtuele apparaten" #: netbox/dcim/forms/bulk_edit.py:1424 netbox/dcim/forms/bulk_import.py:819 #: netbox/dcim/forms/bulk_import.py:845 netbox/dcim/forms/filtersets.py:1429 #: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1607 -#: netbox/dcim/tables/devices.py:651 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 -#: netbox/templates/dcim/consoleport.html:40 -#: netbox/templates/dcim/consoleserverport.html:40 +#: netbox/dcim/tables/devices.py:651 netbox/dcim/ui/panels.py:474 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:64 msgid "Speed" msgstr "Snelheid" @@ -4785,7 +4656,7 @@ msgid "Mode" msgstr "Modus" #: netbox/dcim/forms/bulk_edit.py:1461 netbox/dcim/forms/bulk_import.py:1000 -#: netbox/dcim/forms/model_forms.py:1521 netbox/ipam/forms/bulk_import.py:177 +#: netbox/dcim/forms/model_forms.py:1547 netbox/ipam/forms/bulk_import.py:177 #: netbox/ipam/forms/filtersets.py:582 netbox/ipam/models/vlans.py:93 #: netbox/virtualization/forms/bulk_edit.py:205 #: netbox/virtualization/forms/bulk_import.py:184 @@ -4794,16 +4665,15 @@ msgid "VLAN group" msgstr "VLAN-groep" #: netbox/dcim/forms/bulk_edit.py:1470 netbox/dcim/forms/bulk_import.py:1007 -#: netbox/dcim/forms/model_forms.py:1527 netbox/dcim/tables/devices.py:616 -#: netbox/templates/dcim/interface.html:91 -#: netbox/virtualization/forms/bulk_edit.py:213 +#: netbox/dcim/forms/model_forms.py:1553 netbox/dcim/tables/devices.py:616 +#: netbox/dcim/ui/panels.py:484 netbox/virtualization/forms/bulk_edit.py:213 #: netbox/virtualization/forms/bulk_import.py:191 #: netbox/virtualization/forms/model_forms.py:331 msgid "Untagged VLAN" msgstr "VLAN zonder label" #: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/bulk_import.py:1014 -#: netbox/dcim/forms/model_forms.py:1536 netbox/dcim/tables/devices.py:622 +#: netbox/dcim/forms/model_forms.py:1562 netbox/dcim/tables/devices.py:622 #: netbox/virtualization/forms/bulk_edit.py:221 #: netbox/virtualization/forms/bulk_import.py:198 #: netbox/virtualization/forms/model_forms.py:340 @@ -4819,30 +4689,29 @@ msgid "Remove tagged VLANs" msgstr "Getagde VLAN's verwijderen" #: netbox/dcim/forms/bulk_edit.py:1502 netbox/dcim/forms/bulk_import.py:1027 -#: netbox/dcim/forms/model_forms.py:1545 +#: netbox/dcim/forms/model_forms.py:1571 #: netbox/virtualization/forms/bulk_import.py:211 #: netbox/virtualization/forms/model_forms.py:349 msgid "Q-in-Q Service VLAN" msgstr "VLAN voor Q-in-Q-service" -#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1508 +#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1534 #: netbox/wireless/forms/filtersets.py:26 msgid "Wireless LAN group" msgstr "Draadloze LAN-groep" -#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1513 -#: netbox/dcim/tables/devices.py:660 netbox/netbox/navigation/menu.py:156 -#: netbox/templates/dcim/interface.html:355 +#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1539 +#: netbox/dcim/tables/devices.py:660 netbox/dcim/ui/panels.py:561 +#: netbox/netbox/navigation/menu.py:156 #: netbox/wireless/tables/wirelesslan.py:20 msgid "Wireless LANs" msgstr "Draadloze LAN's" #: netbox/dcim/forms/bulk_edit.py:1531 netbox/dcim/forms/filtersets.py:1574 -#: netbox/dcim/forms/model_forms.py:1579 netbox/ipam/forms/bulk_edit.py:227 -#: netbox/ipam/forms/bulk_edit.py:313 netbox/ipam/forms/filtersets.py:191 -#: netbox/netbox/navigation/menu.py:112 -#: netbox/templates/dcim/interface.html:146 -#: netbox/templates/ipam/prefix.html:91 +#: netbox/dcim/forms/model_forms.py:1605 netbox/dcim/ui/panels.py:499 +#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:313 +#: netbox/ipam/forms/filtersets.py:191 netbox/netbox/navigation/menu.py:112 +#: netbox/templates/ipam/panels/prefix_addressing.html:4 #: netbox/virtualization/forms/filtersets.py:218 #: netbox/virtualization/forms/model_forms.py:369 #: netbox/virtualization/ui/panels.py:68 @@ -4850,26 +4719,25 @@ msgid "Addressing" msgstr "Addressing" #: netbox/dcim/forms/bulk_edit.py:1532 netbox/dcim/forms/filtersets.py:821 -#: netbox/dcim/forms/model_forms.py:1580 +#: netbox/dcim/forms/model_forms.py:1606 #: netbox/virtualization/forms/model_forms.py:370 msgid "Operation" msgstr "Operatie" #: netbox/dcim/forms/bulk_edit.py:1533 netbox/dcim/forms/filtersets.py:1575 -#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1124 -#: netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1150 +#: netbox/dcim/forms/model_forms.py:1608 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1581 -#: netbox/templates/dcim/interface.html:110 -#: netbox/virtualization/forms/bulk_edit.py:237 +#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1607 +#: netbox/dcim/ui/panels.py:491 netbox/virtualization/forms/bulk_edit.py:237 #: netbox/virtualization/forms/model_forms.py:371 msgid "Related Interfaces" msgstr "Gerelateerde interfaces" #: netbox/dcim/forms/bulk_edit.py:1536 netbox/dcim/forms/filtersets.py:1576 -#: netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1611 #: netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/filtersets.py:219 #: netbox/virtualization/forms/model_forms.py:374 @@ -4980,7 +4848,7 @@ msgstr "Site voor ouders" msgid "Rack's location (if any)" msgstr "Locatie van het rek (indien aanwezig)" -#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:331 +#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:357 #: netbox/dcim/tables/racks.py:209 #: netbox/templates/dcim/rackreservation.html:7 msgid "Units" @@ -5063,7 +4931,7 @@ msgid "Assigned platform" msgstr "Toegewezen platform" #: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/bulk_import.py:614 -#: netbox/dcim/forms/model_forms.py:651 +#: netbox/dcim/forms/model_forms.py:677 msgid "Virtual chassis" msgstr "Virtueel chassis" @@ -5079,7 +4947,7 @@ msgstr "Toegewezen locatie (indien aanwezig)" msgid "Assigned rack (if any)" msgstr "Toegewezen rek (indien aanwezig)" -#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:634 msgid "Face" msgstr "Gezicht" @@ -5105,7 +4973,7 @@ msgstr "" msgid "The device in which this module is installed" msgstr "Het apparaat waarop deze module is geïnstalleerd" -#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:755 +#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:781 msgid "Module bay" msgstr "Modulevak" @@ -5117,7 +4985,7 @@ msgstr "De moduleruimte waarin deze module is geïnstalleerd" msgid "The type of module" msgstr "Het type module" -#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:773 +#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:799 msgid "Replicate components" msgstr "Componenten repliceren" @@ -5129,11 +4997,11 @@ msgstr "" "Componenten die aan dit moduletype zijn gekoppeld automatisch invullen " "(standaard ingeschakeld)" -#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:779 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:805 msgid "Adopt components" msgstr "Componenten adopteren" -#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:782 +#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:808 msgid "Adopt already existing components" msgstr "Reeds bestaande componenten adopteren" @@ -5158,13 +5026,13 @@ msgstr "Lokale voedingspoort die dit stopcontact voedt" msgid "Electrical phase (for three-phase circuits)" msgstr "Elektrische fase (voor driefasige circuits)" -#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1483 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1509 #: netbox/virtualization/forms/bulk_import.py:168 #: netbox/virtualization/forms/model_forms.py:310 msgid "Parent interface" msgstr "Interface voor ouders" -#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1491 +#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1517 #: netbox/virtualization/forms/bulk_import.py:175 #: netbox/virtualization/forms/model_forms.py:318 msgid "Bridged interface" @@ -5396,6 +5264,7 @@ msgid "Side B name" msgstr "Naam van kant B" #: netbox/dcim/forms/bulk_import.py:1456 +#: netbox/templates/dcim/panels/connection.html:60 #: netbox/wireless/forms/bulk_import.py:133 msgid "Connection status" msgstr "Status van de verbinding" @@ -5429,11 +5298,9 @@ msgstr "" "{color} kwam niet overeen met een gebruikte kleurnaam en bestond uit meer " "dan zes tekens: ongeldige hexadecimale waarde." -#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:900 +#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:926 #: netbox/dcim/tables/devices.py:1124 #: netbox/templates/dcim/panels/virtual_chassis_members.html:10 -#: netbox/templates/dcim/virtualchassis.html:17 -#: netbox/templates/dcim/virtualchassis.html:57 msgid "Master" msgstr "Meester" @@ -5461,9 +5328,8 @@ msgstr "Soort voeding (AC/DC)" msgid "Single or three-phase" msgstr "Enkel- of driefasig" -#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1875 -#: netbox/dcim/ui/panels.py:108 -#: netbox/templates/dcim/virtualdevicecontext.html:30 +#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1901 +#: netbox/dcim/ui/panels.py:110 netbox/dcim/ui/panels.py:354 #: netbox/virtualization/ui/panels.py:28 msgid "Primary IPv4" msgstr "Primaire IPv4" @@ -5472,9 +5338,8 @@ msgstr "Primaire IPv4" msgid "IPv4 address with mask, e.g. 1.2.3.4/24" msgstr "IPv4-adres met masker, bijvoorbeeld 1.2.3.4/24" -#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1884 -#: netbox/dcim/ui/panels.py:113 -#: netbox/templates/dcim/virtualdevicecontext.html:41 +#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1910 +#: netbox/dcim/ui/panels.py:115 netbox/dcim/ui/panels.py:359 #: netbox/virtualization/ui/panels.py:33 msgid "Primary IPv6" msgstr "Primaire IPv6" @@ -5484,8 +5349,7 @@ msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64" msgstr "IPv6-adres met prefixlengte, bijvoorbeeld 2001:db8: :1/64" #: netbox/dcim/forms/common.py:19 netbox/dcim/models/device_components.py:615 -#: netbox/templates/dcim/interface.html:57 -#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/dcim/ui/panels.py:476 netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/ui/panels.py:61 msgid "MTU" msgstr "MTU" @@ -5527,18 +5391,15 @@ msgstr "Kan niet adopteren {model} {name} omdat het al bij een module hoort" msgid "A {model} named {name} already exists" msgstr "EEN {model} genoemd {name} bestaat al" -#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:853 +#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:879 #: netbox/dcim/tables/power.py:63 #: netbox/templates/dcim/inc/cable_termination.html:40 -#: netbox/templates/dcim/powerfeed.html:24 -#: netbox/templates/dcim/powerpanel.html:19 #: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "Voedingspaneel" -#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:880 -#: netbox/templates/dcim/powerfeed.html:21 -#: netbox/templates/dcim/powerport.html:80 +#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:906 +#: netbox/dcim/views.py:3106 msgid "Power Feed" msgstr "Stroomvoorziening" @@ -5566,12 +5427,12 @@ msgstr "Aantal rekken" msgid "Function" msgstr "Functie" -#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:341 -#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1164 +#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:367 +#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1166 msgid "Reservation" msgstr "Reservatie" -#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:390 +#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:416 #: netbox/netbox/views/generic/feature_views.py:97 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" @@ -5594,7 +5455,7 @@ msgstr "Rol van het subapparaat" msgid "Module count" msgstr "Aantal modules" -#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:548 msgid "Device Role" msgstr "Apparaat Rol" @@ -5632,16 +5493,9 @@ msgstr "Bezet" #: netbox/dcim/forms/filtersets.py:1420 netbox/dcim/forms/filtersets.py:1460 #: netbox/dcim/forms/filtersets.py:1500 netbox/dcim/forms/filtersets.py:1535 #: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/tables/devices.py:381 -#: netbox/dcim/tables/devices.py:682 netbox/ipam/tables/vlans.py:174 +#: netbox/dcim/tables/devices.py:682 netbox/dcim/ui/panels.py:377 +#: netbox/dcim/ui/panels.py:516 netbox/ipam/tables/vlans.py:174 #: netbox/templates/circuits/inc/circuit_termination_fields.html:16 -#: netbox/templates/dcim/consoleport.html:55 -#: netbox/templates/dcim/consoleserverport.html:55 -#: netbox/templates/dcim/frontport.html:66 -#: netbox/templates/dcim/interface.html:215 -#: netbox/templates/dcim/powerfeed.html:110 -#: netbox/templates/dcim/poweroutlet.html:73 -#: netbox/templates/dcim/powerport.html:59 -#: netbox/templates/dcim/rearport.html:66 msgid "Connection" msgstr "Verbinding" @@ -5657,13 +5511,12 @@ msgstr "Soort" msgid "Mgmt only" msgstr "Alleen voor beheer" -#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1567 -#: netbox/dcim/models/device_components.py:792 -#: netbox/templates/dcim/interface.html:160 +#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1593 +#: netbox/dcim/models/device_components.py:792 netbox/dcim/ui/panels.py:506 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1653 +#: netbox/dcim/forms/filtersets.py:1653 netbox/dcim/ui/panels.py:482 #: netbox/virtualization/forms/filtersets.py:260 msgid "802.1Q mode" msgstr "802.1Q-modus" @@ -5680,18 +5533,17 @@ msgstr "Kanaalfrequentie (MHz)" msgid "Channel width (MHz)" msgstr "Kanaalbreedte (MHz)" -#: netbox/dcim/forms/filtersets.py:1680 -#: netbox/templates/dcim/interface.html:96 +#: netbox/dcim/forms/filtersets.py:1680 netbox/dcim/ui/panels.py:485 msgid "Transmit power (dBm)" msgstr "Zendvermogen (dBm)" #: netbox/dcim/forms/filtersets.py:1751 netbox/dcim/forms/filtersets.py:1795 -#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable.html:12 -#: netbox/templates/dcim/cable_trace.html:46 -#: netbox/templates/dcim/frontport.html:74 +#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/htmx/cable_edit.html:53 #: netbox/templates/dcim/inc/connection_endpoints.html:4 -#: netbox/templates/dcim/rearport.html:74 +#: netbox/templates/dcim/panels/connection.html:14 +#: netbox/templates/dcim/panels/connection.html:51 +#: netbox/templates/dcim/panels/interface_connection.html:13 #: netbox/templates/dcim/trace/cable.html:7 msgid "Cable" msgstr "Kabel" @@ -5731,9 +5583,7 @@ msgstr "Soort bereik" #: netbox/ipam/forms/bulk_edit.py:382 netbox/ipam/forms/filtersets.py:195 #: netbox/ipam/forms/model_forms.py:225 netbox/ipam/forms/model_forms.py:603 #: netbox/ipam/forms/model_forms.py:613 netbox/ipam/tables/ip.py:193 -#: netbox/ipam/tables/vlans.py:40 netbox/templates/ipam/prefix.html:48 -#: netbox/templates/ipam/vlangroup.html:38 -#: netbox/virtualization/forms/bulk_edit.py:74 +#: netbox/ipam/tables/vlans.py:40 netbox/virtualization/forms/bulk_edit.py:74 #: netbox/virtualization/forms/filtersets.py:53 #: netbox/virtualization/forms/model_forms.py:73 #: netbox/virtualization/tables/clusters.py:81 @@ -5756,28 +5606,28 @@ msgstr "Soort bereik (app en model)" #: netbox/dcim/forms/mixins.py:126 msgid "Scope name" -msgstr "" +msgstr "Naam van het bereik" #: netbox/dcim/forms/mixins.py:127 msgid "Name of the assigned scope object (if not using ID)" -msgstr "" +msgstr "Naam van het toegewezen scope-object (indien geen ID wordt gebruikt)" #: netbox/dcim/forms/mixins.py:139 msgid "scope_name and scope_id are mutually exclusive." -msgstr "" +msgstr "scope_name en scope_id sluiten elkaar uit." #: netbox/dcim/forms/mixins.py:143 msgid "scope_type must be specified when using scope_name" -msgstr "" +msgstr "scope_type moet worden gespecificeerd bij gebruik van scope_name" #: netbox/dcim/forms/mixins.py:145 msgid "scope_type must be specified when using scope_id" -msgstr "" +msgstr "scope_type moet worden gespecificeerd bij gebruik van scope_id" #: netbox/dcim/forms/mixins.py:154 #, python-brace-format msgid "{scope_type} \"{name}\" not found." -msgstr "" +msgstr "{scope_type} „{name}„niet gevonden." #: netbox/dcim/forms/mixins.py:162 #, python-brace-format @@ -5785,6 +5635,8 @@ msgid "" "Multiple {scope_type} objects match \"{name}\". Use scope_id to specify the " "intended object." msgstr "" +"Meervoudig {scope_type} objecten komen overeen”{name}„. Gebruik scope_id om " +"het beoogde object te specificeren." #: netbox/dcim/forms/mixins.py:180 netbox/dcim/tables/devices.py:260 msgid "Rear ports" @@ -5800,31 +5652,31 @@ msgstr "" "moet overeenkomen met het geselecteerde aantal posities aan de achterkant " "van de poort ({rearport_count})." -#: netbox/dcim/forms/model_forms.py:158 +#: netbox/dcim/forms/model_forms.py:169 msgid "Contact Info" msgstr "Contactgegevens" -#: netbox/dcim/forms/model_forms.py:211 +#: netbox/dcim/forms/model_forms.py:237 msgid "Rack Role" msgstr "Rol van het rek" -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:380 -#: netbox/dcim/forms/model_forms.py:551 +#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:406 +#: netbox/dcim/forms/model_forms.py:577 #: netbox/utilities/forms/fields/fields.py:58 msgid "Slug" msgstr "Slug" -#: netbox/dcim/forms/model_forms.py:276 +#: netbox/dcim/forms/model_forms.py:302 msgid "Select a pre-defined rack type, or set physical characteristics below." msgstr "" "Selecteer een vooraf gedefinieerd racktype of stel hieronder de fysieke " "kenmerken in." -#: netbox/dcim/forms/model_forms.py:284 +#: netbox/dcim/forms/model_forms.py:310 msgid "Inventory Control" msgstr "Inventarisbeheer" -#: netbox/dcim/forms/model_forms.py:333 +#: netbox/dcim/forms/model_forms.py:359 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -5832,40 +5684,40 @@ msgstr "" "Door komma's gescheiden lijst van numerieke eenheid-ID's. Een bereik kan " "worden gespecificeerd met een koppelteken." -#: netbox/dcim/forms/model_forms.py:414 netbox/extras/forms/model_forms.py:603 +#: netbox/dcim/forms/model_forms.py:440 netbox/extras/forms/model_forms.py:603 msgid "Enter a valid JSON schema to define supported attributes." msgstr "" "Voer een geldig JSON-schema in om ondersteunde kenmerken te definiëren." -#: netbox/dcim/forms/model_forms.py:445 +#: netbox/dcim/forms/model_forms.py:471 msgid "Profile & Attributes" msgstr "Profiel en kenmerken" -#: netbox/dcim/forms/model_forms.py:597 netbox/dcim/models/devices.py:579 +#: netbox/dcim/forms/model_forms.py:623 netbox/dcim/models/devices.py:579 msgid "The lowest-numbered unit occupied by the device" msgstr "" "De eenheid met het laagste nummer die door het apparaat wordt gebruikt" -#: netbox/dcim/forms/model_forms.py:662 +#: netbox/dcim/forms/model_forms.py:688 msgid "The position in the virtual chassis this device is identified by" msgstr "" "De positie in het virtuele chassis waarmee dit apparaat wordt " "geïdentificeerd" -#: netbox/dcim/forms/model_forms.py:667 +#: netbox/dcim/forms/model_forms.py:693 msgid "The priority of the device in the virtual chassis" msgstr "De prioriteit van het apparaat in het virtuele chassis" -#: netbox/dcim/forms/model_forms.py:776 +#: netbox/dcim/forms/model_forms.py:802 msgid "Automatically populate components associated with this module type" msgstr "" "Componenten die aan dit moduletype zijn gekoppeld automatisch invullen" -#: netbox/dcim/forms/model_forms.py:882 +#: netbox/dcim/forms/model_forms.py:908 msgid "Characteristics" msgstr "Kenmerken" -#: netbox/dcim/forms/model_forms.py:1038 +#: netbox/dcim/forms/model_forms.py:1064 #, python-brace-format msgid "" "Alphanumeric ranges are supported for bulk creation. Mixed cases and types " @@ -5880,107 +5732,95 @@ msgstr "" "indien aanwezig, wordt automatisch vervangen door de positiewaarde bij het " "aanmaken van een nieuwe module." -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "Sjabloon voor consolepoort" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "Poortsjabloon voor consoleserver" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "Sjabloon voor de voorpoort" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "Interfacesjabloon" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "Sjabloon voor stopcontact" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "Sjabloon voor voedingspoort" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "Sjabloon voor achterpoort" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "Consolepoort" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "Console Server-poort" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "Poort Voor" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "Poort achter" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "Voedingspoort" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "Stopcontact" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "Toewijzing van componenten" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "Een InventoryItem kan slechts aan één component worden toegewezen." -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "LAG-interface" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "Filter-VLAN's die beschikbaar zijn voor toewijzing per groep." -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "Apparaat voor kinderen" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -5988,43 +5828,41 @@ msgstr "" "Kindapparaten moeten eerst worden aangemaakt en toegewezen aan de site en " "het rack van het ouderapparaat." -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "Consolepoort" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "Console-serverpoort" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "Poort voor" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "Stopcontact" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "Poort aan de achterkant" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "Inventarisitem" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "Rol van het inventarisitem" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "VM-interface" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -6038,7 +5876,7 @@ msgstr "VM-interface" msgid "Virtual Machine" msgstr "Virtuele machine" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "Een MAC-adres kan slechts aan één object worden toegewezen." @@ -6062,9 +5900,9 @@ msgstr "" "{pattern_count} worden verwacht." #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "Leden" @@ -6270,41 +6108,41 @@ msgstr "" "Een componentsjabloon moet gekoppeld zijn aan een apparaattype of een " "moduletype." -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "sjabloon voor consolepoort" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "sjablonen voor consolepoorten" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "poortsjabloon voor consoleserver" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "poortsjablonen voor consoleservers" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "maximale trekking" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "toegewezen gelijkspel" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "sjabloon voor voedingspoort" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "sjablonen voor voedingspoorten" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." @@ -6312,92 +6150,92 @@ msgstr "" "De toegewezen trekking mag niet hoger zijn dan de maximale trekking " "({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "voerbeen" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "Fase (voor driefasige voedingen)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "sjabloon voor stopcontact" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "sjablonen voor stopcontacten" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Voedingspoort voor ouders ({power_port}) moet tot hetzelfde apparaattype " "behoren" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Voedingspoort voor ouders ({power_port}) moet tot hetzelfde moduletype " "behoren" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "alleen beheer" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "bridge-interface" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "draadloze rol" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "interfacesjabloon" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "interfacesjablonen" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "Bridge-interface ({bridge}) moet tot hetzelfde apparaattype behoren" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Bridge-interface ({bridge}) moet tot hetzelfde moduletype behoren" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "Achterpoort ({rear_port}) moet tot hetzelfde apparaattype behoren" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "standen" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "sjabloon voor de voorpoort" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "sjablonen voor de voorpoort" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " @@ -6406,15 +6244,15 @@ msgstr "" "Het aantal posities mag niet minder zijn dan het aantal toegewezen sjablonen" " voor de achterpoort ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "sjabloon voor de achterpoort" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "sjablonen voor achterpoorten" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " @@ -6423,35 +6261,35 @@ msgstr "" "Het aantal posities mag niet minder zijn dan het aantal toegewezen " "frontpoortsjablonen ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "positie" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "" "Identificatie waarnaar moet worden verwezen bij het hernoemen van " "geïnstalleerde componenten" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "sjabloon voor modulebay" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "sjablonen voor modulebay" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "sjabloon voor apparaatvak" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "sjablonen voor apparaatruimte" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -6460,21 +6298,21 @@ msgstr "" "De rol van het apparaattype van het subapparaat ({device_type}) moet op " "„parent” zijn ingesteld om apparaatbays toe te staan." -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "onderdeel-ID" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "Onderdeel-ID toegewezen door de fabrikant" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "sjabloon voor inventarisitems" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "sjablonen voor inventarisitems" @@ -6610,10 +6448,10 @@ msgid "tagged VLANs" msgstr "gelabelde VLAN's" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "Q-in-Q SVLAN" @@ -7782,11 +7620,11 @@ msgstr "Componenten toevoegen" msgid "Disconnect Selected" msgstr "De geselecteerde verbinding verbreken" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "Beëindiging A" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "Eindpunt B" @@ -7831,6 +7669,8 @@ msgstr "Kleurnaam" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "Bereikbaar" @@ -7867,7 +7707,7 @@ msgstr "U-hoogte" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "IP-adres" @@ -7916,16 +7756,14 @@ msgid "Power outlets" msgstr "Stopcontacten" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7958,18 +7796,17 @@ msgid "Device Site" msgstr "Website van het apparaat" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Modulebaai" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "Inventarisartikelen" @@ -7993,13 +7830,13 @@ msgstr "Maximale trekkracht (W)" msgid "Allocated draw (W)" msgstr "Toegewezen trekking (W)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "IP-adressen" @@ -8007,18 +7844,18 @@ msgstr "IP-adressen" msgid "Primary MAC" msgstr "Primaire MAC" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "MAC-adressen" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP-groepen" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -8027,7 +7864,6 @@ msgid "Tunnel" msgstr "Tunnel" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Alleen beheer" @@ -8035,7 +7871,7 @@ msgstr "Alleen beheer" msgid "VDCs" msgstr "VDC's" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "Virtueel circuit" @@ -8044,7 +7880,7 @@ msgstr "Virtueel circuit" msgid "Mappings" msgstr "Mappings" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "Geïnstalleerd apparaat" @@ -8068,7 +7904,7 @@ msgstr "Serieel geïnstalleerd" msgid "Installed Asset Tag" msgstr "Asset Tag geïnstalleerd" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "Geïnstalleerde module" @@ -8085,7 +7921,6 @@ msgid "Module Status" msgstr "Status van de module" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "Onderdeel" @@ -8103,7 +7938,7 @@ msgstr "Soorten rekken" msgid "Device Types" msgstr "Apparaattypen" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "Moduletypen" @@ -8126,8 +7961,8 @@ msgstr "Volledige diepte" msgid "Device Count" msgstr "Aantal apparaten" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -8137,8 +7972,8 @@ msgstr "Aantal apparaten" msgid "Console Ports" msgstr "Consolepoorten" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -8148,8 +7983,8 @@ msgstr "Consolepoorten" msgid "Console Server Ports" msgstr "Serverpoorten voor de console" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -8159,8 +7994,8 @@ msgstr "Serverpoorten voor de console" msgid "Power Ports" msgstr "Voedingspoorten" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -8170,8 +8005,8 @@ msgstr "Voedingspoorten" msgid "Power Outlets" msgstr "Stopcontacten" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -8180,8 +8015,8 @@ msgstr "Stopcontacten" msgid "Front Ports" msgstr "Ports aan de voorkant" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -8191,16 +8026,16 @@ msgstr "Ports aan de voorkant" msgid "Rear Ports" msgstr "Poorten achteraan" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Apparaatvakken" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8215,11 +8050,10 @@ msgid "Module Count" msgstr "Aantal modules" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Stroomvoedingen" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "Maximaal gebruik" @@ -8234,7 +8068,7 @@ msgid "Racks" msgstr "Racks" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Hoogte" @@ -8282,85 +8116,123 @@ msgstr "VLAN-groepen" msgid "Test case must set peer_termination_type" msgstr "De testcase moet peer_termination_type instellen" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} millimeter" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "Serienummer" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "Maximaal gewicht" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "Beheer" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "IP buiten de band" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "Ouder/kind" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "Naam van het model" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "Bovenliggend item" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "Onderdeel-ID" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "Aangesloten apparaat" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "Gebruik (toegewezen)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "Elektrische kenmerken" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{} V" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{} EEN" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "Primair voor interface" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "Leden van Virtual Chassis" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "Energiegebruik" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "VLAN-vertaling" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "Verbinding verbroken {count} {type}" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "Kindgebieden" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "Kindergroepen" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "Apparaten zonder rack" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "Locaties voor kinderen" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "Reserveringen" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "Rollen van het apparaat voor kinderen" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "Platformen voor kinderen" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "Applicatieservices" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8368,42 +8240,70 @@ msgstr "Applicatieservices" msgid "Config Context" msgstr "Context van de configuratie" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "Render-configuratie" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "Virtuele machines" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "Contexten van virtuele apparaten" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "VLAN's" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "LAG-leden" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "VLAN-vertaling" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "Overbrugde interfaces" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "Interfaces voor kinderen" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Geïnstalleerd apparaat {device} in de baai {device_bay}." -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Apparaat verwijderd {device} van bay {device_bay}." -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "Kinderen" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "Lid toegevoegd {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" "Kan het masterapparaat niet verwijderen {device} vanaf het virtuele chassis." -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Verwijderd {device} vanaf een virtueel chassis {chassis}" @@ -8499,10 +8399,9 @@ msgstr "Ja" msgid "No" msgstr "Nee" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "Link" @@ -8961,15 +8860,6 @@ msgstr "Een of meer toegewezen objecttypen" msgid "Field data type (e.g. text, integer, etc.)" msgstr "Veldgegevenstype (bijv. tekst, geheel getal, enz.)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "Soort object" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "Objecttype (voor velden met objecten of velden met meerdere objecten)" @@ -9077,7 +8967,7 @@ msgstr "De classificatie van binnenkomst" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -9104,15 +8994,14 @@ msgstr "" #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "Groepen" @@ -9138,13 +9027,6 @@ msgstr "Soort veld" msgid "Choices" msgstr "Keuzes" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "Gegevens" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10460,17 +10342,6 @@ msgstr "bestandsextensie" msgid "As Attachment" msgstr "Als bijlage" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "Gegevensbestand" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10486,9 +10357,8 @@ msgstr "Afbeelding" msgid "Filename" msgstr "Bestandsnaam" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "Grootte" @@ -10543,6 +10413,7 @@ msgstr "" "dashboard." #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10686,7 +10557,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "Platte tekst" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "Service" @@ -10749,7 +10620,6 @@ msgstr "L2VPN exporteren (identifier)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "Prefix" @@ -10799,7 +10669,6 @@ msgstr "VLAN-nummer (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "Adres" @@ -10856,7 +10725,7 @@ msgstr "FHRP-groep (ID)" msgid "IP address (ID)" msgstr "IP-adres (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "IP-adres" @@ -10923,8 +10792,8 @@ msgstr "Is privé" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "RIR" @@ -10935,15 +10804,13 @@ msgstr "Datum toegevoegd" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN-groep" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10958,7 +10825,7 @@ msgid "Prefix length" msgstr "Lengte van de prefix" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "Is een pool" @@ -10977,23 +10844,21 @@ msgstr "VLAN-toewijzing" msgid "Treat as populated" msgstr "Behandel als gevuld" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "DNS-naam" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protocol" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "Groeps-ID" @@ -11014,9 +10879,8 @@ msgid "Authentication key" msgstr "Verificatiesleutel" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -11045,23 +10909,22 @@ msgstr "Site en groep" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "Beleid" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "Poorten" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "Routedoelen importeren" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "Routedoelen exporteren" @@ -11091,7 +10954,6 @@ msgstr "Bereik-ID" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "FHRP-groep" @@ -11208,7 +11070,7 @@ msgid "Exported by VRF" msgstr "Geëxporteerd door VRF" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "Privé" @@ -11217,7 +11079,7 @@ msgstr "Privé" msgid "Address family" msgstr "Adres familie" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "Assortiment" @@ -11245,18 +11107,10 @@ msgstr "Apparaat/VM" msgid "Parent Prefix" msgstr "Prefix voor ouders" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "DNS-naam" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLAN's" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "Bevat VLAN-ID" @@ -11274,26 +11128,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Q-in-Q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "VLAN-ID" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "Doel van de route" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "Aggregaat" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "ASN-assortiment" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "IP-bereik" @@ -11346,8 +11198,7 @@ msgstr "Virtueel IP-adres" msgid "Assignment already exists" msgstr "De opdracht bestaat al" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "VLAN-ID's" @@ -11366,7 +11217,6 @@ msgstr "" "VLAN-groepen voor dit doel te gebruiken." #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "VLAN-vertaalregel" @@ -11379,7 +11229,6 @@ msgstr "" "worden gespecificeerd met een koppelteken." #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "Sjabloon voor toepassingsservice" @@ -11556,7 +11405,7 @@ msgstr "is een pool" msgid "All IP addresses within this prefix are considered usable" msgstr "Alle IP-adressen binnen deze prefix worden als bruikbaar beschouwd" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "merk gebruikt" @@ -11568,12 +11417,12 @@ msgstr "prefixen" msgid "Cannot create prefix with /0 mask." msgstr "Kan geen prefix aanmaken met het masker /0." -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "globale tabel" @@ -11582,132 +11431,132 @@ msgstr "globale tabel" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Duplicaat prefix gevonden in {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "startadres" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "IPv4- of IPv6-adres (met masker)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "eindadres" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "Operationele status van deze serie" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "De primaire functie van dit assortiment" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "markering ingevuld" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "Voorkom het aanmaken van IP-adressen binnen dit bereik" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "Rapporteer de ruimte als volledig benut" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "IP-bereik" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "IP-bereiken" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "" "De versies van het begin- en eindpunt van het IP-adres moeten overeenkomen" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "De IP-adresmaskers voor het begin en einde moeten overeenkomen" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "Het eindadres moet groter zijn dan het beginadres ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Gedefinieerde adressen overlappen met het bereik {overlapping_range} in VRF " "{vrf}" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "Het gedefinieerde bereik overschrijdt de maximale ondersteunde grootte " "({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "adres" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "De operationele status van dit IP-adres" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "De functionele rol van dit IP-adres" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (binnen)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "Het IP-adres waarvoor dit adres het „externe” IP-adres is" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Hostnaam of FQDN (niet hoofdlettergevoelig)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "IP-adressen" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "Kan geen IP-adres aanmaken met een masker /0." -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "" "{ip} is een netwerk-ID, die mogelijk niet aan een interface is toegewezen." -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "" "{ip} is een uitzendadres dat mogelijk niet aan een interface is toegewezen." -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Duplicaat IP-adres gevonden in {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "Kan geen IP-adres aanmaken {ip} binnen bereik {range}." -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -11715,7 +11564,7 @@ msgstr "" "Kan het IP-adres niet opnieuw toewijzen terwijl dit is aangewezen als het " "primaire IP-adres voor het bovenliggende object" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" @@ -11723,7 +11572,7 @@ msgstr "" "Kan het IP-adres niet opnieuw toewijzen terwijl dit is aangewezen als het " "OOB-IP-adres voor het bovenliggende object" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Alleen IPv6-adressen kunnen een SLAAC-status krijgen" @@ -11921,17 +11770,17 @@ msgid "Added" msgstr "Toegevoegd" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "Prefixen" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "Gebruik" @@ -11958,7 +11807,7 @@ msgid "Pool" msgstr "Pool" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "Gemarkeerd als gebruikt" @@ -11966,7 +11815,7 @@ msgstr "Gemarkeerd als gebruikt" msgid "Start address" msgstr "Startadres" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "Gemarkeerd bevolkt" @@ -11996,17 +11845,14 @@ msgid "VID" msgstr "VID" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "Regels" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "Lokale VID" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "VID op afstand" @@ -12026,16 +11872,71 @@ msgstr "Doelen importeren" msgid "Export Targets" msgstr "Doelen exporteren" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "Groep aanmaken" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Groep toewijzen" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "Routeherkenner" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "Unieke IP-ruimte" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "AS-nummer" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Familie" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "Datum toegevoegd" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "Startadres" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "Eindadres" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (buiten)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "Primair IP-adres" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "TIP-UP" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "Authenticatietype" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "Verificatiesleutel" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "De rol van Q-in-Q" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "VLAN's van klanten" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "Een VLAN toevoegen" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -12076,26 +11977,79 @@ msgstr "" "Alleen alfanumerieke tekens, sterretjes, koppeltekens, punten en " "onderstrepingstekens zijn toegestaan in DNS-namen" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "Interfaces voor apparaten" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "VM-interfaces" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "VRF's importeren" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "VRF's exporteren" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "L2VPN's importeren" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "L2VPN's exporteren" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "Dubbele voorvoegsels" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "Voorvoegsels voor ouders" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "Prefixen voor kinderen" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "Ranges voor kinderen" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "Dubbele IP-adressen" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "Applicatieservices" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "Gerelateerde IP's" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "Regels voor VLAN-vertaling" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "Regel toevoegen" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "Virtuele IP-adressen" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "IP-adres toevoegen" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "Een prefix toevoegen" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "Dit veld is mogelijk niet leeg." @@ -12606,7 +12560,6 @@ msgid "Contact Groups" msgstr "Contactgroepen" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Rollen voor contactpersonen" @@ -12626,11 +12579,6 @@ msgstr "Verhogingen" msgid "Modules" msgstr "Modules" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "Contexten van virtuele apparaten" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "Profielen van moduletypen" @@ -12644,12 +12592,11 @@ msgid "Device Components" msgstr "Onderdelen van het apparaat" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Rollen van inventarisitems" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "Verbindingen" @@ -12690,7 +12637,6 @@ msgid "VLAN Translation Policies" msgstr "VLAN-vertaalbeleid" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "Regels voor VLAN-vertaling" @@ -12769,7 +12715,6 @@ msgid "Circuit Terminations" msgstr "Circuitafsluitingen" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "Virtuele circuits" @@ -12785,18 +12730,11 @@ msgstr "Beëindigingen van virtuele circuits" msgid "Circuit Groups" msgstr "Circuitgroepen" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "Groepstoewijzingen" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "Providers" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Accounts van providers" @@ -12892,7 +12830,7 @@ msgid "Journal Entries" msgstr "Journaalposten" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Logboek wijzigen" @@ -12945,6 +12883,7 @@ msgstr "Achtergrondtaken" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12963,8 +12902,9 @@ msgstr "Kloon" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -12976,8 +12916,9 @@ msgstr "Bewerken" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -13254,7 +13195,7 @@ msgstr "Dummy-plug-in" msgid "Copy" msgstr "Kopiëren" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -13262,11 +13203,19 @@ msgstr "" "Ongeldige decoderingsoptie: {decoding}! Moet een van " "{image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" +"Ongeldige max_items-waarde: {max_items}! Moet een positief geheel getal zijn" +" of None." + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "GPS-coördinaten" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "Gerelateerde objecten" @@ -13545,8 +13494,7 @@ msgid "Account Details" msgstr "Accountgegevens" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "Email" @@ -13568,16 +13516,15 @@ msgid "Assigned Groups" msgstr "Toegewezen groepen" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13652,55 +13599,21 @@ msgstr "Broncode" msgid "Community" msgstr "Gemeenschap" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "Datum van installatie" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "Beëindigingsdatum" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "Swap Circuit-afsluitingen" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "Verwissel deze aansluitingen voor een circuit %(circuit)s?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "A-kant" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Z-kant" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "Circuit toewijzen" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "Circuitgroepopdracht" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "Circuit toevoegen" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "Circuittype" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "Eindpunt" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "Gemarkeerd als verbonden" @@ -13710,13 +13623,14 @@ msgstr "naar" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "Spoor" @@ -13730,37 +13644,30 @@ msgstr "Kabel verwijderen" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "Verbinding verbreken" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "Verbind" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "Stroomafwaarts" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "Stroomopwaarts" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "Cross-connect" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "Patchpaneel/poort" @@ -13768,39 +13675,10 @@ msgstr "Patchpaneel/poort" msgid "Add circuit" msgstr "Circuit toevoegen" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "Account van de provider" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "Een virtueel circuit toevoegen" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "Beëindiging toevoegen" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "Beëindiging van virtuele circuits" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "Virtueel circuit toevoegen" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "Type virtueel circuit" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "Configuratiegegevens" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "Commentaar" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13823,31 +13701,11 @@ msgstr "Nieuwe waarde" msgid "Changed" msgstr "Gewijzigd" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "bytes" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "SHA256-hash" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "Inhoud" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "Laatst gesynchroniseerd" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "Backend" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "Geen parameters gedefinieerd" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "Rackverhogingen" @@ -13906,72 +13764,11 @@ msgstr "Het gegevensbestand dat aan dit object is gekoppeld, is verwijderd" msgid "Data Synced" msgstr "Gegevens gesynchroniseerd" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "Taak" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "Gemaakt door" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "Planning" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "elk %(interval)s minuten" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "Verandering" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "Verschil" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "Vorige" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "Volgende" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "Object gemaakt" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "Object verwijderd" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "Geen wijzigingen" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "Gegevens vóór de wijziging" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Waarschuwing: niet-atomaire wijzigingen vergelijken met eerdere " -"wijzigingsrecords" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "Gegevens na de wijziging" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Alles bekijken %(count)s Veranderingen" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -13987,6 +13784,61 @@ msgstr "dagen" msgid "Indefinite" msgstr "Onbepaald" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "Commentaar" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "Configuratiegegevens" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "Geen parameters gedefinieerd" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "Verschil" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "Vorige" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "Volgende" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "Object gemaakt" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "Object verwijderd" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "Geen wijzigingen" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "Gegevens na de wijziging" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "Gegevens vóór de wijziging" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Waarschuwing: niet-atomaire wijzigingen vergelijken met eerdere " +"wijzigingsrecords" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Alles bekijken %(count)s Veranderingen" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "Niet geïnstalleerd" @@ -14277,22 +14129,13 @@ msgstr "Segmenten" msgid "Incomplete" msgstr "Onvolledig" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "Niet verbonden" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT voor" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "NAT" @@ -14300,7 +14143,7 @@ msgstr "NAT" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "Naar klembord kopiëren" @@ -14350,10 +14193,6 @@ msgstr "Verwijderen" msgid "Local Config Context Data" msgstr "Contextgegevens voor lokale configuratie" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "Apparaatvak" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -14381,34 +14220,6 @@ msgstr "Bay" msgid "Add Device" msgstr "Apparaat toevoegen" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "Posities" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "Gemarkeerd als verbonden" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "Status van de verbinding" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "Poorttoewijzingen" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "Geen mappings gedefinieerd" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "A-kant" @@ -14434,6 +14245,8 @@ msgid "Path Status" msgstr "Status van het pad" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "Niet bereikbaar" @@ -14442,8 +14255,6 @@ msgid "Path Endpoints" msgstr "Eindpunten van het pad" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "Niet verbonden" @@ -14489,94 +14300,10 @@ msgstr "Rackhoogte" msgid "Loading..." msgstr "Aan het laden..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "Kindinterface toevoegen" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "Snelheid/duplex" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "PoE-modus" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "PoE-type" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "Overbrugde interfaces" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "VLAN-vertaling" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "Draadloze link" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "Kanaal" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "Kanaalfrequentie" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "MHz" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "Kanaalbreedte" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "IP-adres toevoegen" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "MAC-adres toevoegen" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "Bovenliggend item" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "Onderdeel-ID" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "Tag voor bedrijfsmiddelen" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "Primair voor interface" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "Apparaattype toevoegen" @@ -14585,6 +14312,64 @@ msgstr "Apparaattype toevoegen" msgid "Add Module Type" msgstr "Moduletype toevoegen" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "Status van het pad" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "Eindpunten van het pad" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "Niet verbonden" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "Poorttoewijzingen" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "Geen mappings gedefinieerd" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "Draadloze link" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "Kanaal" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "Kanaalfrequentie" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "MHz" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "Kanaalbreedte" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "Geen profiel toegewezen" @@ -14604,7 +14389,7 @@ msgstr "Toegewezen" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "VA" @@ -14628,44 +14413,6 @@ msgstr "Alleen afbeeldingen" msgid "Labels only" msgstr "Alleen labels" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "Aangesloten apparaat" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "Verbruik (toegewezen)" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "Elektrische kenmerken" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "A" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "Voer de poot in" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "Power Feeds toevoegen" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "Maximaal aantal trekkingen" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "Toegewezen gelijkspel" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "Reservering toevoegen" @@ -14705,10 +14452,6 @@ msgstr "Site toevoegen" msgid "Attachment" msgstr "Gehechtheid" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "Lid toevoegen" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14760,10 +14503,6 @@ msgstr "" "Weet je zeker dat je wilt verwijderen %(device)s vanaf een " "virtueel chassis %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "Identificatie" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -15101,6 +14840,10 @@ msgstr "" msgid "Journal Entry" msgstr "Journaalpost" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "Gemaakt door" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "Meldingsgroep" @@ -15596,37 +15339,15 @@ msgstr "Uitloggen" msgid "Log In" msgstr "Inloggen" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Familie" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "Datum toegevoegd" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "Prefix toevoegen" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "AS-nummer" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "Authenticatietype" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "Verificatiesleutel" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "Virtuele IP-adressen" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "Globaal" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15661,15 +15382,6 @@ msgstr "Beschikbaar weergeven" msgid "Show All" msgstr "Alles weergeven" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "Globaal" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (buiten)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "Een IP-adres toewijzen" @@ -15686,51 +15398,43 @@ msgstr "Zoekresultaten" msgid "Bulk Add IP Addresses" msgstr "IP-adressen in bulk toevoegen" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "Startadres" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "Eindadres" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "Adresseringsgegevens" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "Gemarkeerd als volledig gebruikt" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "IP's voor kinderen" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "Beschikbare IP-adressen" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "Eerste beschikbare IP" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "Details van de prefix" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "Netwerkadres" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "Netwerkmasker" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "Wildcard-masker" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "Adres van de uitzending" @@ -15742,58 +15446,14 @@ msgstr "IP-bereik toevoegen" msgid "Hide Depth Indicators" msgstr "Diepte-indicatoren verbergen" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "Aggregaat toevoegen" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "VRF's importeren" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "VRF's exporteren" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "L2VPN's importeren" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "L2VPN's exporteren" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "De rol van Q-in-Q" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "Een prefix toevoegen" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "VLAN's van klanten" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "Een VLAN toevoegen" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "VLAN toevoegen" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "Regel toevoegen" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "Routeherkenner" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "Unieke IP-ruimte" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15863,61 +15523,14 @@ msgstr "" "Klik hier om te proberen NetBox opnieuw te " "laden." -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "Neem contact op" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "Titel" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "Telefoon" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "Contactgroep" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "Contactgroep toevoegen" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "Rol van contactpersoon" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "Een contact toevoegen" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "Tenant toevoegen" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "Tenant Groep" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "Tenant Groep toevoegen" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -16028,16 +15641,28 @@ msgstr "IPsec-beleid" msgid "PFS Group" msgstr "PFS-groep" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "Beëindiging toevoegen" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "Tunnel toevoegen" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "Kanaalfrequentie" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "MHz" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "Kanaalbreedte" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "Draadloos netwerk toevoegen" @@ -16072,6 +15697,20 @@ msgstr "Rol van contactpersoon (ID)" msgid "Contact role (slug)" msgstr "Contactrol (slug)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "Neem contact op" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "Rol van contactpersoon" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "Contactgroep" @@ -16104,6 +15743,15 @@ msgstr "Groepen toevoegen" msgid "Remove groups" msgstr "Groepen verwijderen" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "Titel" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "Telefoon" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -16116,6 +15764,17 @@ msgstr "" msgid "Assigned contact" msgstr "Toegewezen contactpersoon" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "Tenant Groep" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "Contactgroep" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "contactgroep" @@ -16218,6 +15877,14 @@ msgstr "Link contact opnemen" msgid "Contact Description" msgstr "Beschrijving van de contactpersoon" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "Tenant Groep toevoegen" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "Contactgroep toevoegen" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -17515,10 +17182,6 @@ msgstr "Toegevoegd {count} apparaten om te clusteren {cluster}" msgid "Assigned VLANs" msgstr "Toegewezen VLAN's" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "Interfaces voor kinderen" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPsec - Vervoer" diff --git a/netbox/translations/pl/LC_MESSAGES/django.mo b/netbox/translations/pl/LC_MESSAGES/django.mo index c152a578e592259968166e29800fb2528ef3bd6e..e14b72454a03d2e172aa6abcec74b3d7e9196057 100644 GIT binary patch delta 76049 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 Bj9vf$ delta 75553 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 #k7ln0|+0>wOxpQG3e#fuoL<-vIy)~l1i zGK`L+qm~q>z0s>=NnB)o7(EL*qbT4v#tlt35c~1y6+^!-b|W3%URPJE{xFNDslFmz zEdXP+f6PHLoHoLVT3r(Agp*k~8_jOS!dY?VQLPNRYMm{yQ%1=~p|_Ug+Q9m8sDB#D z16X*0vw1A6#MuN4_@g1Nw3dVnXCnWXWdB4bJG_bhcQ`3Wf`i~(ry{Ak##qt;$kn#W z7M8&-wk4N=#Qpo9m}**CpfGp<`D}vllPa#2B+*5R*5)H0g_9SizmsuPOGvPkQGW1Q z9NTZ$v6=XJ2X7E~8N7~<%I4F%2BW)C9*n6`C{4z{GCzSqO{!T*&x6B8a>iOatD-Bq z1(59_U}Bv1rx!-nfO%zXCe!DjyMx^dLgvLs0ZY0{EPk-H5(?c|RErD0C!yj5?G2MU zV%Kjt%uLXRvn&3U)XPtE{GXN#w~Mfxgj;=A<^bU~)AJ!$OOCbLP`s+eCt@%5=^%bm z5ak=&iy5r_YdUe!(f1!7;&&8%DC1YG<cZbi z+d~lkPLlt7O|6l+Eun+RI}xXu-$hJ2?e3f!EMYfG@R1$ZqP3`g#b0$+|xM zvN>~9xB?iw#xN63)!NaEFyCvtv73O=+gj$u*@@){Yv6A<34TF#7QfkulLT2Y)*3T^ zN`eh^f@%#=>Ozq2WZssZ&yGbu91+zrSHn`)nlEkRC#JG2e!de;5xz zZz*v$+l~ao)Fh^+4^CZ^2zL3ee{u}m%(Me4jYT4;c zkfmV*4`Xv4UlW-xish>2|IHs8S;#`LTyQ;`7u7c5tUZd?sZXt!1OLBA2(ZFx$}{`# z4@td^(f-afzsE|^$C3UCJl0}u9onUkeZ!hse7KmDpEEAVy4qZH;vr9iAHGlef7(HG z)nemsJ6kb?GU5;P>bi>;Y(y79F5%%W?u*L4_MWQ|DZ57^FRqtQJ<(Y5g9e`WoXg&ItPNMZ!r z(wQyg8_=%j$e!93%Gp$m)N)y6pIP5Qe~e8R`V(}sqVpADSEFsh}%!E2J4h2nPPS#51E3R4M~iuI0+LkPN)K=JYQAF`MD z!OY*v^6yr&D{67NW4o9g8KK`A@S4Fa7HVRVnLv$ADKkc=aT)@{S=)fqEjYVP_BojU z!2B46=G`>0NZHquhu-f+S87G&cOnoNq*L3HtMG9-o4mu>%9K)px}zkyv5Ir`ef6 ze4oL#0An@k=hG0BVk2mPlY@-^#bH;*H*lE35{u1TEuRIcLDFhH&`*kO8(S}DJEOIB zBs!Qx_91JDpXTVrrxN?}1G}|7%YU(prM#985##Nzu{^#-cv*b;#o3`4T0)KsUEVY07#qX~(en z-((fbwqp=$-RKvweP|hG!2f&f)n-#o5B*Tw6%#mO=idkpW3KI&BroaTVQ>%K%LGx2 z!@L!G({Wmc`F8~QN`l`r&xGDPWGP8z2J+?1>teTqHMJ?|)njWyba`Jfho2E1MfnZ< zi$hZ@OptFGXJ*_G;{gQRkL)%!-Oyc4S35(1rX<{f^#yP%fsY|iPLLMZtw-+*Hq-1p z#^LiMaRPLCHD`-@un?1NJkC6>W%&hpDU>>5*o6Rbn5)G_mYo253Dg!@2Amfosr_ar zovSwPfzO(jWH0=LM$^fIz4s-8zBtT@qf-P~fpI6Cm9R|PqNFy5wPeUnL$&-k{ns3S zHQ69L`*LRUlcVa2MYRL)nUa2rIQNJ-8rIYwMSXx!Z32Q)=AfE6E{o!?jI+Wiwss0< ztw^L83?cDL*r$P2=s!_mHs*iO@8R!&*~otr=4yTDH}U5*|Lx7wz!W!N_#;j#Lbclj zQENbjKiiHJW=rcjV%HgxYfrU5oBd80k3ctApO4K3`VRERz}i;SNA&A3KZ3lD|35{b z93O#N4;-|!?bAHH{-I4X<4>$dko^IY%t1m6;5%e(t)eC*yq$Se`<-1$h0bUM1Ph>ry3EttZe${nr&#Tm zk!^WGl3Issj{j5t35=2uLRZm1#=%(Rg=(p=>O-0Z=tGeGVxjxvAwT^BHb=B?^i0g3 zvK|{AC4*YFKNTtG9I~a%zhe)p;wOMivcf_B-)KajwoFc8JOJh6B=CTF6P&AUVmu5( zwG^zqMm_;OALG6Bq3lh4dN?}6nMaaLW^B|vwk=6)egxa+#L16N1ihEOaHxqg{rMByZYZm=sm5RR+?tVW<@=(ooCMffw-O|-rJg09*w^Y;bcYE$U?8bK{L$sD5q zwY}Q*69~pyhHcrVH!POJK?eezL#YS>{@=EUfJ34QOJXw|{Y!R4ukn+J{wKDN@SV>R znrkeG{3)@$mn`sVSc-}YnLV9%+;<~ z5*qI!$<-Rr`lEZEuC{^1SCGJ{Xi4VRU$puigYNVcmSsyaoWZ;dUF|%H-LP>fl9)*_ zpE;?_cn&%nvB^wQ{RlQ2KYuVzfK7RlT#U^S3j2W_nZ;afC3cxKR{ir(_{`#DjN;?y z5Q{O$wxTp?8CbjTA92PQWw(kxGERYhDq9oc<0CP$vjlI;_$O?0QNU^DWAJ%{SkK`} zsOBxkVk8E4sc10cg|G<;oWQU%3JZ{pN4Yi50&((;pcQbifF$PFjul3)Eq3qmGm`a; z=$~eNyzKE)j_L!^oq%7p1dInU{uGC=9ByIM5a(eSl`sV<6~&?2L;6ty{!UlBV3|+A z@dXl6YfsR(bhUqR?v6P-_`d(QmE6bUBT7g_I%(1F#_DW5G{gEd9uG3lPNbFc#P}QJ z_wZDjtWukIdHn;M1Nc~L(X)}U+C}s_TGq*ka}C)8e3YhpbC`o4QNC#gGD?MFNgNHs z;d~UMT6F? zxft(foC^K~PvNH;iEJZ*xv(kr9%L1*(ofiT!S_CNvmvX3UK;(Z#XkgyY8Ru2y%TQG`h32?H|b}fQ&m@O2+rX1LH`ms21Z&IQmFs zKeOQ5%~k=tbJ(Jh^i?SRg0h>%_Vn?VaR>p*F|I^{-Ep`ynsGAbSC~&?Z3;fJ5VQ<_ z>S0r!Bz_@4Y%8oEbG28@+u(1LGxxe?q1=;6PmHJFa5)OEOgV?~BRVId1(u_`1T0O@ zPF3TvtIU}H3+Vch`9kz7z!=P<+HS^+(L0LItR%34aVvdCE!>nk;NURA(pdCBX%UI^ z<5nEOJQq}3h10W^NO}@($oP<5I~N$|CGcf@jAj=Ou%3o_R9k|-4ake4{|I3TxKck+ zp%#aXzTjM~pV67|Ot3*~jH6lyf~6&?K!T_>hbOUnVgZv=z)gHV$ELXL;s+ATjm*-5pY z^ft)1l2}4Z{w#B~^yqBT&m2azS2%u0u$c6kRz*u=6-#OhI_pWKo>lOYac_Ee0>7k? zc67C!_^5#GBxmZ1X^Cw^{x|(GHvHxdemSAVpU$M7Wo0h=kz&%;J=Jn|mcMGz#={075&_zgo}Eev0g`1IHR!IY9< z+@CE5uE&4!s5yO@6DlCakIgHg_!Eel7^X80i6KE{KD^mG(`Xzb|3Yv`L%B&Z_ z#|3n6>1(SCX1pE23NkN-;Y|WWH8;-2Fb~1F4Z(i2#5yo8iPPGq7=+G!^VJcXEbPD~ zY;wZ&=={U_aT0j~)plU}PWS&svROmWWeDS;ptb?$7i_$Qc{h}Q;f$LxK2DNb&{sQ7 z0JW?H`2)vs2>cw|KIoT67QOwAYz;oATLD+l8>gSB$Y@ztinir4JcDw3)`k%zGXZ-N zARS4xrvHrmJnN^CePc-sB)|{mV+`ZTmSj{C>Cvx?-F?<75j+>`{`0?qgGj1UJ5B|6 z=qU(N6!|~MDqyHLDr$XLtBUb2=r^S+_u=R!r7uEnC4DBkG2v(Qt`Mv_+(oc^jQx$Z zT=;1jb^rfi@)>xW&T(v_s!q0j4_NyZc^QnqW!zN}X+crW823j12=l`P9!4VP(5Vay z;-d}gpIE<30*kGPZsz-p&i^`w*D#n&mTF1JY%~S~Y)4)*j%s-sPem^u90SW^JJ{CO z5imKj5@r`=Q;A@kqsdZQ5;I8Xq}Qs@b3pAd&Vo>`h*3onY0Osr!@L>^e($Kb)-bP+ zlcKEO!O0tXS@ibeYXN_dotwV@e?yHo@>J0X#U5 zi_<$OUt+8_og@;WqgL0d&WX;SB#;xGnG}(Q-iKfr@u9ZQn1>j-m>-0xSpN>2W4ix; z$8ab?rxWOnf?B2@xemU^d1D;@NKa2!>xF|f=-!38dW)hnjUXkgs?Nxx+OHN|^MnK} zK+>&=F@!?8pyMe(M9EUJ}XtI~cTC*Dq(Jw~Q9dI7v zsQZ6u>|XRYp`#XLK2O28B=EmByXSrXU##kjgWbv&C(Gbc7~cZ*Wp{F#BN;ZuaT?pD zv6lE1`tF|p(VzNFOd0OrMGpb!-?)85- ziZBIRlAD$8RJR{TEs?cE_7h4~FusA)@90}ttAH#Mx^peK7t3!6S^`>IkDj*_#(`|tL3%tg{1JyKS(r%wk3QH8N|H<} z0@OplHbL^DpB7nMbRLngS_%3~f`!vp`6aw)MJrIEIr4*jIsDAk|F`HDEh8z+#yFV8 zO&De&Nc5H&!#f1qZ1UnbQ(H-84UiXLoQ&&aKZQKg*b>`K;y$`s-DvT?)oVZ&j633R zHj5bv{2fl`5c~n-3^*8x!FG&e{XdnQB}h-?as{%e& zk@y?4y=_VAHD{uYrRu-`w=yV1&%i<&0;;9NxHd^Vz|kefi`0?VqJm(0Ogn<+=&xWc z9Nhxg=l5H4zmwQ~5-UPc(c-!K;O{DeHLNw(|5*Qn4F9lgnT~M; z1XF8Ga(x+}H3uI_<{*yqBX5dqFaatMcmg|6hPAQS{)_Ap<7xzXimqA%M zKULhNfZteufsd}pPNC4ieDyG{CaHf|&xyVdowWE_=wEZzs9dcl{yQ)p z*M@9rp{&*d2WqX2^DzFN9@T1~tCpQ0+0e<&+B4f;$-_t{s?BDteB_-p{1o9^WW|ZC zHWl#=+;k@A4X7Vg4fKiRlOI`HN6pm+x4$zErq*{B_FKli2>aI3ZKc|=J!I+1v=#n; z@^36DG7i!mz5)lwP`ri0EsAa^O=}r#L$>4OF%G*C_$`U3<>$K1LgM`ixEyCOU}yCD zn9U3PZfCp=c^~wC$F>)IPyZSF^!OX8cX`QJ_!i{~W?0cOJOdA*r1pWnlO)yhAWKca z@96iKpC+Mej1SP05-c%#Gm(v9?HNAa;$N*LcDs-tL^hFlDH-?Gr+n84TpPm&IQWSL zw*_*{oPVpZe#a7<#aQhYJOrEKeBs9UGBH}faCWVeCDf64{ww?l zTT+XK2`qG^SHVGRf_1_{AF{5;**-z%dt_Az)}L*zjj>uf#xHQ3mw7&uogmm$^zzb6 zU|$INw~V9OK-Q-_bFXU-#>Y@-MNl6a^Qr2bWmo{`jgb{Xrv|dJB#@6p@7NCLYvft1 zsa?gs65~lQs=dT-LS)tG!|cXfjgQZa3nPoISNLGEQM*T`Q7t1u<}wK*z$+Z)hvn!M zkn0QEsupA@RZKuM#cbmtU&Od3$qq#?3yDUO#5csa#ad~Cwnmm5Kfx+O`=1r%a`bs@ zaa6m_Vr-n}RY2Mn)`r@+nI+r>$I;sbs#=equePqWM^^Py0@o+8@4Z)9F{tFo{* z(gLKg>V~jYg-Id@PCvr|7%yaeT|a=F*}FKJX-<5VXE`QC*TqaN0kQL7R+!vBW0r*Z zGITz%-T?idv473DKl$WFz64#hV#qs_N+ERobJBT@P6g(v8Bb%pAnLzd{fdLOmba82 zMN4Xoc->fo!oxj@7@~2cloG$ zZVca&Q|VO#GeR_sQ_&VNmX9-MD zH>`7rt3g=RpeBR+g!o21a?f_h4AlmP`w~BKM|gZQ{&43B@NInRt{mU@;U9OV815Rr zbpN^I1^5bmap#Q_mkrBbrGKBEA%lEvVg*$3)EpSxC#Z60zfS!_BZ8WQ^y?Mc+kYV8 zuEtu4=oS(l5)=_l?mwwcW{@?9jdF&U_brVZu*~DpCge{Ta4uh*iamRVbz<7t7qe_Y zJ5S_{3IQ=AhgJwE<~vm(U{+vcxvBw$B3oAtSm&FfDHE#u5F(dItwp^!+s|Aa#sb6DuVZD0B^5SH}B-hRh+ zbUraUIA}<4cxcby-l4(14U+;|xg(2D4oK%)SWRIE0@6h8-5*dbcF>8@$H#RV z672hLe?XeJzJQYfg9Ck2&IH6sn7mbRL>OMEp?|+2$H#RZLX2SF>>B|E z-&E}xqI-h`JComn&b_%#*@5yP2m&fG?n>r>iHDKVbfiZ*3b-r5L_z z!Jg~xSPjC44DQrD#P>rd59OBb=II&`H!P@gSa?M6z)pjGOS*f$N#y%+u;+b@xHT#k zDq1Y4MsRpH-+r&Bbbv3$Xivd--!$k)#2#TM79F1ub+s0q=4lyNr&VyT9=$`4FX$8+ zOhp63I``-JdWD8?i**fiu^Jk3Vl3AyQq0G8^6#oP8D)+;=>J@>(`I^nf!}c31_uos z+$U^cXo#Ic<$0bwMSXqFc%FD7>-^$LAKB%+Cn$2wc~2VOz4M-TF(PkX^CXWvb;Xl4 zGWm5+GT)z9JOdI$U6QSQ?H+l0r1A~<&oeuYFJH{Sq%k77e$z%?4Gc^f85AQhnQv>n Iz-jLP55V`+4FCWD diff --git a/netbox/translations/pl/LC_MESSAGES/django.po b/netbox/translations/pl/LC_MESSAGES/django.po index 66076369c..49eafa881 100644 --- a/netbox/translations/pl/LC_MESSAGES/django.po +++ b/netbox/translations/pl/LC_MESSAGES/django.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-14 05:18+0000\n" +"POT-Creation-Date: 2026-03-31 05:31+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2026\n" "Language-Team: Polish (https://app.transifex.com/netbox-community/teams/178115/pl/)\n" @@ -50,9 +50,9 @@ msgstr "Twoje hasło zostało pomyślnie zmienione." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 #: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204 -#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1933 -#: netbox/dcim/choices.py:1991 netbox/dcim/choices.py:2058 -#: netbox/dcim/choices.py:2080 netbox/virtualization/choices.py:20 +#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1954 +#: netbox/dcim/choices.py:2012 netbox/dcim/choices.py:2079 +#: netbox/dcim/choices.py:2101 netbox/virtualization/choices.py:20 #: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18 #: netbox/vpn/choices.py:281 msgid "Planned" @@ -66,8 +66,8 @@ msgstr "Wdrażanie" #: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22 #: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155 #: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256 -#: netbox/dcim/choices.py:1990 netbox/dcim/choices.py:2057 -#: netbox/dcim/choices.py:2079 netbox/extras/tables/tables.py:642 +#: netbox/dcim/choices.py:2011 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:2100 netbox/extras/tables/tables.py:642 #: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49 #: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154 #: netbox/templates/extras/configcontext.html:29 @@ -79,8 +79,8 @@ msgid "Active" msgstr "Aktywny" #: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202 -#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:1989 -#: netbox/dcim/choices.py:2059 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:2010 +#: netbox/dcim/choices.py:2080 netbox/dcim/choices.py:2099 #: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44 msgid "Offline" msgstr "Nieaktywny" @@ -93,8 +93,9 @@ msgstr "Wycofywanie" msgid "Decommissioned" msgstr "Wycofane z użytku" -#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2002 -#: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:153 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2023 +#: netbox/dcim/tables/devices.py:1208 +#: netbox/templates/dcim/interface/attrs/mac_address.html:3 #: netbox/tenancy/choices.py:17 msgid "Primary" msgstr "Główny" @@ -113,7 +114,8 @@ msgid "Inactive" msgstr "Nieaktywny" #: netbox/circuits/choices.py:107 netbox/dcim/tables/devices.py:714 -#: netbox/templates/dcim/interface.html:293 netbox/vpn/choices.py:63 +#: netbox/templates/dcim/panels/interface_wireless.html:12 +#: netbox/vpn/choices.py:63 msgid "Peer" msgstr "Peer" @@ -189,9 +191,9 @@ msgstr "Grupa placówek (uproszczona nazwa)" #: netbox/dcim/forms/filtersets.py:1172 netbox/dcim/forms/filtersets.py:1268 #: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:2024 #: netbox/dcim/forms/filtersets.py:2048 netbox/dcim/forms/filtersets.py:2072 -#: netbox/dcim/forms/model_forms.py:155 netbox/dcim/forms/model_forms.py:183 -#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:570 -#: netbox/dcim/forms/model_forms.py:839 netbox/dcim/forms/object_create.py:294 +#: netbox/dcim/forms/model_forms.py:166 netbox/dcim/forms/model_forms.py:209 +#: netbox/dcim/forms/model_forms.py:280 netbox/dcim/forms/model_forms.py:596 +#: netbox/dcim/forms/model_forms.py:865 netbox/dcim/forms/object_create.py:294 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:26 #: netbox/dcim/tables/power.py:90 netbox/dcim/tables/racks.py:111 #: netbox/dcim/tables/racks.py:194 netbox/dcim/tables/sites.py:102 @@ -202,7 +204,6 @@ msgstr "Grupa placówek (uproszczona nazwa)" #: netbox/ipam/tables/vlans.py:90 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:36 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/ipam/vlan.html:23 #: netbox/templates/ipam/vlan_edit.html:52 #: netbox/virtualization/forms/bulk_edit.py:95 #: netbox/virtualization/forms/bulk_import.py:60 @@ -234,7 +235,6 @@ msgstr "ASN (ID)" #: netbox/circuits/filtersets.py:85 netbox/circuits/forms/filtersets.py:42 #: netbox/ipam/forms/model_forms.py:162 netbox/ipam/models/asns.py:137 #: netbox/ipam/models/asns.py:154 netbox/ipam/tables/asn.py:51 -#: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" @@ -331,14 +331,12 @@ msgstr "Szukaj" #: netbox/circuits/forms/filtersets.py:232 #: netbox/circuits/forms/filtersets.py:259 #: netbox/circuits/forms/filtersets.py:306 -#: netbox/circuits/forms/model_forms.py:139 -#: netbox/circuits/forms/model_forms.py:162 -#: netbox/circuits/forms/model_forms.py:260 +#: netbox/circuits/forms/model_forms.py:168 +#: netbox/circuits/forms/model_forms.py:191 +#: netbox/circuits/forms/model_forms.py:289 #: netbox/circuits/tables/circuits.py:103 #: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 -#: netbox/templates/circuits/circuit.html:15 -#: netbox/templates/circuits/circuitgroupassignment.html:30 -#: netbox/templates/circuits/circuittermination.html:19 +#: netbox/templates/circuits/panels/circuit_termination.html:7 #: netbox/templates/dcim/inc/cable_termination.html:62 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -396,11 +394,9 @@ msgstr "Typ łącza wirtualnego (uproszczona nazwa)" #: netbox/circuits/forms/bulk_import.py:248 #: netbox/circuits/forms/filtersets.py:384 #: netbox/circuits/forms/filtersets.py:390 -#: netbox/circuits/forms/model_forms.py:338 -#: netbox/circuits/forms/model_forms.py:353 +#: netbox/circuits/forms/model_forms.py:367 +#: netbox/circuits/forms/model_forms.py:382 #: netbox/circuits/tables/virtual_circuits.py:84 -#: netbox/templates/circuits/virtualcircuit.html:20 -#: netbox/templates/circuits/virtualcircuittermination.html:38 msgid "Virtual circuit" msgstr "Wirtualne łącze" @@ -413,12 +409,12 @@ msgstr "Interfejs (ID)" #: netbox/circuits/forms/bulk_edit.py:48 #: netbox/circuits/forms/filtersets.py:68 #: netbox/circuits/forms/model_forms.py:48 -#: netbox/circuits/tables/providers.py:32 netbox/dcim/forms/bulk_edit.py:134 -#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/model_forms.py:142 -#: netbox/dcim/tables/sites.py:74 netbox/ipam/models/asns.py:155 -#: netbox/ipam/tables/asn.py:37 netbox/ipam/views.py:270 -#: netbox/netbox/navigation/menu.py:182 netbox/netbox/navigation/menu.py:185 -#: netbox/templates/circuits/provider.html:23 +#: netbox/circuits/tables/providers.py:32 netbox/circuits/ui/panels.py:92 +#: netbox/dcim/forms/bulk_edit.py:134 netbox/dcim/forms/filtersets.py:225 +#: netbox/dcim/forms/model_forms.py:142 netbox/dcim/tables/sites.py:74 +#: netbox/ipam/models/asns.py:155 netbox/ipam/tables/asn.py:37 +#: netbox/ipam/views.py:365 netbox/netbox/navigation/menu.py:182 +#: netbox/netbox/navigation/menu.py:185 msgid "ASNs" msgstr "Numery ASN" @@ -438,9 +434,9 @@ msgstr "Numery ASN" #: netbox/circuits/forms/filtersets.py:349 #: netbox/circuits/forms/filtersets.py:385 #: netbox/circuits/forms/filtersets.py:408 -#: netbox/circuits/forms/model_forms.py:65 -#: netbox/circuits/forms/model_forms.py:80 -#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:90 +#: netbox/circuits/forms/model_forms.py:109 +#: netbox/circuits/forms/model_forms.py:140 #: netbox/circuits/tables/circuits.py:56 #: netbox/circuits/tables/circuits.py:107 #: netbox/circuits/tables/circuits.py:192 @@ -448,22 +444,14 @@ msgstr "Numery ASN" #: netbox/circuits/tables/providers.py:95 #: netbox/circuits/tables/virtual_circuits.py:46 #: netbox/circuits/tables/virtual_circuits.py:89 -#: netbox/templates/circuits/circuit.html:18 -#: netbox/templates/circuits/circuitgroupassignment.html:26 -#: netbox/templates/circuits/circuittermination.html:25 -#: netbox/templates/circuits/provider.html:20 -#: netbox/templates/circuits/provideraccount.html:20 -#: netbox/templates/circuits/providernetwork.html:20 -#: netbox/templates/circuits/virtualcircuit.html:23 -#: netbox/templates/circuits/virtualcircuittermination.html:26 +#: netbox/templates/circuits/panels/circuit_termination.html:11 #: netbox/templates/dcim/inc/cable_termination.html:58 -#: netbox/templates/dcim/interface.html:184 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:7 msgid "Provider" msgstr "Dostawca usług" #: netbox/circuits/forms/bulk_edit.py:86 -#: netbox/circuits/forms/filtersets.py:106 -#: netbox/templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/filtersets.py:106 netbox/circuits/ui/panels.py:106 msgid "Service ID" msgstr "ID usługi" @@ -482,12 +470,7 @@ msgstr "ID usługi" #: netbox/dcim/tables/devicetypes.py:214 netbox/dcim/tables/devicetypes.py:255 #: netbox/dcim/tables/devicetypes.py:274 netbox/dcim/tables/racks.py:30 #: netbox/extras/forms/bulk_edit.py:306 netbox/extras/tables/tables.py:552 -#: netbox/netbox/ui/attrs.py:194 netbox/templates/circuits/circuittype.html:30 -#: netbox/templates/circuits/virtualcircuittype.html:30 -#: netbox/templates/dcim/cable.html:44 netbox/templates/dcim/frontport.html:40 -#: netbox/templates/dcim/inventoryitemrole.html:26 -#: netbox/templates/dcim/poweroutlet.html:48 -#: netbox/templates/dcim/rearport.html:40 netbox/templates/extras/tag.html:26 +#: netbox/netbox/ui/attrs.py:213 netbox/templates/extras/tag.html:26 msgid "Color" msgstr "Kolor" @@ -521,27 +504,14 @@ msgstr "Kolor" #: netbox/dcim/forms/filtersets.py:1602 netbox/dcim/forms/filtersets.py:1707 #: netbox/dcim/forms/filtersets.py:1756 netbox/dcim/forms/filtersets.py:1775 #: netbox/dcim/forms/filtersets.py:1799 netbox/dcim/forms/filtersets.py:1818 -#: netbox/dcim/forms/model_forms.py:820 netbox/dcim/forms/model_forms.py:826 +#: netbox/dcim/forms/model_forms.py:846 netbox/dcim/forms/model_forms.py:852 #: netbox/dcim/forms/object_import.py:85 #: netbox/dcim/forms/object_import.py:114 #: netbox/dcim/forms/object_import.py:127 netbox/dcim/tables/devices.py:182 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 #: netbox/extras/forms/bulk_import.py:48 netbox/extras/tables/tables.py:510 #: netbox/extras/tables/tables.py:578 netbox/netbox/tables/tables.py:339 -#: netbox/templates/circuits/circuit.html:30 -#: netbox/templates/circuits/virtualcircuit.html:39 -#: netbox/templates/circuits/virtualcircuittermination.html:64 -#: netbox/templates/core/datasource.html:38 -#: netbox/templates/dcim/cable.html:15 -#: netbox/templates/dcim/consoleport.html:36 -#: netbox/templates/dcim/consoleserverport.html:36 -#: netbox/templates/dcim/frontport.html:36 -#: netbox/templates/dcim/interface.html:46 -#: netbox/templates/dcim/interface.html:244 -#: netbox/templates/dcim/powerfeed.html:32 -#: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 -#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/dcim/panels/interface_connection.html:68 #: netbox/templates/extras/eventrule.html:74 #: netbox/templates/wireless/panels/wirelesslink_interface.html:16 #: netbox/virtualization/forms/bulk_edit.py:50 @@ -562,10 +532,8 @@ msgstr "Typ" #: netbox/circuits/forms/bulk_import.py:213 #: netbox/circuits/forms/filtersets.py:159 #: netbox/circuits/forms/filtersets.py:357 -#: netbox/circuits/forms/model_forms.py:117 -#: netbox/circuits/forms/model_forms.py:326 -#: netbox/templates/circuits/virtualcircuit.html:31 -#: netbox/templates/circuits/virtualcircuittermination.html:34 +#: netbox/circuits/forms/model_forms.py:146 +#: netbox/circuits/forms/model_forms.py:355 msgid "Provider account" msgstr "Konto u dostawcy usług" @@ -607,19 +575,10 @@ msgstr "Konto u dostawcy usług" #: netbox/ipam/forms/model_forms.py:503 netbox/ipam/tables/ip.py:182 #: netbox/ipam/tables/ip.py:261 netbox/ipam/tables/ip.py:314 #: netbox/ipam/tables/ip.py:389 netbox/ipam/tables/ip.py:416 -#: netbox/ipam/tables/vlans.py:98 netbox/templates/circuits/circuit.html:34 -#: netbox/templates/circuits/virtualcircuit.html:43 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:21 -#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:19 -#: netbox/templates/dcim/cable.html:19 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/powerfeed.html:36 -#: netbox/templates/dcim/poweroutlet.html:40 +#: netbox/ipam/tables/vlans.py:98 netbox/templates/core/rq_task.html:81 +#: netbox/templates/core/system.html:19 #: netbox/templates/extras/inc/script_list_content.html:35 -#: netbox/templates/ipam/ipaddress.html:37 -#: netbox/templates/ipam/iprange.html:61 netbox/templates/ipam/prefix.html:69 -#: netbox/templates/ipam/vlan.html:48 netbox/users/forms/filtersets.py:36 -#: netbox/users/forms/model_forms.py:223 +#: netbox/users/forms/filtersets.py:36 netbox/users/forms/model_forms.py:223 #: netbox/virtualization/forms/bulk_edit.py:60 #: netbox/virtualization/forms/bulk_edit.py:83 #: netbox/virtualization/forms/bulk_import.py:55 @@ -680,21 +639,9 @@ msgstr "Status" #: netbox/ipam/forms/filtersets.py:155 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:297 netbox/ipam/forms/filtersets.py:350 #: netbox/ipam/forms/filtersets.py:459 netbox/ipam/forms/filtersets.py:552 -#: netbox/ipam/tables/ip.py:419 netbox/templates/circuits/circuit.html:48 -#: netbox/templates/circuits/circuitgroup.html:36 -#: netbox/templates/circuits/virtualcircuit.html:47 -#: netbox/templates/dcim/cable.html:27 netbox/templates/dcim/powerfeed.html:44 -#: netbox/templates/dcim/virtualdevicecontext.html:52 -#: netbox/templates/ipam/aggregate.html:30 netbox/templates/ipam/asn.html:33 -#: netbox/templates/ipam/asnrange.html:29 -#: netbox/templates/ipam/ipaddress.html:28 -#: netbox/templates/ipam/iprange.html:65 netbox/templates/ipam/prefix.html:29 -#: netbox/templates/ipam/routetarget.html:17 -#: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vlangroup.html:50 -#: netbox/templates/ipam/vrf.html:20 netbox/templates/tenancy/tenant.html:17 -#: netbox/tenancy/forms/filtersets.py:55 netbox/tenancy/forms/forms.py:26 -#: netbox/tenancy/forms/forms.py:50 netbox/tenancy/forms/model_forms.py:51 -#: netbox/tenancy/tables/columns.py:50 +#: netbox/ipam/tables/ip.py:419 netbox/tenancy/forms/filtersets.py:55 +#: netbox/tenancy/forms/forms.py:26 netbox/tenancy/forms/forms.py:50 +#: netbox/tenancy/forms/model_forms.py:51 netbox/tenancy/tables/columns.py:50 #: netbox/virtualization/forms/bulk_edit.py:66 #: netbox/virtualization/forms/bulk_edit.py:126 #: netbox/virtualization/forms/bulk_import.py:67 @@ -729,8 +676,7 @@ msgstr "Przydzielona przepustowość (Kbps)" #: netbox/circuits/forms/bulk_edit.py:159 #: netbox/circuits/forms/filtersets.py:217 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/templates/circuits/circuit.html:38 +#: netbox/circuits/forms/model_forms.py:165 #: netbox/wireless/forms/bulk_edit.py:121 #: netbox/wireless/forms/filtersets.py:137 #: netbox/wireless/forms/model_forms.py:166 @@ -749,7 +695,7 @@ msgid "Distance unit" msgstr "Jednostka odległości" #: netbox/circuits/forms/bulk_edit.py:173 -#: netbox/circuits/forms/model_forms.py:141 +#: netbox/circuits/forms/model_forms.py:170 msgid "Service Parameters" msgstr "Parametry usługi" @@ -775,7 +721,7 @@ msgstr "Parametry usługi" #: netbox/dcim/forms/filtersets.py:1864 netbox/dcim/forms/filtersets.py:1879 #: netbox/dcim/forms/filtersets.py:1890 netbox/dcim/forms/filtersets.py:1936 #: netbox/dcim/forms/filtersets.py:1972 netbox/dcim/tables/modules.py:25 -#: netbox/dcim/views.py:1679 netbox/extras/forms/bulk_edit.py:94 +#: netbox/dcim/views.py:1681 netbox/extras/forms/bulk_edit.py:94 #: netbox/extras/forms/filtersets.py:48 netbox/extras/forms/filtersets.py:147 #: netbox/extras/forms/filtersets.py:226 netbox/extras/forms/filtersets.py:243 #: netbox/extras/forms/filtersets.py:275 netbox/extras/forms/filtersets.py:306 @@ -798,12 +744,12 @@ msgstr "Atrybuty" #: netbox/circuits/forms/bulk_edit.py:175 #: netbox/circuits/forms/bulk_edit.py:317 -#: netbox/circuits/forms/model_forms.py:142 -#: netbox/circuits/forms/model_forms.py:238 -#: netbox/circuits/forms/model_forms.py:340 -#: netbox/dcim/forms/model_forms.py:157 netbox/dcim/forms/model_forms.py:198 -#: netbox/dcim/forms/model_forms.py:285 netbox/dcim/forms/model_forms.py:342 -#: netbox/dcim/forms/model_forms.py:883 netbox/dcim/forms/model_forms.py:1897 +#: netbox/circuits/forms/model_forms.py:171 +#: netbox/circuits/forms/model_forms.py:267 +#: netbox/circuits/forms/model_forms.py:369 +#: netbox/dcim/forms/model_forms.py:168 netbox/dcim/forms/model_forms.py:224 +#: netbox/dcim/forms/model_forms.py:311 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/forms/model_forms.py:909 netbox/dcim/forms/model_forms.py:1923 #: netbox/ipam/forms/bulk_edit.py:383 netbox/ipam/forms/model_forms.py:70 #: netbox/ipam/forms/model_forms.py:87 netbox/ipam/forms/model_forms.py:118 #: netbox/ipam/forms/model_forms.py:139 netbox/ipam/forms/model_forms.py:163 @@ -838,34 +784,9 @@ msgstr "Środowisko najemcy" #: netbox/extras/tables/tables.py:97 netbox/ipam/tables/vlans.py:214 #: netbox/ipam/tables/vlans.py:241 netbox/netbox/forms/bulk_edit.py:79 #: netbox/netbox/forms/bulk_edit.py:91 netbox/netbox/forms/bulk_edit.py:103 -#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 -#: netbox/templates/circuits/circuit.html:69 -#: netbox/templates/circuits/circuitgroup.html:32 -#: netbox/templates/circuits/circuittype.html:26 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:83 -#: netbox/templates/circuits/provider.html:33 -#: netbox/templates/circuits/provideraccount.html:32 -#: netbox/templates/circuits/providernetwork.html:32 -#: netbox/templates/circuits/virtualcircuit.html:56 -#: netbox/templates/circuits/virtualcircuittermination.html:68 -#: netbox/templates/circuits/virtualcircuittype.html:26 -#: netbox/templates/core/datasource.html:58 -#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:40 -#: netbox/templates/dcim/consoleport.html:44 -#: netbox/templates/dcim/consoleserverport.html:44 -#: netbox/templates/dcim/devicebay.html:32 -#: netbox/templates/dcim/frontport.html:54 -#: netbox/templates/dcim/interface.html:69 -#: netbox/templates/dcim/inventoryitem.html:64 -#: netbox/templates/dcim/inventoryitemrole.html:22 -#: netbox/templates/dcim/macaddress.html:21 -#: netbox/templates/dcim/modulebay.html:42 -#: netbox/templates/dcim/powerfeed.html:40 -#: netbox/templates/dcim/poweroutlet.html:44 -#: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 -#: netbox/templates/dcim/rearport.html:54 -#: netbox/templates/dcim/virtualchassis.html:21 +#: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:85 +#: netbox/templates/core/plugin.html:80 #: netbox/templates/extras/configcontext.html:25 #: netbox/templates/extras/configcontextprofile.html:17 #: netbox/templates/extras/configtemplate.html:17 @@ -880,23 +801,6 @@ msgstr "Środowisko najemcy" #: netbox/templates/extras/tableconfig.html:17 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:151 -#: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 -#: netbox/templates/ipam/asnrange.html:38 -#: netbox/templates/ipam/fhrpgroup.html:34 -#: netbox/templates/ipam/ipaddress.html:55 -#: netbox/templates/ipam/iprange.html:74 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/rir.html:26 netbox/templates/ipam/role.html:26 -#: netbox/templates/ipam/routetarget.html:21 -#: netbox/templates/ipam/service.html:52 -#: netbox/templates/ipam/servicetemplate.html:27 -#: netbox/templates/ipam/vlan.html:62 netbox/templates/ipam/vlangroup.html:34 -#: netbox/templates/ipam/vlantranslationpolicy.html:18 -#: netbox/templates/ipam/vlantranslationrule.html:26 -#: netbox/templates/ipam/vrf.html:33 netbox/templates/tenancy/contact.html:77 -#: netbox/templates/tenancy/contactgroup.html:25 -#: netbox/templates/tenancy/contactrole.html:22 -#: netbox/templates/tenancy/tenant.html:24 -#: netbox/templates/tenancy/tenantgroup.html:33 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:12 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:12 #: netbox/users/forms/bulk_edit.py:62 netbox/users/forms/bulk_edit.py:80 @@ -908,7 +812,7 @@ msgid "Description" msgstr "Opis" #: netbox/circuits/forms/bulk_edit.py:192 -#: netbox/circuits/forms/model_forms.py:170 +#: netbox/circuits/forms/model_forms.py:199 #: netbox/dcim/forms/bulk_import.py:1419 netbox/dcim/forms/bulk_import.py:1444 msgid "Termination type" msgstr "Typ zakończenia" @@ -916,9 +820,9 @@ msgstr "Typ zakończenia" #: netbox/circuits/forms/bulk_edit.py:195 #: netbox/circuits/forms/bulk_import.py:133 #: netbox/circuits/forms/filtersets.py:234 -#: netbox/circuits/forms/model_forms.py:173 +#: netbox/circuits/forms/model_forms.py:202 netbox/circuits/ui/panels.py:14 #: netbox/templates/circuits/inc/circuit_termination.html:6 -#: netbox/templates/dcim/cable.html:72 netbox/templates/dcim/cable.html:76 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:6 #: netbox/vpn/forms/bulk_import.py:99 netbox/vpn/forms/filtersets.py:87 msgid "Termination" msgstr "Wypowiedzenie" @@ -940,26 +844,23 @@ msgid "Mark connected" msgstr "Oznacz jako podłączony" #: netbox/circuits/forms/bulk_edit.py:220 -#: netbox/circuits/forms/model_forms.py:184 +#: netbox/circuits/forms/model_forms.py:213 netbox/circuits/views.py:513 +#: netbox/dcim/views.py:3465 netbox/dcim/views.py:3566 #: netbox/templates/circuits/inc/circuit_termination_fields.html:55 -#: netbox/templates/dcim/frontport.html:118 -#: netbox/templates/dcim/interface.html:268 -#: netbox/templates/dcim/rearport.html:112 +#: netbox/templates/dcim/panels/interface_connection.html:92 msgid "Circuit Termination" msgstr "Zakończenie obwodu" #: netbox/circuits/forms/bulk_edit.py:222 -#: netbox/circuits/forms/model_forms.py:186 +#: netbox/circuits/forms/model_forms.py:215 msgid "Termination Details" msgstr "Szczegóły wypowiedzenia" #: netbox/circuits/forms/bulk_edit.py:261 #: netbox/circuits/forms/bulk_import.py:188 #: netbox/circuits/forms/filtersets.py:314 -#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:666 -#: netbox/templates/circuits/circuitgroupassignment.html:34 +#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:692 #: netbox/templates/dcim/panels/virtual_chassis_members.html:11 -#: netbox/templates/dcim/virtualchassis.html:58 #: netbox/templates/dcim/virtualchassis_edit.html:68 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 #: netbox/templates/ipam/panels/fhrp_groups.html:12 @@ -974,7 +875,7 @@ msgstr "Priorytet" #: netbox/circuits/forms/filtersets.py:272 #: netbox/circuits/forms/filtersets.py:365 #: netbox/circuits/forms/filtersets.py:403 -#: netbox/circuits/forms/model_forms.py:321 +#: netbox/circuits/forms/model_forms.py:350 #: netbox/circuits/tables/virtual_circuits.py:51 #: netbox/circuits/tables/virtual_circuits.py:95 msgid "Provider network" @@ -983,13 +884,13 @@ msgstr "Sieć dostawcy usług" #: netbox/circuits/forms/bulk_edit.py:326 #: netbox/circuits/forms/bulk_import.py:253 #: netbox/circuits/forms/filtersets.py:393 -#: netbox/circuits/forms/model_forms.py:360 netbox/dcim/forms/bulk_edit.py:351 +#: netbox/circuits/forms/model_forms.py:389 netbox/dcim/forms/bulk_edit.py:351 #: netbox/dcim/forms/bulk_edit.py:1245 netbox/dcim/forms/bulk_edit.py:1681 #: netbox/dcim/forms/bulk_import.py:270 netbox/dcim/forms/bulk_import.py:1199 #: netbox/dcim/forms/filtersets.py:404 netbox/dcim/forms/filtersets.py:879 #: netbox/dcim/forms/filtersets.py:1902 netbox/dcim/forms/filtersets.py:1942 -#: netbox/dcim/forms/model_forms.py:267 netbox/dcim/forms/model_forms.py:1234 -#: netbox/dcim/forms/model_forms.py:1717 +#: netbox/dcim/forms/model_forms.py:293 netbox/dcim/forms/model_forms.py:1260 +#: netbox/dcim/forms/model_forms.py:1743 #: netbox/dcim/forms/object_import.py:182 netbox/dcim/tables/devices.py:173 #: netbox/dcim/tables/devices.py:1032 netbox/dcim/tables/devicetypes.py:318 #: netbox/dcim/tables/racks.py:118 netbox/extras/filtersets.py:734 @@ -1003,14 +904,10 @@ msgstr "Sieć dostawcy usług" #: netbox/ipam/forms/model_forms.py:253 netbox/ipam/forms/model_forms.py:678 #: netbox/ipam/tables/ip.py:208 netbox/ipam/tables/ip.py:265 #: netbox/ipam/tables/ip.py:318 netbox/ipam/tables/vlans.py:102 -#: netbox/templates/circuits/virtualcircuittermination.html:42 #: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:196 -#: netbox/templates/dcim/interface.html:298 -#: netbox/templates/dcim/inventoryitem.html:40 -#: netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:57 netbox/templates/ipam/prefix.html:73 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/dcim/panels/component_inventory_items.html:10 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:19 +#: netbox/templates/dcim/panels/interface_wireless.html:17 #: netbox/templates/wireless/panels/wirelesslink_interface.html:20 #: netbox/tenancy/forms/bulk_edit.py:136 #: netbox/tenancy/forms/filtersets.py:136 @@ -1106,22 +1003,19 @@ msgid "Operational role" msgstr "Rola operacyjna" #: netbox/circuits/forms/bulk_import.py:258 -#: netbox/circuits/forms/model_forms.py:363 +#: netbox/circuits/forms/model_forms.py:392 #: netbox/circuits/tables/virtual_circuits.py:108 -#: netbox/dcim/forms/bulk_import.py:1330 netbox/dcim/forms/model_forms.py:1308 -#: netbox/dcim/forms/model_forms.py:1577 netbox/dcim/forms/model_forms.py:1758 -#: netbox/dcim/forms/model_forms.py:1793 netbox/dcim/forms/model_forms.py:1918 -#: netbox/dcim/tables/connections.py:66 netbox/dcim/tables/devices.py:1199 -#: netbox/ipam/forms/bulk_import.py:323 netbox/ipam/forms/model_forms.py:283 -#: netbox/ipam/forms/model_forms.py:292 netbox/ipam/tables/fhrp.py:61 -#: netbox/ipam/tables/ip.py:323 netbox/ipam/tables/vlans.py:145 +#: netbox/circuits/ui/panels.py:134 netbox/dcim/forms/bulk_import.py:1330 +#: netbox/dcim/forms/model_forms.py:1334 netbox/dcim/forms/model_forms.py:1603 +#: netbox/dcim/forms/model_forms.py:1784 netbox/dcim/forms/model_forms.py:1819 +#: netbox/dcim/forms/model_forms.py:1944 netbox/dcim/tables/connections.py:66 +#: netbox/dcim/tables/devices.py:1199 netbox/dcim/views.py:3457 +#: netbox/dcim/views.py:3560 netbox/ipam/forms/bulk_import.py:323 +#: netbox/ipam/forms/model_forms.py:283 netbox/ipam/forms/model_forms.py:292 +#: netbox/ipam/tables/fhrp.py:61 netbox/ipam/tables/ip.py:323 +#: netbox/ipam/tables/vlans.py:145 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 -#: netbox/templates/circuits/virtualcircuittermination.html:53 -#: netbox/templates/circuits/virtualcircuittermination.html:60 -#: netbox/templates/dcim/frontport.html:103 -#: netbox/templates/dcim/interface.html:27 -#: netbox/templates/dcim/interface.html:259 -#: netbox/templates/dcim/rearport.html:103 +#: netbox/templates/dcim/panels/interface_connection.html:83 #: netbox/templates/wireless/panels/wirelesslink_interface.html:12 #: netbox/virtualization/forms/model_forms.py:368 #: netbox/vpn/forms/bulk_import.py:302 netbox/vpn/forms/model_forms.py:434 @@ -1153,8 +1047,8 @@ msgstr "Interfejs" #: netbox/dcim/forms/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1746 #: netbox/dcim/forms/filtersets.py:1790 netbox/dcim/forms/filtersets.py:1833 #: netbox/dcim/forms/filtersets.py:1865 netbox/dcim/forms/filtersets.py:1892 -#: netbox/dcim/forms/model_forms.py:197 netbox/dcim/forms/model_forms.py:259 -#: netbox/dcim/forms/model_forms.py:575 netbox/dcim/forms/model_forms.py:844 +#: netbox/dcim/forms/model_forms.py:223 netbox/dcim/forms/model_forms.py:285 +#: netbox/dcim/forms/model_forms.py:601 netbox/dcim/forms/model_forms.py:870 #: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:30 #: netbox/dcim/tables/racks.py:107 netbox/dcim/tables/racks.py:199 #: netbox/extras/filtersets.py:718 netbox/extras/forms/filtersets.py:404 @@ -1162,7 +1056,6 @@ msgstr "Interfejs" #: netbox/ipam/forms/filtersets.py:481 netbox/ipam/forms/filtersets.py:549 #: netbox/templates/dcim/device_edit.html:32 #: netbox/templates/dcim/inc/cable_termination.html:12 -#: netbox/templates/dcim/powerpanel.html:26 #: netbox/virtualization/forms/filtersets.py:87 #: netbox/virtualization/forms/filtersets.py:113 #: netbox/wireless/forms/filtersets.py:99 @@ -1273,7 +1166,7 @@ msgstr "Kontakty" #: netbox/dcim/tables/devices.py:147 netbox/dcim/tables/sites.py:65 #: netbox/extras/filtersets.py:685 netbox/ipam/forms/bulk_edit.py:404 #: netbox/ipam/forms/filtersets.py:241 netbox/ipam/forms/filtersets.py:466 -#: netbox/ipam/forms/filtersets.py:559 netbox/templates/ipam/vlan.html:16 +#: netbox/ipam/forms/filtersets.py:559 netbox/ipam/ui/panels.py:195 #: netbox/virtualization/forms/filtersets.py:67 #: netbox/virtualization/forms/filtersets.py:147 #: netbox/virtualization/forms/model_forms.py:86 @@ -1305,8 +1198,6 @@ msgstr "Grupa placówek" #: netbox/circuits/tables/providers.py:61 #: netbox/circuits/tables/virtual_circuits.py:55 #: netbox/circuits/tables/virtual_circuits.py:99 -#: netbox/templates/circuits/circuit.html:22 -#: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Konto" @@ -1317,9 +1208,7 @@ msgstr "Strona terminowa" #: netbox/circuits/forms/filtersets.py:296 netbox/dcim/forms/bulk_edit.py:1540 #: netbox/extras/forms/model_forms.py:706 netbox/ipam/forms/filtersets.py:154 #: netbox/ipam/forms/filtersets.py:642 netbox/ipam/forms/model_forms.py:329 -#: netbox/templates/dcim/macaddress.html:25 -#: netbox/templates/extras/configcontext.html:36 -#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/ipam/ui/panels.py:121 netbox/templates/extras/configcontext.html:36 #: netbox/templates/ipam/vlan_edit.html:42 #: netbox/tenancy/forms/filtersets.py:116 #: netbox/users/forms/model_forms.py:375 @@ -1327,18 +1216,16 @@ msgid "Assignment" msgstr "Zlecenie" #: netbox/circuits/forms/filtersets.py:311 -#: netbox/circuits/forms/model_forms.py:250 +#: netbox/circuits/forms/model_forms.py:279 #: netbox/circuits/tables/circuits.py:187 netbox/dcim/forms/bulk_edit.py:118 #: netbox/dcim/forms/bulk_import.py:115 netbox/dcim/forms/model_forms.py:135 #: netbox/dcim/tables/sites.py:69 netbox/extras/forms/filtersets.py:600 #: netbox/ipam/filtersets.py:1034 netbox/ipam/forms/bulk_edit.py:423 #: netbox/ipam/forms/bulk_import.py:515 netbox/ipam/forms/model_forms.py:561 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/vlans.py:94 -#: netbox/templates/circuits/circuitgroupassignment.html:22 -#: netbox/templates/dcim/interface.html:359 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:8 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 #: netbox/templates/ipam/panels/fhrp_groups.html:9 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/tenant.html:20 #: netbox/tenancy/forms/bulk_edit.py:44 netbox/tenancy/forms/bulk_import.py:46 #: netbox/tenancy/forms/filtersets.py:63 #: netbox/tenancy/forms/filtersets.py:126 @@ -1364,23 +1251,38 @@ msgstr "Zlecenie" msgid "Group" msgstr "Grupa" -#: netbox/circuits/forms/model_forms.py:237 -#: netbox/templates/circuits/circuitgroup.html:25 +#: netbox/circuits/forms/model_forms.py:53 +#: netbox/dcim/forms/model_forms.py:147 +msgid "Add ASNs" +msgstr "Dodaj ASN" + +#: netbox/circuits/forms/model_forms.py:58 +#: netbox/dcim/forms/model_forms.py:152 +msgid "Remove ASNs" +msgstr "Usuń ASN" + +#: netbox/circuits/forms/model_forms.py:79 +#: netbox/dcim/forms/model_forms.py:198 +#, python-brace-format +msgid "{count} ASNs currently assigned" +msgstr "{count} Aktualnie przypisane ASN" + +#: netbox/circuits/forms/model_forms.py:266 msgid "Circuit Group" msgstr "Grupa łączy" -#: netbox/circuits/forms/model_forms.py:257 +#: netbox/circuits/forms/model_forms.py:286 msgid "Circuit type" msgstr "Typ łącza" -#: netbox/circuits/forms/model_forms.py:268 +#: netbox/circuits/forms/model_forms.py:297 msgid "Group Assignment" msgstr "Przydział grupy" #: netbox/circuits/models/base.py:18 netbox/dcim/models/cables.py:81 -#: netbox/dcim/models/device_component_templates.py:353 -#: netbox/dcim/models/device_component_templates.py:588 -#: netbox/dcim/models/device_component_templates.py:661 +#: netbox/dcim/models/device_component_templates.py:343 +#: netbox/dcim/models/device_component_templates.py:578 +#: netbox/dcim/models/device_component_templates.py:651 #: netbox/dcim/models/device_components.py:573 #: netbox/dcim/models/device_components.py:1156 #: netbox/dcim/models/device_components.py:1204 @@ -1417,8 +1319,8 @@ msgstr "Unikalne ID łącza" #: netbox/dcim/models/modules.py:219 netbox/dcim/models/power.py:95 #: netbox/dcim/models/racks.py:301 netbox/dcim/models/racks.py:685 #: netbox/dcim/models/sites.py:163 netbox/dcim/models/sites.py:287 -#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:528 -#: netbox/ipam/models/ip.py:757 netbox/ipam/models/vlans.py:228 +#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:538 +#: netbox/ipam/models/ip.py:767 netbox/ipam/models/vlans.py:228 #: netbox/virtualization/models/clusters.py:70 #: netbox/virtualization/models/virtualmachines.py:80 #: netbox/vpn/models/l2vpn.py:36 netbox/vpn/models/tunnels.py:38 @@ -1538,7 +1440,7 @@ msgstr "zakończenie łącza" msgid "circuit terminations" msgstr "zakończenia łączy" -#: netbox/circuits/models/circuits.py:360 +#: netbox/circuits/models/circuits.py:367 msgid "A circuit termination must attach to a terminating object." msgstr "Zakończenie łącza musi być przypisane do punktu zakończenia." @@ -1642,7 +1544,7 @@ msgid "virtual circuits" msgstr "łącza wirtualne" #: netbox/circuits/models/virtual_circuits.py:135 netbox/ipam/models/ip.py:201 -#: netbox/ipam/models/ip.py:764 netbox/vpn/models/tunnels.py:109 +#: netbox/ipam/models/ip.py:774 netbox/vpn/models/tunnels.py:109 msgid "role" msgstr "roli" @@ -1690,30 +1592,13 @@ msgstr "zakończenia łączy wirtualnych" #: netbox/ipam/tables/vlans.py:33 netbox/ipam/tables/vlans.py:86 #: netbox/ipam/tables/vlans.py:205 netbox/ipam/tables/vrfs.py:26 #: netbox/ipam/tables/vrfs.py:65 netbox/netbox/tables/tables.py:325 -#: netbox/netbox/ui/panels.py:198 netbox/netbox/ui/panels.py:207 -#: netbox/templates/circuits/circuitgroup.html:28 -#: netbox/templates/circuits/circuittype.html:22 -#: netbox/templates/circuits/provideraccount.html:28 -#: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/circuits/virtualcircuittype.html:22 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:17 +#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 #: netbox/templates/core/plugin.html:54 #: netbox/templates/core/rq_worker.html:43 -#: netbox/templates/dcim/consoleport.html:28 -#: netbox/templates/dcim/consoleserverport.html:28 -#: netbox/templates/dcim/devicebay.html:24 -#: netbox/templates/dcim/frontport.html:28 #: netbox/templates/dcim/inc/interface_vlans_table.html:5 #: netbox/templates/dcim/inc/panels/inventory_items.html:18 -#: netbox/templates/dcim/interface.html:38 -#: netbox/templates/dcim/interface.html:240 -#: netbox/templates/dcim/inventoryitem.html:28 -#: netbox/templates/dcim/inventoryitemrole.html:18 -#: netbox/templates/dcim/modulebay.html:30 -#: netbox/templates/dcim/poweroutlet.html:28 -#: netbox/templates/dcim/powerport.html:28 -#: netbox/templates/dcim/rearport.html:28 -#: netbox/templates/dcim/virtualdevicecontext.html:18 +#: netbox/templates/dcim/panels/component_inventory_items.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:64 #: netbox/templates/extras/configcontext.html:13 #: netbox/templates/extras/configcontextprofile.html:13 #: netbox/templates/extras/configtemplate.html:13 @@ -1727,18 +1612,6 @@ msgstr "zakończenia łączy wirtualnych" #: netbox/templates/extras/savedfilter.html:13 #: netbox/templates/extras/tableconfig.html:13 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 -#: netbox/templates/ipam/asnrange.html:15 -#: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 -#: netbox/templates/ipam/role.html:22 -#: netbox/templates/ipam/routetarget.html:13 -#: netbox/templates/ipam/service.html:26 -#: netbox/templates/ipam/servicetemplate.html:15 -#: netbox/templates/ipam/vlan.html:35 netbox/templates/ipam/vlangroup.html:30 -#: netbox/templates/ipam/vlantranslationpolicy.html:14 -#: netbox/templates/tenancy/contact.html:35 -#: netbox/templates/tenancy/contactgroup.html:21 -#: netbox/templates/tenancy/contactrole.html:18 -#: netbox/templates/tenancy/tenantgroup.html:29 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:8 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:8 #: netbox/tenancy/tables/contacts.py:38 netbox/tenancy/tables/contacts.py:53 @@ -1768,17 +1641,13 @@ msgstr "Nazwa" #: netbox/circuits/tables/virtual_circuits.py:27 #: netbox/netbox/navigation/menu.py:278 netbox/netbox/navigation/menu.py:282 #: netbox/netbox/navigation/menu.py:284 -#: netbox/templates/circuits/provider.html:57 -#: netbox/templates/circuits/provideraccount.html:48 -#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Łącza" #: netbox/circuits/tables/circuits.py:53 #: netbox/circuits/tables/virtual_circuits.py:42 -#: netbox/templates/circuits/circuit.html:26 -#: netbox/templates/circuits/virtualcircuit.html:35 -#: netbox/templates/dcim/interface.html:192 +#: netbox/circuits/ui/panels.py:75 netbox/circuits/ui/panels.py:118 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:15 msgid "Circuit ID" msgstr "ID łącza" @@ -1792,13 +1661,11 @@ msgid "Side Z" msgstr "Strona Z" #: netbox/circuits/tables/circuits.py:78 -#: netbox/templates/circuits/circuit.html:65 msgid "Commit Rate" msgstr "Przydzielona przepustowość" #: netbox/circuits/tables/circuits.py:85 netbox/dcim/forms/filtersets.py:1973 -#: netbox/templates/tenancy/contact.html:94 -#: netbox/tenancy/tables/contacts.py:67 +#: netbox/tenancy/tables/contacts.py:67 netbox/tenancy/views.py:416 msgid "Assignments" msgstr "Zadania" @@ -1820,10 +1687,7 @@ msgid "Site Group" msgstr "Grupa placówek" #: netbox/circuits/tables/circuits.py:145 -#: netbox/templates/circuits/providernetwork.html:17 -#: netbox/templates/circuits/virtualcircuit.html:27 -#: netbox/templates/circuits/virtualcircuittermination.html:30 -#: netbox/templates/dcim/interface.html:188 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:11 msgid "Provider Network" msgstr "Sieć dostawcy usług" @@ -1839,8 +1703,7 @@ msgstr "Liczba kont" msgid "ASN Count" msgstr "Ilość ASN" -#: netbox/circuits/tables/virtual_circuits.py:64 -#: netbox/templates/circuits/virtualcircuit.html:87 +#: netbox/circuits/tables/virtual_circuits.py:64 netbox/circuits/views.py:802 #: netbox/vpn/tables/tunnels.py:59 netbox/vpn/views.py:139 #: netbox/vpn/views.py:685 msgid "Terminations" @@ -1869,9 +1732,9 @@ msgstr "Zakończenia" #: netbox/dcim/forms/filtersets.py:1868 netbox/dcim/forms/filtersets.py:1880 #: netbox/dcim/forms/filtersets.py:1895 netbox/dcim/forms/filtersets.py:1937 #: netbox/dcim/forms/filtersets.py:2032 netbox/dcim/forms/filtersets.py:2056 -#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:748 -#: netbox/dcim/forms/model_forms.py:963 netbox/dcim/forms/model_forms.py:1375 -#: netbox/dcim/forms/model_forms.py:1869 netbox/dcim/forms/model_forms.py:1942 +#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:774 +#: netbox/dcim/forms/model_forms.py:989 netbox/dcim/forms/model_forms.py:1401 +#: netbox/dcim/forms/model_forms.py:1895 netbox/dcim/forms/model_forms.py:1968 #: netbox/dcim/forms/object_create.py:207 netbox/dcim/tables/connections.py:23 #: netbox/dcim/tables/connections.py:42 netbox/dcim/tables/connections.py:61 #: netbox/dcim/tables/devices.py:293 netbox/dcim/tables/devices.py:388 @@ -1883,24 +1746,11 @@ msgstr "Zakończenia" #: netbox/dcim/tables/modules.py:82 netbox/extras/forms/filtersets.py:405 #: netbox/ipam/forms/bulk_import.py:309 netbox/ipam/forms/filtersets.py:649 #: netbox/ipam/forms/model_forms.py:325 netbox/ipam/tables/vlans.py:156 -#: netbox/templates/circuits/virtualcircuittermination.html:56 -#: netbox/templates/dcim/consoleport.html:20 -#: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device_edit.html:12 -#: netbox/templates/dcim/devicebay.html:20 -#: netbox/templates/dcim/devicebay.html:48 -#: netbox/templates/dcim/frontport.html:20 -#: netbox/templates/dcim/interface.html:30 -#: netbox/templates/dcim/interface.html:236 -#: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/modulebay.html:20 +#: netbox/templates/dcim/panels/installed_device.html:9 +#: netbox/templates/dcim/panels/interface_connection.html:60 #: netbox/templates/dcim/panels/virtual_chassis_members.html:8 -#: netbox/templates/dcim/poweroutlet.html:20 -#: netbox/templates/dcim/powerport.html:20 -#: netbox/templates/dcim/rearport.html:20 -#: netbox/templates/dcim/virtualchassis.html:55 #: netbox/templates/dcim/virtualchassis_edit.html:63 -#: netbox/templates/dcim/virtualdevicecontext.html:22 #: netbox/templates/wireless/panels/wirelesslink_interface.html:8 #: netbox/virtualization/filtersets.py:160 #: netbox/virtualization/forms/bulk_edit.py:108 @@ -1918,6 +1768,15 @@ msgstr "Zakończenia" msgid "Device" msgstr "Urządzenie" +#: netbox/circuits/ui/panels.py:37 netbox/netbox/navigation/menu.py:301 +msgid "Group Assignments" +msgstr "Przypisania grup" + +#: netbox/circuits/ui/panels.py:46 netbox/ipam/ui/panels.py:36 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Przypisz grupę" + #: netbox/core/api/views.py:51 msgid "This user does not have permission to synchronize this data source." msgstr "Ten użytkownik nie ma uprawnień do synchronizacji tego źródła danych." @@ -1964,14 +1823,14 @@ msgid "Syncing" msgstr "Synchronizacja" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:43 netbox/templates/core/job.html:59 +#: netbox/core/tables/jobs.py:43 msgid "Completed" msgstr "Zakończone" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35 #: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259 -#: netbox/dcim/choices.py:1992 netbox/dcim/choices.py:2082 +#: netbox/dcim/choices.py:2013 netbox/dcim/choices.py:2103 #: netbox/virtualization/choices.py:48 msgid "Failed" msgstr "Nie powiodło się" @@ -1995,7 +1854,6 @@ msgstr "Oczekujące" #: netbox/core/choices.py:55 netbox/core/constants.py:24 #: netbox/core/tables/jobs.py:34 netbox/core/tables/tasks.py:39 -#: netbox/templates/core/job.html:46 msgid "Scheduled" msgstr "Zaplanowane" @@ -2034,10 +1892,9 @@ msgstr "30 dni" #: netbox/core/choices.py:102 netbox/core/tables/jobs.py:31 #: netbox/core/tables/tasks.py:80 netbox/extras/tables/tables.py:436 #: netbox/extras/tables/tables.py:742 -#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision.html:23 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:42 netbox/templates/core/rq_task.html:16 -#: netbox/templates/core/rq_task.html:73 +#: netbox/templates/core/rq_task.html:16 netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 #: netbox/templates/extras/journalentry.html:22 @@ -2059,7 +1916,6 @@ msgid "Finished" msgstr "Zakończono" #: netbox/core/constants.py:22 netbox/core/tables/jobs.py:40 -#: netbox/templates/core/job.html:55 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Rozpoczęto" @@ -2091,13 +1947,12 @@ msgid "Warning" msgstr "Ostrzeżenie" #: netbox/core/constants.py:33 netbox/netbox/tables/columns.py:589 -#: netbox/templates/core/job.html:26 msgid "Error" msgstr "Błąd" #: netbox/core/data_backends.py:46 netbox/core/tables/plugins.py:54 #: netbox/templates/core/plugin.html:88 -#: netbox/templates/dcim/interface.html:291 +#: netbox/templates/dcim/panels/interface_wireless.html:10 msgid "Local" msgstr "Lokalne" @@ -2156,7 +2011,7 @@ msgid "User name" msgstr "Nazwa użytkownika" #: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47 -#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2040 +#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2061 #: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386 #: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712 #: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233 @@ -2167,8 +2022,6 @@ msgstr "Nazwa użytkownika" #: netbox/extras/tables/tables.py:188 netbox/extras/tables/tables.py:319 #: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:520 #: netbox/netbox/preferences.py:46 netbox/netbox/preferences.py:71 -#: netbox/templates/core/datasource.html:42 -#: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 #: netbox/templates/extras/eventrule.html:17 #: netbox/templates/extras/savedfilter.html:25 @@ -2182,7 +2035,7 @@ msgid "Enabled" msgstr "Włączono" #: netbox/core/forms/bulk_edit.py:30 netbox/core/forms/filtersets.py:54 -#: netbox/core/tables/data.py:31 netbox/templates/core/datasource.html:50 +#: netbox/core/tables/data.py:31 netbox/core/ui/panels.py:12 msgid "Sync interval" msgstr "Interwał synchronizacji" @@ -2196,17 +2049,17 @@ msgstr "Interwał synchronizacji" msgid "Parameters" msgstr "Parametry" -#: netbox/core/forms/bulk_edit.py:37 netbox/templates/core/datasource.html:72 +#: netbox/core/forms/bulk_edit.py:37 netbox/core/ui/panels.py:22 msgid "Ignore rules" msgstr "Ignoruj reguły" #: netbox/core/forms/filtersets.py:33 netbox/core/forms/model_forms.py:100 -#: netbox/extras/forms/model_forms.py:280 +#: netbox/core/ui/panels.py:7 netbox/extras/forms/model_forms.py:280 #: netbox/extras/forms/model_forms.py:613 #: netbox/extras/forms/model_forms.py:702 #: netbox/extras/forms/model_forms.py:755 netbox/extras/tables/tables.py:230 #: netbox/extras/tables/tables.py:600 netbox/extras/tables/tables.py:630 -#: netbox/extras/tables/tables.py:672 netbox/templates/core/datasource.html:31 +#: netbox/extras/tables/tables.py:672 #: netbox/templates/core/inc/datafile_panel.html:7 #: netbox/templates/extras/configtemplate.html:37 #: netbox/templates/extras/object_render_config.html:19 @@ -2233,15 +2086,14 @@ msgstr "Utworzenie" #: netbox/extras/forms/filtersets.py:580 netbox/extras/tables/tables.py:283 #: netbox/extras/tables/tables.py:350 netbox/extras/tables/tables.py:376 #: netbox/extras/tables/tables.py:395 netbox/extras/tables/tables.py:427 -#: netbox/extras/tables/tables.py:747 netbox/templates/core/job.html:11 -#: netbox/templates/core/objectchange.html:52 +#: netbox/extras/tables/tables.py:747 #: netbox/templates/extras/tableconfig.html:21 #: netbox/tenancy/tables/contacts.py:84 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Typ obiektu" #: netbox/core/forms/filtersets.py:95 netbox/core/tables/jobs.py:46 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:61 +#: netbox/core/ui/panels.py:65 netbox/templates/core/rq_task.html:61 msgid "Queue" msgstr "Kolejka" @@ -2278,11 +2130,10 @@ msgid "Completed before" msgstr "Zakończone przed" #: netbox/core/forms/filtersets.py:141 netbox/core/forms/filtersets.py:170 -#: netbox/dcim/forms/bulk_edit.py:458 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/model_forms.py:336 netbox/extras/forms/filtersets.py:575 -#: netbox/extras/forms/filtersets.py:595 netbox/extras/tables/tables.py:403 -#: netbox/extras/tables/tables.py:443 -#: netbox/templates/core/objectchange.html:36 +#: netbox/core/ui/panels.py:73 netbox/dcim/forms/bulk_edit.py:458 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:362 +#: netbox/extras/forms/filtersets.py:575 netbox/extras/forms/filtersets.py:595 +#: netbox/extras/tables/tables.py:403 netbox/extras/tables/tables.py:443 #: netbox/templates/extras/savedfilter.html:21 #: netbox/templates/extras/tableconfig.html:29 #: netbox/templates/inc/user_menu.html:31 netbox/users/filtersets.py:135 @@ -2295,7 +2146,6 @@ msgstr "Użytkownik" #: netbox/core/forms/filtersets.py:149 netbox/core/tables/change_logging.py:16 #: netbox/core/tables/jobs.py:72 netbox/extras/tables/tables.py:785 #: netbox/extras/tables/tables.py:840 -#: netbox/templates/core/objectchange.html:32 msgid "Time" msgstr "Czas" @@ -2309,21 +2159,19 @@ msgstr "Wcześniej" #: netbox/core/forms/filtersets.py:163 netbox/core/tables/change_logging.py:30 #: netbox/extras/forms/model_forms.py:490 -#: netbox/templates/core/objectchange.html:46 #: netbox/templates/extras/eventrule.html:71 msgid "Action" msgstr "Działanie" #: netbox/core/forms/model_forms.py:55 netbox/core/tables/data.py:57 -#: netbox/templates/core/datafile.html:21 #: netbox/templates/extras/report/base.html:33 #: netbox/templates/extras/script/base.html:32 msgid "Source" msgstr "Źródło" #: netbox/core/forms/model_forms.py:57 -#: netbox/templates/core/datasource.html:14 -#: netbox/templates/core/datasource.html:20 +#: netbox/templates/core/datasource.html:10 +#: netbox/templates/core/datasource.html:16 #: netbox/utilities/templatetags/buttons.py:156 msgid "Sync" msgstr "Synchronizacja" @@ -2349,7 +2197,7 @@ msgstr "Musisz przesłać plik lub wybrać plik danych do synchronizacji" msgid "Rack Elevations" msgstr "Elewacje szaf" -#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1911 +#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1932 #: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340 #: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144 #: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320 @@ -2494,13 +2342,13 @@ msgid "Config revision #{id}" msgstr "Wersja konfiguracji #{id}" #: netbox/core/models/data.py:45 netbox/dcim/models/cables.py:50 -#: netbox/dcim/models/device_component_templates.py:210 -#: netbox/dcim/models/device_component_templates.py:245 -#: netbox/dcim/models/device_component_templates.py:281 -#: netbox/dcim/models/device_component_templates.py:346 -#: netbox/dcim/models/device_component_templates.py:437 -#: netbox/dcim/models/device_component_templates.py:583 -#: netbox/dcim/models/device_component_templates.py:656 +#: netbox/dcim/models/device_component_templates.py:200 +#: netbox/dcim/models/device_component_templates.py:235 +#: netbox/dcim/models/device_component_templates.py:271 +#: netbox/dcim/models/device_component_templates.py:336 +#: netbox/dcim/models/device_component_templates.py:427 +#: netbox/dcim/models/device_component_templates.py:573 +#: netbox/dcim/models/device_component_templates.py:646 #: netbox/dcim/models/device_components.py:370 #: netbox/dcim/models/device_components.py:397 #: netbox/dcim/models/device_components.py:428 @@ -2514,15 +2362,14 @@ msgstr "Wersja konfiguracji #{id}" msgid "type" msgstr "typ" -#: netbox/core/models/data.py:50 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:183 netbox/extras/tables/tables.py:850 -#: netbox/templates/core/datasource.html:62 -#: netbox/templates/core/plugin.html:66 +#: netbox/core/models/data.py:50 netbox/core/ui/panels.py:17 +#: netbox/extras/choices.py:37 netbox/extras/models/models.py:183 +#: netbox/extras/tables/tables.py:850 netbox/templates/core/plugin.html:66 msgid "URL" msgstr "URL" #: netbox/core/models/data.py:60 -#: netbox/dcim/models/device_component_templates.py:442 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:605 #: netbox/extras/models/models.py:81 netbox/extras/models/models.py:319 #: netbox/extras/models/models.py:507 netbox/extras/models/models.py:586 @@ -2596,7 +2443,7 @@ msgstr "ścieżka" msgid "File path relative to the data source's root" msgstr "Ścieżka pliku względem katalogu głównego źródła danych" -#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:509 +#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:519 msgid "size" msgstr "rozmiar" @@ -2745,27 +2592,24 @@ msgid "Full Name" msgstr "Pełne imię i nazwisko" #: netbox/core/tables/change_logging.py:38 netbox/core/tables/jobs.py:23 -#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:286 -#: netbox/extras/tables/tables.py:379 netbox/extras/tables/tables.py:398 -#: netbox/extras/tables/tables.py:430 netbox/extras/tables/tables.py:514 -#: netbox/extras/tables/tables.py:583 netbox/extras/tables/tables.py:752 -#: netbox/extras/tables/tables.py:793 netbox/extras/tables/tables.py:847 -#: netbox/netbox/tables/tables.py:343 -#: netbox/templates/core/objectchange.html:58 +#: netbox/core/ui/panels.py:83 netbox/extras/choices.py:41 +#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:379 +#: netbox/extras/tables/tables.py:398 netbox/extras/tables/tables.py:430 +#: netbox/extras/tables/tables.py:514 netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:752 netbox/extras/tables/tables.py:793 +#: netbox/extras/tables/tables.py:847 netbox/netbox/tables/tables.py:343 #: netbox/templates/extras/eventrule.html:78 #: netbox/templates/extras/journalentry.html:18 #: netbox/tenancy/tables/contacts.py:87 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "Obiekt" -#: netbox/core/tables/change_logging.py:43 -#: netbox/templates/core/objectchange.html:74 +#: netbox/core/tables/change_logging.py:43 netbox/core/ui/panels.py:89 msgid "Request ID" msgstr "ID żądania" #: netbox/core/tables/change_logging.py:46 netbox/core/tables/jobs.py:79 #: netbox/extras/tables/tables.py:796 netbox/extras/tables/tables.py:853 -#: netbox/templates/core/objectchange.html:68 msgid "Message" msgstr "Wiadomość" @@ -2778,11 +2622,11 @@ msgstr "Jest aktywny" msgid "Last Synced" msgstr "Ostatnia synchronizacja" -#: netbox/core/tables/data.py:37 netbox/templates/core/datasource.html:118 +#: netbox/core/tables/data.py:37 msgid "Files" msgstr "Pliki" -#: netbox/core/tables/data.py:61 netbox/templates/core/datafile.html:25 +#: netbox/core/tables/data.py:61 msgid "Path" msgstr "Ścieżka" @@ -2806,7 +2650,7 @@ msgstr "ID" msgid "Interval" msgstr "Interwał" -#: netbox/core/tables/jobs.py:49 +#: netbox/core/tables/jobs.py:49 netbox/core/views.py:255 msgid "Log Entries" msgstr "Wpisy do dziennika" @@ -2826,7 +2670,7 @@ msgstr "Brak wpisów do dziennika" msgid "Version" msgstr "Wersja" -#: netbox/core/tables/plugins.py:21 netbox/templates/core/datafile.html:32 +#: netbox/core/tables/plugins.py:21 msgid "Last Updated" msgstr "Ostatnia aktualizacja" @@ -2922,7 +2766,61 @@ msgstr "PID" msgid "No workers found" msgstr "Nie znaleziono modułów wykonawczych" -#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:447 +#: netbox/core/ui/panels.py:13 +msgid "Last synced" +msgstr "Ostatnia synchronizacja" + +#: netbox/core/ui/panels.py:29 +msgid "Backend" +msgstr "Backend" + +#: netbox/core/ui/panels.py:33 netbox/extras/tables/tables.py:234 +#: netbox/extras/tables/tables.py:604 netbox/extras/tables/tables.py:634 +#: netbox/extras/tables/tables.py:676 +#: netbox/templates/core/inc/datafile_panel.html:4 +#: netbox/templates/core/inc/datafile_panel.html:17 +#: netbox/templates/extras/configtemplate.html:47 +#: netbox/templates/extras/object_render_config.html:23 +#: netbox/templates/generic/bulk_import.html:35 +msgid "Data File" +msgstr "Plik danych" + +#: netbox/core/ui/panels.py:38 +msgid "SHA256 hash" +msgstr "Skrót SHA256" + +#: netbox/core/ui/panels.py:43 +msgid "Content" +msgstr "Zawartość" + +#: netbox/core/ui/panels.py:47 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 +msgid "Job" +msgstr "Praca" + +#: netbox/core/ui/panels.py:50 netbox/core/ui/panels.py:79 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 +#: netbox/extras/forms/filtersets.py:335 +#: netbox/extras/forms/model_forms.py:338 +#: netbox/extras/forms/model_forms.py:398 +#: netbox/extras/forms/model_forms.py:435 +#: netbox/tenancy/forms/filtersets.py:121 +msgid "Object type" +msgstr "Typ obiektu" + +#: netbox/core/ui/panels.py:56 +msgid "Created by" +msgstr "Stworzony przez" + +#: netbox/core/ui/panels.py:60 +msgid "Scheduling" +msgstr "Planowanie" + +#: netbox/core/ui/panels.py:69 netbox/users/ui/panels.py:53 +msgid "Change" +msgstr "Zmień" + +#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Nie znaleziono zadania {job_id}" @@ -2932,55 +2830,63 @@ msgstr "Nie znaleziono zadania {job_id}" msgid "Job {id} not found." msgstr "Nie znaleziono zadania {id}. " -#: netbox/core/views.py:95 +#: netbox/core/views.py:125 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Zadanie w kolejce #{id} do synchronizacji {datasource}" -#: netbox/core/views.py:199 netbox/templates/extras/htmx/script_result.html:43 +#: netbox/core/views.py:237 netbox/extras/forms/filtersets.py:179 +#: netbox/extras/forms/filtersets.py:380 netbox/extras/forms/filtersets.py:403 +#: netbox/extras/forms/filtersets.py:499 +#: netbox/extras/forms/model_forms.py:696 +#: netbox/templates/extras/eventrule.html:84 +msgid "Data" +msgstr "Dane" + +#: netbox/core/views.py:248 netbox/templates/extras/htmx/script_result.html:43 msgid "Log" msgstr "Dziennik" -#: netbox/core/views.py:383 +#: netbox/core/views.py:467 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Przywrócona wersja konfiguracji #{id}" -#: netbox/core/views.py:486 +#: netbox/core/views.py:570 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Zadanie {id} zostało usunięte." -#: netbox/core/views.py:488 +#: netbox/core/views.py:572 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Błąd usuwania zadania {id}: {error}" -#: netbox/core/views.py:497 +#: netbox/core/views.py:581 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Zadanie {id} zostało ponownie dodane do kolejki." -#: netbox/core/views.py:506 +#: netbox/core/views.py:590 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Zadanie {id} zostało dodane do kolejki." -#: netbox/core/views.py:515 +#: netbox/core/views.py:599 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Zadanie {id} zostało zatrzymane." -#: netbox/core/views.py:517 +#: netbox/core/views.py:601 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Nie udało się zatrzymać zadania {id}" -#: netbox/core/views.py:671 +#: netbox/core/views.py:755 msgid "Plugins catalog could not be loaded" msgstr "Nie można załadować katalogu wtyczek" -#: netbox/core/views.py:707 +#: netbox/core/views.py:791 #, python-brace-format msgid "Plugin {name} not found" msgstr "Nie znaleziono wtyczki {name}" @@ -3003,7 +2909,7 @@ msgstr "Tryb interfejsu nie obsługuje tagowanych VLANów" msgid "Position (U)" msgstr "Pozycja (U)" -#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:47 +#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:49 msgid "Facility ID" msgstr "ID obiektu" @@ -3030,8 +2936,8 @@ msgid "Staging" msgstr "Etap przygotowywaczy" #: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208 -#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1934 -#: netbox/dcim/choices.py:2083 netbox/virtualization/choices.py:23 +#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1955 +#: netbox/dcim/choices.py:2104 netbox/virtualization/choices.py:23 #: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282 msgid "Decommissioning" msgstr "Wycofywanie z użytku" @@ -3097,7 +3003,7 @@ msgstr "Przestarzały" msgid "Millimeters" msgstr "Milimetry(ów)" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1956 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1977 msgid "Inches" msgstr "Cale(i)" @@ -3125,21 +3031,17 @@ msgstr "Nieświeży" #: netbox/dcim/forms/bulk_import.py:1211 netbox/dcim/forms/filtersets.py:265 #: netbox/dcim/forms/filtersets.py:780 netbox/dcim/forms/filtersets.py:796 #: netbox/dcim/forms/model_forms.py:93 netbox/dcim/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:188 netbox/dcim/forms/model_forms.py:514 -#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1709 +#: netbox/dcim/forms/model_forms.py:214 netbox/dcim/forms/model_forms.py:540 +#: netbox/dcim/forms/model_forms.py:561 netbox/dcim/forms/model_forms.py:1252 +#: netbox/dcim/forms/model_forms.py:1735 #: netbox/dcim/forms/object_import.py:177 netbox/dcim/tables/devices.py:702 #: netbox/dcim/tables/devices.py:737 netbox/dcim/tables/devices.py:965 #: netbox/dcim/tables/devices.py:1052 netbox/dcim/tables/devices.py:1205 #: netbox/ipam/forms/bulk_import.py:601 netbox/ipam/forms/model_forms.py:758 #: netbox/ipam/tables/fhrp.py:56 netbox/ipam/tables/ip.py:329 #: netbox/ipam/tables/services.py:42 netbox/netbox/tables/tables.py:329 -#: netbox/netbox/ui/panels.py:206 netbox/templates/dcim/interface.html:113 -#: netbox/templates/ipam/service.html:30 -#: netbox/templates/tenancy/contactgroup.html:29 -#: netbox/templates/tenancy/tenantgroup.html:37 -#: netbox/tenancy/forms/bulk_edit.py:33 netbox/tenancy/forms/bulk_edit.py:62 -#: netbox/tenancy/forms/bulk_import.py:31 +#: netbox/netbox/ui/panels.py:207 netbox/tenancy/forms/bulk_edit.py:33 +#: netbox/tenancy/forms/bulk_edit.py:62 netbox/tenancy/forms/bulk_import.py:31 #: netbox/tenancy/forms/bulk_import.py:64 #: netbox/tenancy/forms/model_forms.py:26 #: netbox/tenancy/forms/model_forms.py:67 @@ -3173,7 +3075,7 @@ msgid "Rear" msgstr "Tył" #: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258 -#: netbox/dcim/choices.py:2081 netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:2102 netbox/virtualization/choices.py:47 msgid "Staged" msgstr "Na etapie przygotowawczym" @@ -3206,7 +3108,7 @@ msgid "Top to bottom" msgstr "Od góry do dołu" #: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280 -#: netbox/dcim/choices.py:1566 +#: netbox/dcim/choices.py:1587 msgid "Passive" msgstr "Pasywny" @@ -3235,8 +3137,8 @@ msgid "Proprietary" msgstr "Własnościowy" #: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853 -#: netbox/dcim/choices.py:1478 netbox/dcim/choices.py:1480 -#: netbox/dcim/choices.py:1716 netbox/dcim/choices.py:1718 +#: netbox/dcim/choices.py:1499 netbox/dcim/choices.py:1501 +#: netbox/dcim/choices.py:1737 netbox/dcim/choices.py:1739 #: netbox/netbox/navigation/menu.py:212 msgid "Other" msgstr "Pozostałe" @@ -3249,348 +3151,350 @@ msgstr "ITA/Międzynarodowy" msgid "Physical" msgstr "Fizyczny" -#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1153 +#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1162 msgid "Virtual" msgstr "Wirtualny" -#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1355 +#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 -#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125 -#: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150 -#: netbox/netbox/navigation/menu.py:154 -#: netbox/templates/dcim/interface.html:285 +#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1151 +#: netbox/dcim/forms/model_forms.py:1615 netbox/dcim/ui/panels.py:546 +#: netbox/netbox/navigation/menu.py:150 netbox/netbox/navigation/menu.py:154 msgid "Wireless" msgstr "Sieci bezprzewodowe" -#: netbox/dcim/choices.py:1151 +#: netbox/dcim/choices.py:1160 msgid "Virtual interfaces" msgstr "Interfejsy wirtualne" -#: netbox/dcim/choices.py:1154 netbox/dcim/forms/bulk_edit.py:1399 -#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107 -#: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:117 +#: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 +#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1133 +#: netbox/dcim/tables/devices.py:741 #: netbox/virtualization/forms/bulk_edit.py:177 #: netbox/virtualization/forms/bulk_import.py:171 #: netbox/virtualization/tables/virtualmachines.py:137 msgid "Bridge" msgstr "Most" -#: netbox/dcim/choices.py:1155 +#: netbox/dcim/choices.py:1164 msgid "Link Aggregation Group (LAG)" msgstr "Grupa agregacji linków (LAG)" -#: netbox/dcim/choices.py:1159 +#: netbox/dcim/choices.py:1168 msgid "FastEthernet (100 Mbps)" msgstr "Szybki Ethernet (100 Mb/s)" -#: netbox/dcim/choices.py:1168 +#: netbox/dcim/choices.py:1177 msgid "GigabitEthernet (1 Gbps)" msgstr "GigabiteEthernet (1 Gb/s)" -#: netbox/dcim/choices.py:1186 +#: netbox/dcim/choices.py:1195 msgid "2.5/5 Gbps Ethernet" msgstr "Ethernet 2,5/5 Gb/s" -#: netbox/dcim/choices.py:1193 +#: netbox/dcim/choices.py:1202 msgid "10 Gbps Ethernet" msgstr "Ethernet 10 Gb/s" -#: netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1218 msgid "25 Gbps Ethernet" msgstr "Ethernet 25 Gb/s" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1228 msgid "40 Gbps Ethernet" msgstr "Ethernet 40 Gb/s" -#: netbox/dcim/choices.py:1230 +#: netbox/dcim/choices.py:1239 msgid "50 Gbps Ethernet" msgstr "Ethernet 50 Gb/s" -#: netbox/dcim/choices.py:1240 +#: netbox/dcim/choices.py:1249 msgid "100 Gbps Ethernet" msgstr "Ethernet 100 Gb/s" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1270 msgid "200 Gbps Ethernet" msgstr "Ethernet 200 Gb/s" -#: netbox/dcim/choices.py:1275 +#: netbox/dcim/choices.py:1284 msgid "400 Gbps Ethernet" msgstr "Ethernet 400 Gb/s" -#: netbox/dcim/choices.py:1293 +#: netbox/dcim/choices.py:1302 msgid "800 Gbps Ethernet" msgstr "Ethernet 800 Gb/s" -#: netbox/dcim/choices.py:1302 +#: netbox/dcim/choices.py:1311 +msgid "1.6 Tbps Ethernet" +msgstr "1.6 Tb/s Ethernet" + +#: netbox/dcim/choices.py:1319 msgid "Pluggable transceivers" msgstr "Wtykowe nadajniki-odbiorniki" -#: netbox/dcim/choices.py:1339 +#: netbox/dcim/choices.py:1359 msgid "Backplane Ethernet" msgstr "Płaszczyzna tylna Ethernet" -#: netbox/dcim/choices.py:1371 +#: netbox/dcim/choices.py:1392 msgid "Cellular" msgstr "Komórkowy" -#: netbox/dcim/choices.py:1423 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/choices.py:1444 netbox/dcim/forms/filtersets.py:425 #: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112 #: netbox/dcim/forms/filtersets.py:1910 -#: netbox/templates/dcim/inventoryitem.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:66 msgid "Serial" msgstr "Numer seryjny" -#: netbox/dcim/choices.py:1438 +#: netbox/dcim/choices.py:1459 msgid "Coaxial" msgstr "koncentryczny" -#: netbox/dcim/choices.py:1459 +#: netbox/dcim/choices.py:1480 msgid "Stacking" msgstr "Łączenie w stos" -#: netbox/dcim/choices.py:1511 +#: netbox/dcim/choices.py:1532 msgid "Half" msgstr "Połowa" -#: netbox/dcim/choices.py:1512 +#: netbox/dcim/choices.py:1533 msgid "Full" msgstr "Pełny" -#: netbox/dcim/choices.py:1513 netbox/netbox/preferences.py:32 +#: netbox/dcim/choices.py:1534 netbox/netbox/preferences.py:32 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Automatyczny" -#: netbox/dcim/choices.py:1525 +#: netbox/dcim/choices.py:1546 msgid "Access" msgstr "Dostępowy (nietagowany)" -#: netbox/dcim/choices.py:1526 netbox/ipam/tables/vlans.py:148 +#: netbox/dcim/choices.py:1547 netbox/ipam/tables/vlans.py:148 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Tagowany" -#: netbox/dcim/choices.py:1527 +#: netbox/dcim/choices.py:1548 msgid "Tagged (All)" msgstr "Tagowane (Wszystkie)" -#: netbox/dcim/choices.py:1528 netbox/templates/ipam/vlan_edit.html:26 +#: netbox/dcim/choices.py:1549 netbox/templates/ipam/vlan_edit.html:26 msgid "Q-in-Q (802.1ad)" msgstr "Q-in-Q (802.1ad)" -#: netbox/dcim/choices.py:1557 +#: netbox/dcim/choices.py:1578 msgid "IEEE Standard" msgstr "Standard IEEE" -#: netbox/dcim/choices.py:1568 +#: netbox/dcim/choices.py:1589 msgid "Passive 24V (2-pair)" msgstr "Pasywny 24V (2 pary)" -#: netbox/dcim/choices.py:1569 +#: netbox/dcim/choices.py:1590 msgid "Passive 24V (4-pair)" msgstr "Pasywny 24V (4-parowy)" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1591 msgid "Passive 48V (2-pair)" msgstr "Pasywny 48V (2 pary)" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1592 msgid "Passive 48V (4-pair)" msgstr "Pasywny 48V (4 pary)" -#: netbox/dcim/choices.py:1644 +#: netbox/dcim/choices.py:1665 msgid "Copper" msgstr "Miedź" -#: netbox/dcim/choices.py:1667 +#: netbox/dcim/choices.py:1688 msgid "Fiber Optic" msgstr "Światłowód" -#: netbox/dcim/choices.py:1703 netbox/dcim/choices.py:1917 +#: netbox/dcim/choices.py:1724 netbox/dcim/choices.py:1938 msgid "USB" msgstr "USB" -#: netbox/dcim/choices.py:1759 +#: netbox/dcim/choices.py:1780 msgid "Single" msgstr "Pojedynczy" -#: netbox/dcim/choices.py:1761 +#: netbox/dcim/choices.py:1782 msgid "1C1P" msgstr "1C1P" -#: netbox/dcim/choices.py:1762 +#: netbox/dcim/choices.py:1783 msgid "1C2P" msgstr "1C2P" -#: netbox/dcim/choices.py:1763 +#: netbox/dcim/choices.py:1784 msgid "1C4P" msgstr "1C4P" -#: netbox/dcim/choices.py:1764 +#: netbox/dcim/choices.py:1785 msgid "1C6P" msgstr "1C6P" -#: netbox/dcim/choices.py:1765 +#: netbox/dcim/choices.py:1786 msgid "1C8P" msgstr "1C8P" -#: netbox/dcim/choices.py:1766 +#: netbox/dcim/choices.py:1787 msgid "1C12P" msgstr "1C12P" -#: netbox/dcim/choices.py:1767 +#: netbox/dcim/choices.py:1788 msgid "1C16P" msgstr "1C16P" -#: netbox/dcim/choices.py:1771 +#: netbox/dcim/choices.py:1792 msgid "Trunk" msgstr "Bagażnik" -#: netbox/dcim/choices.py:1773 +#: netbox/dcim/choices.py:1794 msgid "2C1P trunk" msgstr "Bagażnik 2C1P" -#: netbox/dcim/choices.py:1774 +#: netbox/dcim/choices.py:1795 msgid "2C2P trunk" msgstr "Bagażnik 2C2P" -#: netbox/dcim/choices.py:1775 +#: netbox/dcim/choices.py:1796 msgid "2C4P trunk" msgstr "Bagażnik 2C4P" -#: netbox/dcim/choices.py:1776 +#: netbox/dcim/choices.py:1797 msgid "2C4P trunk (shuffle)" msgstr "Bagażnik 2C4P (shuffle)" -#: netbox/dcim/choices.py:1777 +#: netbox/dcim/choices.py:1798 msgid "2C6P trunk" msgstr "Bagażnik 2C6P" -#: netbox/dcim/choices.py:1778 +#: netbox/dcim/choices.py:1799 msgid "2C8P trunk" msgstr "Bagażnik 2C8P" -#: netbox/dcim/choices.py:1779 +#: netbox/dcim/choices.py:1800 msgid "2C12P trunk" msgstr "Bagażnik 2C12P" -#: netbox/dcim/choices.py:1780 +#: netbox/dcim/choices.py:1801 msgid "4C1P trunk" msgstr "Bagażnik 4C1P" -#: netbox/dcim/choices.py:1781 +#: netbox/dcim/choices.py:1802 msgid "4C2P trunk" msgstr "Bagażnik 4C2P" -#: netbox/dcim/choices.py:1782 +#: netbox/dcim/choices.py:1803 msgid "4C4P trunk" msgstr "Bagażnik 4C4P" -#: netbox/dcim/choices.py:1783 +#: netbox/dcim/choices.py:1804 msgid "4C4P trunk (shuffle)" msgstr "Bagażnik 4C4P (shuffle)" -#: netbox/dcim/choices.py:1784 +#: netbox/dcim/choices.py:1805 msgid "4C6P trunk" msgstr "Bagażnik 4C6P" -#: netbox/dcim/choices.py:1785 +#: netbox/dcim/choices.py:1806 msgid "4C8P trunk" msgstr "Bagażnik 4C8P" -#: netbox/dcim/choices.py:1786 +#: netbox/dcim/choices.py:1807 msgid "8C4P trunk" msgstr "Bagażnik 8C4P" -#: netbox/dcim/choices.py:1790 +#: netbox/dcim/choices.py:1811 msgid "Breakout" msgstr "Wybicie" -#: netbox/dcim/choices.py:1792 +#: netbox/dcim/choices.py:1813 msgid "1C4P:4C1P breakout" msgstr "Wybicie 1C4P: 4C1P" -#: netbox/dcim/choices.py:1793 +#: netbox/dcim/choices.py:1814 msgid "1C6P:6C1P breakout" msgstr "Wybicie 1C6P: 6C1P" -#: netbox/dcim/choices.py:1794 +#: netbox/dcim/choices.py:1815 msgid "2C4P:8C1P breakout (shuffle)" msgstr "Przebicie 2C4P: 8C1P (mieszanie)" -#: netbox/dcim/choices.py:1852 +#: netbox/dcim/choices.py:1873 msgid "Copper - Twisted Pair (UTP/STP)" msgstr "Miedź - skręcona para (UTP/STP)" -#: netbox/dcim/choices.py:1866 +#: netbox/dcim/choices.py:1887 msgid "Copper - Twinax (DAC)" msgstr "Miedź - Twinax (DAC)" -#: netbox/dcim/choices.py:1873 +#: netbox/dcim/choices.py:1894 msgid "Copper - Coaxial" msgstr "Miedź - koncentryczna" -#: netbox/dcim/choices.py:1888 +#: netbox/dcim/choices.py:1909 msgid "Fiber - Multimode" msgstr "Światłowód - wielomodowy" -#: netbox/dcim/choices.py:1899 +#: netbox/dcim/choices.py:1920 msgid "Fiber - Single-mode" msgstr "Światłowód - jednomodowy" -#: netbox/dcim/choices.py:1907 +#: netbox/dcim/choices.py:1928 msgid "Fiber - Other" msgstr "Włókno - Inne" -#: netbox/dcim/choices.py:1932 netbox/dcim/forms/filtersets.py:1402 +#: netbox/dcim/choices.py:1953 netbox/dcim/forms/filtersets.py:1402 msgid "Connected" msgstr "Połączony" -#: netbox/dcim/choices.py:1951 netbox/netbox/choices.py:177 +#: netbox/dcim/choices.py:1972 netbox/netbox/choices.py:177 msgid "Kilometers" msgstr "Kilometry" -#: netbox/dcim/choices.py:1952 netbox/netbox/choices.py:178 +#: netbox/dcim/choices.py:1973 netbox/netbox/choices.py:178 #: netbox/templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Metry" -#: netbox/dcim/choices.py:1953 +#: netbox/dcim/choices.py:1974 msgid "Centimeters" msgstr "Centymetry(ów)" -#: netbox/dcim/choices.py:1954 netbox/netbox/choices.py:179 +#: netbox/dcim/choices.py:1975 netbox/netbox/choices.py:179 msgid "Miles" msgstr "Mile" -#: netbox/dcim/choices.py:1955 netbox/netbox/choices.py:180 +#: netbox/dcim/choices.py:1976 netbox/netbox/choices.py:180 #: netbox/templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Stopy" -#: netbox/dcim/choices.py:2003 +#: netbox/dcim/choices.py:2024 msgid "Redundant" msgstr "Nadmiarowy" -#: netbox/dcim/choices.py:2024 +#: netbox/dcim/choices.py:2045 msgid "Single phase" msgstr "Jednofazowy" -#: netbox/dcim/choices.py:2025 +#: netbox/dcim/choices.py:2046 msgid "Three-phase" msgstr "Trójfazowy" -#: netbox/dcim/choices.py:2041 netbox/extras/choices.py:53 +#: netbox/dcim/choices.py:2062 netbox/extras/choices.py:53 #: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70 #: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Niepełnosprawny" -#: netbox/dcim/choices.py:2042 +#: netbox/dcim/choices.py:2063 msgid "Faulty" msgstr "Wadliwy" @@ -3872,8 +3776,9 @@ msgstr "Jest pełnej głębokości" #: netbox/dcim/filtersets.py:1323 netbox/dcim/forms/filtersets.py:920 #: netbox/dcim/forms/filtersets.py:1634 netbox/dcim/forms/filtersets.py:1979 -#: netbox/dcim/forms/model_forms.py:1915 netbox/dcim/models/devices.py:1313 -#: netbox/dcim/models/devices.py:1336 netbox/virtualization/filtersets.py:230 +#: netbox/dcim/forms/model_forms.py:1941 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1336 netbox/dcim/ui/panels.py:366 +#: netbox/dcim/ui/panels.py:504 netbox/virtualization/filtersets.py:230 #: netbox/virtualization/filtersets.py:318 #: netbox/virtualization/forms/filtersets.py:191 #: netbox/virtualization/forms/filtersets.py:245 @@ -3961,7 +3866,6 @@ msgstr "Wirtualny stos (ID)" #: netbox/dcim/forms/object_create.py:329 netbox/dcim/tables/devices.py:215 #: netbox/netbox/navigation/menu.py:82 #: netbox/templates/dcim/device_edit.html:95 -#: netbox/templates/dcim/virtualchassis.html:10 #: netbox/templates/dcim/virtualchassis_edit.html:28 msgid "Virtual Chassis" msgstr "Wirtualny stos" @@ -4021,7 +3925,7 @@ msgstr "Jest przypisany" msgid "Is primary" msgstr "Jest podstawowy" -#: netbox/dcim/filtersets.py:2060 netbox/templates/dcim/interface.html:81 +#: netbox/dcim/filtersets.py:2060 #: netbox/virtualization/forms/model_forms.py:386 #: netbox/virtualization/ui/panels.py:62 msgid "802.1Q Mode" @@ -4038,27 +3942,25 @@ msgstr "Przypisany VID" #: netbox/dcim/filtersets.py:2074 netbox/dcim/forms/bulk_edit.py:1512 #: netbox/dcim/forms/bulk_import.py:1034 netbox/dcim/forms/filtersets.py:1687 -#: netbox/dcim/forms/model_forms.py:1555 +#: netbox/dcim/forms/model_forms.py:1581 #: netbox/dcim/models/device_components.py:867 -#: netbox/dcim/tables/devices.py:667 netbox/ipam/filtersets.py:360 -#: netbox/ipam/filtersets.py:372 netbox/ipam/filtersets.py:511 -#: netbox/ipam/filtersets.py:618 netbox/ipam/filtersets.py:630 -#: netbox/ipam/forms/bulk_edit.py:190 netbox/ipam/forms/bulk_edit.py:240 -#: netbox/ipam/forms/bulk_edit.py:281 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:248 netbox/ipam/forms/bulk_import.py:284 -#: netbox/ipam/forms/filtersets.py:70 netbox/ipam/forms/filtersets.py:194 -#: netbox/ipam/forms/filtersets.py:348 netbox/ipam/forms/model_forms.py:68 -#: netbox/ipam/forms/model_forms.py:203 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:303 netbox/ipam/forms/model_forms.py:466 -#: netbox/ipam/forms/model_forms.py:480 netbox/ipam/forms/model_forms.py:494 -#: netbox/ipam/models/ip.py:224 netbox/ipam/models/ip.py:518 -#: netbox/ipam/models/ip.py:747 netbox/ipam/models/vrfs.py:61 -#: netbox/ipam/tables/ip.py:187 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:311 netbox/ipam/tables/ip.py:413 -#: netbox/templates/dcim/interface.html:170 -#: netbox/templates/ipam/ipaddress.html:18 -#: netbox/templates/ipam/iprange.html:47 netbox/templates/ipam/prefix.html:19 -#: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 +#: netbox/dcim/tables/devices.py:667 netbox/dcim/ui/panels.py:507 +#: netbox/ipam/filtersets.py:360 netbox/ipam/filtersets.py:372 +#: netbox/ipam/filtersets.py:511 netbox/ipam/filtersets.py:618 +#: netbox/ipam/filtersets.py:630 netbox/ipam/forms/bulk_edit.py:190 +#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:281 +#: netbox/ipam/forms/bulk_import.py:163 netbox/ipam/forms/bulk_import.py:248 +#: netbox/ipam/forms/bulk_import.py:284 netbox/ipam/forms/filtersets.py:70 +#: netbox/ipam/forms/filtersets.py:194 netbox/ipam/forms/filtersets.py:348 +#: netbox/ipam/forms/model_forms.py:68 netbox/ipam/forms/model_forms.py:203 +#: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:303 +#: netbox/ipam/forms/model_forms.py:466 netbox/ipam/forms/model_forms.py:480 +#: netbox/ipam/forms/model_forms.py:494 netbox/ipam/models/ip.py:224 +#: netbox/ipam/models/ip.py:528 netbox/ipam/models/ip.py:757 +#: netbox/ipam/models/vrfs.py:61 netbox/ipam/tables/ip.py:187 +#: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:311 +#: netbox/ipam/tables/ip.py:413 netbox/ipam/ui/panels.py:102 +#: netbox/ipam/ui/panels.py:111 netbox/ipam/ui/panels.py:139 #: netbox/virtualization/forms/bulk_edit.py:226 #: netbox/virtualization/forms/bulk_import.py:218 #: netbox/virtualization/forms/filtersets.py:250 @@ -4081,9 +3983,9 @@ msgid "L2VPN (ID)" msgstr "L2VPN (ID)" #: netbox/dcim/filtersets.py:2092 netbox/dcim/forms/filtersets.py:1692 -#: netbox/dcim/tables/devices.py:607 netbox/ipam/filtersets.py:1087 -#: netbox/ipam/forms/filtersets.py:613 netbox/ipam/tables/vlans.py:116 -#: netbox/templates/dcim/interface.html:104 netbox/templates/ipam/vlan.html:82 +#: netbox/dcim/tables/devices.py:607 netbox/dcim/ui/panels.py:487 +#: netbox/ipam/filtersets.py:1087 netbox/ipam/forms/filtersets.py:613 +#: netbox/ipam/tables/vlans.py:116 netbox/ipam/ui/panels.py:206 #: netbox/virtualization/forms/filtersets.py:255 #: netbox/vpn/forms/bulk_import.py:285 netbox/vpn/forms/filtersets.py:268 #: netbox/vpn/forms/model_forms.py:407 netbox/vpn/forms/model_forms.py:425 @@ -4097,10 +3999,9 @@ msgid "VLAN Translation Policy (ID)" msgstr "Polityka tłumaczenia VLAN (ID)" #: netbox/dcim/filtersets.py:2105 netbox/dcim/forms/filtersets.py:1658 -#: netbox/dcim/forms/model_forms.py:1572 +#: netbox/dcim/forms/model_forms.py:1598 #: netbox/dcim/models/device_components.py:668 #: netbox/ipam/forms/filtersets.py:531 netbox/ipam/forms/model_forms.py:703 -#: netbox/templates/ipam/vlantranslationpolicy.html:11 #: netbox/virtualization/forms/bulk_edit.py:231 #: netbox/virtualization/forms/filtersets.py:265 #: netbox/virtualization/forms/model_forms.py:364 @@ -4143,9 +4044,6 @@ msgid "LAG interface (ID)" msgstr "Interfejs LAG (ID)" #: netbox/dcim/filtersets.py:2185 netbox/dcim/tables/devices.py:1194 -#: netbox/templates/dcim/interface.html:149 -#: netbox/templates/dcim/macaddress.html:11 -#: netbox/templates/dcim/macaddress.html:14 #: netbox/virtualization/ui/panels.py:71 msgid "MAC Address" msgstr "Adres MAC" @@ -4154,15 +4052,14 @@ msgstr "Adres MAC" msgid "Primary MAC address (ID)" msgstr "Podstawowy adres MAC (ID)" -#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1559 +#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1585 #: netbox/virtualization/filtersets.py:331 #: netbox/virtualization/forms/model_forms.py:302 msgid "Primary MAC address" msgstr "Podstawowy adres MAC" #: netbox/dcim/filtersets.py:2225 netbox/dcim/filtersets.py:2237 -#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1895 -#: netbox/templates/dcim/virtualdevicecontext.html:15 +#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1921 msgid "Virtual Device Context" msgstr "Kontekst urządzenia wirtualnego" @@ -4221,6 +4118,7 @@ msgstr "Rozdzielnica zasilająca (ID)" #: netbox/netbox/forms/bulk_import.py:27 netbox/netbox/forms/mixins.py:131 #: netbox/netbox/tables/columns.py:495 #: netbox/templates/circuits/inc/circuit_termination.html:29 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:29 #: netbox/templates/generic/bulk_edit.html:78 #: netbox/templates/inc/panels/tags.html:5 #: netbox/utilities/forms/fields/fields.py:101 @@ -4228,14 +4126,12 @@ msgid "Tags" msgstr "Tagi" #: netbox/dcim/forms/bulk_create.py:116 netbox/dcim/forms/filtersets.py:1842 -#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:595 -#: netbox/dcim/forms/model_forms.py:661 netbox/dcim/forms/object_create.py:155 +#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:621 +#: netbox/dcim/forms/model_forms.py:687 netbox/dcim/forms/object_create.py:155 #: netbox/dcim/forms/object_create.py:256 netbox/dcim/tables/devices.py:169 -#: netbox/templates/dcim/frontport.html:132 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/panels/front_port_mappings.html:9 +#: netbox/templates/dcim/panels/rear_port_mappings.html:9 #: netbox/templates/dcim/panels/virtual_chassis_members.html:9 -#: netbox/templates/dcim/rearport.html:126 -#: netbox/templates/dcim/virtualchassis.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:67 msgid "Position" msgstr "Pozycja" @@ -4266,7 +4162,7 @@ msgid "Contact E-mail" msgstr "E-mail kontaktowy" #: netbox/dcim/forms/bulk_edit.py:152 netbox/dcim/forms/bulk_import.py:138 -#: netbox/dcim/forms/model_forms.py:147 +#: netbox/dcim/forms/model_forms.py:157 msgid "Time zone" msgstr "Strefa czasowa" @@ -4281,17 +4177,16 @@ msgstr "Strefa czasowa" #: netbox/dcim/forms/filtersets.py:546 netbox/dcim/forms/filtersets.py:695 #: netbox/dcim/forms/filtersets.py:801 netbox/dcim/forms/filtersets.py:884 #: netbox/dcim/forms/filtersets.py:1096 netbox/dcim/forms/filtersets.py:1907 -#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:223 -#: netbox/dcim/forms/model_forms.py:354 netbox/dcim/forms/model_forms.py:366 -#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:540 -#: netbox/dcim/forms/model_forms.py:1239 netbox/dcim/forms/model_forms.py:1722 +#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:249 +#: netbox/dcim/forms/model_forms.py:380 netbox/dcim/forms/model_forms.py:392 +#: netbox/dcim/forms/model_forms.py:462 netbox/dcim/forms/model_forms.py:566 +#: netbox/dcim/forms/model_forms.py:1265 netbox/dcim/forms/model_forms.py:1748 #: netbox/dcim/forms/object_import.py:188 netbox/dcim/tables/devices.py:101 #: netbox/dcim/tables/devices.py:176 netbox/dcim/tables/devices.py:1035 #: netbox/dcim/tables/devicetypes.py:87 netbox/dcim/tables/devicetypes.py:322 #: netbox/dcim/tables/modules.py:47 netbox/dcim/tables/modules.py:90 #: netbox/dcim/tables/racks.py:51 netbox/dcim/tables/racks.py:121 -#: netbox/templates/dcim/inventoryitem.html:48 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/panels/installed_module.html:13 #: netbox/templates/dcim/panels/module_type.html:7 msgid "Manufacturer" msgstr "Producent" @@ -4316,7 +4211,7 @@ msgid "Height (U)" msgstr "Wysokość (U)" #: netbox/dcim/forms/bulk_edit.py:244 netbox/dcim/forms/bulk_edit.py:387 -#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:39 +#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:41 msgid "Descending units" msgstr "Jednostki malejące" @@ -4350,10 +4245,10 @@ msgstr "Głębokość montażu" #: netbox/dcim/forms/filtersets.py:362 netbox/dcim/forms/filtersets.py:441 #: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:651 #: netbox/dcim/forms/filtersets.py:683 netbox/dcim/forms/filtersets.py:755 -#: netbox/dcim/forms/model_forms.py:237 netbox/dcim/forms/model_forms.py:318 +#: netbox/dcim/forms/model_forms.py:263 netbox/dcim/forms/model_forms.py:344 #: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:55 #: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:162 -#: netbox/dcim/views.py:891 netbox/dcim/views.py:1019 +#: netbox/dcim/views.py:893 netbox/dcim/views.py:1021 #: netbox/extras/forms/bulk_edit.py:57 netbox/extras/forms/bulk_edit.py:137 #: netbox/extras/forms/bulk_edit.py:191 netbox/extras/forms/bulk_edit.py:219 #: netbox/extras/forms/bulk_edit.py:315 netbox/extras/forms/bulk_edit.py:341 @@ -4364,7 +4259,7 @@ msgstr "Głębokość montażu" #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 #: netbox/templates/extras/tableconfig.html:41 -#: netbox/templates/extras/tag.html:32 netbox/templates/ipam/role.html:30 +#: netbox/templates/extras/tag.html:32 msgid "Weight" msgstr "Waga" @@ -4383,18 +4278,18 @@ msgid "Weight unit" msgstr "Jednostka wagowa" #: netbox/dcim/forms/bulk_edit.py:290 netbox/dcim/forms/filtersets.py:335 -#: netbox/dcim/forms/model_forms.py:233 netbox/dcim/forms/model_forms.py:272 +#: netbox/dcim/forms/model_forms.py:259 netbox/dcim/forms/model_forms.py:298 msgid "Rack Type" msgstr "Typ szafy" #: netbox/dcim/forms/bulk_edit.py:292 netbox/dcim/forms/bulk_edit.py:440 -#: netbox/dcim/forms/model_forms.py:236 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/model_forms.py:262 netbox/dcim/forms/model_forms.py:343 msgid "Outer Dimensions" msgstr "Wymiary zewnętrzne" -#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:238 -#: netbox/dcim/forms/model_forms.py:319 netbox/dcim/ui/panels.py:135 -#: netbox/dcim/views.py:885 netbox/dcim/views.py:1017 +#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:345 netbox/dcim/ui/panels.py:137 +#: netbox/dcim/views.py:887 netbox/dcim/views.py:1019 #: netbox/extras/tables/tables.py:278 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 #: netbox/templates/extras/imageattachment.html:40 @@ -4402,8 +4297,8 @@ msgid "Dimensions" msgstr "Wymiary" #: netbox/dcim/forms/bulk_edit.py:297 netbox/dcim/forms/filtersets.py:336 -#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:240 -#: netbox/dcim/views.py:890 netbox/dcim/views.py:1018 +#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:266 +#: netbox/dcim/views.py:892 netbox/dcim/views.py:1020 #: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "Numeracja" @@ -4414,13 +4309,14 @@ msgid "Rack type" msgstr "Typ szafy" #: netbox/dcim/forms/bulk_edit.py:363 netbox/dcim/forms/bulk_edit.py:708 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/templates/dcim/modulebay.html:70 +#: netbox/dcim/forms/bulk_edit.py:763 msgid "Serial Number" msgstr "Numer seryjny" #: netbox/dcim/forms/bulk_edit.py:366 netbox/dcim/forms/filtersets.py:429 #: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1116 #: netbox/dcim/forms/filtersets.py:1914 +#: netbox/templates/dcim/panels/installed_module.html:25 msgid "Asset tag" msgstr "Etykieta zasobu" @@ -4441,13 +4337,12 @@ msgstr "Przepływ powietrza" #: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/filtersets.py:501 #: netbox/dcim/forms/filtersets.py:874 netbox/dcim/forms/filtersets.py:1086 #: netbox/dcim/forms/filtersets.py:1186 netbox/dcim/forms/filtersets.py:1325 -#: netbox/dcim/forms/model_forms.py:282 netbox/dcim/forms/model_forms.py:326 -#: netbox/dcim/forms/model_forms.py:586 netbox/dcim/forms/model_forms.py:871 +#: netbox/dcim/forms/model_forms.py:308 netbox/dcim/forms/model_forms.py:352 +#: netbox/dcim/forms/model_forms.py:612 netbox/dcim/forms/model_forms.py:897 #: netbox/dcim/forms/object_create.py:303 netbox/dcim/tables/devices.py:165 #: netbox/dcim/tables/power.py:67 netbox/dcim/tables/racks.py:204 #: netbox/ipam/forms/filtersets.py:486 #: netbox/templates/dcim/inc/cable_termination.html:16 -#: netbox/templates/dcim/powerfeed.html:28 #: netbox/templates/dcim/rack/base.html:4 #: netbox/virtualization/forms/model_forms.py:107 msgid "Rack" @@ -4457,14 +4352,14 @@ msgstr "Szafa" #: netbox/dcim/forms/filtersets.py:360 netbox/dcim/forms/filtersets.py:440 #: netbox/dcim/forms/filtersets.py:532 netbox/dcim/forms/filtersets.py:677 #: netbox/dcim/forms/filtersets.py:822 netbox/dcim/forms/filtersets.py:1043 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:787 -#: netbox/dcim/forms/model_forms.py:1790 +#: netbox/dcim/forms/model_forms.py:470 netbox/dcim/forms/model_forms.py:813 +#: netbox/dcim/forms/model_forms.py:1816 #: netbox/templates/dcim/device_edit.html:22 msgid "Hardware" msgstr "Sprzęt" #: netbox/dcim/forms/bulk_edit.py:490 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:397 msgid "Default platform" msgstr "Domyślna platforma" @@ -4481,29 +4376,29 @@ msgstr "Wysokość U" msgid "Exclude from utilization" msgstr "Wyklucz z wykorzystania" -#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:385 -#: netbox/dcim/forms/model_forms.py:1022 netbox/dcim/forms/model_forms.py:1064 -#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1119 -#: netbox/dcim/forms/model_forms.py:1140 netbox/dcim/forms/model_forms.py:1180 -#: netbox/dcim/forms/model_forms.py:1198 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:411 +#: netbox/dcim/forms/model_forms.py:1048 netbox/dcim/forms/model_forms.py:1090 +#: netbox/dcim/forms/model_forms.py:1117 netbox/dcim/forms/model_forms.py:1145 +#: netbox/dcim/forms/model_forms.py:1166 netbox/dcim/forms/model_forms.py:1206 +#: netbox/dcim/forms/model_forms.py:1224 #: netbox/dcim/forms/object_create.py:119 netbox/dcim/tables/devicetypes.py:84 -#: netbox/dcim/ui/panels.py:125 netbox/templates/dcim/devicebay.html:52 +#: netbox/dcim/ui/panels.py:127 msgid "Device Type" msgstr "Typ urządzenia" -#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:412 -#: netbox/dcim/views.py:1590 netbox/extras/forms/model_forms.py:601 +#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:438 +#: netbox/dcim/views.py:1592 netbox/extras/forms/model_forms.py:601 msgid "Schema" msgstr "Schemat" #: netbox/dcim/forms/bulk_edit.py:549 netbox/dcim/forms/bulk_edit.py:556 #: netbox/dcim/forms/bulk_edit.py:787 netbox/dcim/forms/bulk_import.py:460 #: netbox/dcim/forms/bulk_import.py:1459 netbox/dcim/forms/filtersets.py:690 -#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:418 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/tables/modules.py:43 +#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:444 +#: netbox/dcim/forms/model_forms.py:457 netbox/dcim/tables/modules.py:43 #: netbox/extras/forms/filtersets.py:413 #: netbox/extras/forms/model_forms.py:626 netbox/extras/tables/tables.py:627 -#: netbox/templates/account/base.html:7 netbox/templates/dcim/cable.html:23 +#: netbox/templates/account/base.html:7 #: netbox/templates/extras/configcontext.html:21 #: netbox/templates/inc/user_menu.html:38 netbox/vpn/forms/bulk_edit.py:213 #: netbox/vpn/forms/filtersets.py:203 netbox/vpn/forms/model_forms.py:378 @@ -4511,22 +4406,21 @@ msgid "Profile" msgstr "Profil" #: netbox/dcim/forms/bulk_edit.py:588 netbox/dcim/forms/filtersets.py:1379 -#: netbox/dcim/forms/model_forms.py:443 netbox/dcim/forms/model_forms.py:1023 -#: netbox/dcim/forms/model_forms.py:1065 netbox/dcim/forms/model_forms.py:1092 -#: netbox/dcim/forms/model_forms.py:1120 netbox/dcim/forms/model_forms.py:1141 -#: netbox/dcim/forms/model_forms.py:1181 netbox/dcim/forms/model_forms.py:1199 +#: netbox/dcim/forms/model_forms.py:469 netbox/dcim/forms/model_forms.py:1049 +#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1118 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1167 +#: netbox/dcim/forms/model_forms.py:1207 netbox/dcim/forms/model_forms.py:1225 #: netbox/dcim/forms/object_create.py:120 netbox/dcim/tables/modules.py:52 -#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2848 -#: netbox/templates/dcim/modulebay.html:66 +#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2851 msgid "Module Type" msgstr "Typ modułu" -#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:388 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:414 msgid "Chassis" msgstr "Obudowa" #: netbox/dcim/forms/bulk_edit.py:611 netbox/dcim/models/devices.py:390 -#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:142 +#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:144 msgid "VM role" msgstr "Rola maszyny wirtualnej" @@ -4536,8 +4430,8 @@ msgstr "Rola maszyny wirtualnej" #: netbox/dcim/forms/bulk_import.py:561 netbox/dcim/forms/bulk_import.py:686 #: netbox/dcim/forms/bulk_import.py:690 netbox/dcim/forms/filtersets.py:775 #: netbox/dcim/forms/filtersets.py:806 netbox/dcim/forms/filtersets.py:925 -#: netbox/dcim/forms/model_forms.py:509 netbox/dcim/forms/model_forms.py:546 -#: netbox/dcim/forms/model_forms.py:670 +#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:572 +#: netbox/dcim/forms/model_forms.py:696 #: netbox/virtualization/forms/bulk_import.py:145 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/filtersets.py:207 @@ -4547,20 +4441,21 @@ msgstr "Szablon konfiguracji" #: netbox/dcim/forms/bulk_edit.py:657 netbox/dcim/forms/bulk_edit.py:1040 #: netbox/dcim/forms/bulk_import.py:592 netbox/dcim/forms/filtersets.py:133 -#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:616 -#: netbox/dcim/forms/model_forms.py:986 netbox/dcim/forms/model_forms.py:1003 +#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:642 +#: netbox/dcim/forms/model_forms.py:1012 netbox/dcim/forms/model_forms.py:1029 #: netbox/extras/filtersets.py:729 +#: netbox/templates/dcim/panels/installed_device.html:13 msgid "Device type" msgstr "Typ urządzenia" #: netbox/dcim/forms/bulk_edit.py:668 netbox/dcim/forms/bulk_import.py:573 -#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:624 +#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:650 msgid "Device role" msgstr "Rola urządzenia" #: netbox/dcim/forms/bulk_edit.py:691 netbox/dcim/forms/bulk_import.py:598 #: netbox/dcim/forms/filtersets.py:789 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/model_forms.py:557 netbox/dcim/forms/model_forms.py:629 +#: netbox/dcim/forms/model_forms.py:583 netbox/dcim/forms/model_forms.py:655 #: netbox/dcim/tables/devices.py:191 netbox/extras/filtersets.py:745 #: netbox/virtualization/forms/bulk_edit.py:131 #: netbox/virtualization/forms/bulk_import.py:135 @@ -4572,7 +4467,7 @@ msgstr "Platforma" #: netbox/dcim/forms/bulk_edit.py:716 netbox/dcim/forms/bulk_import.py:617 #: netbox/dcim/forms/filtersets.py:830 netbox/dcim/forms/filtersets.py:1000 -#: netbox/dcim/forms/model_forms.py:638 netbox/dcim/tables/devices.py:211 +#: netbox/dcim/forms/model_forms.py:664 netbox/dcim/tables/devices.py:211 #: netbox/extras/filtersets.py:778 netbox/extras/forms/filtersets.py:406 #: netbox/ipam/forms/filtersets.py:457 netbox/ipam/forms/filtersets.py:491 #: netbox/virtualization/filtersets.py:148 @@ -4601,7 +4496,8 @@ msgid "Virtualization" msgstr "Wirtualizacja" #: netbox/dcim/forms/bulk_edit.py:744 netbox/dcim/forms/bulk_import.py:759 -#: netbox/dcim/forms/model_forms.py:765 netbox/dcim/forms/model_forms.py:1011 +#: netbox/dcim/forms/model_forms.py:791 netbox/dcim/forms/model_forms.py:1037 +#: netbox/templates/dcim/panels/installed_module.html:17 msgid "Module type" msgstr "Rodzaj modułu" @@ -4611,25 +4507,15 @@ msgstr "Rodzaj modułu" #: netbox/dcim/forms/bulk_edit.py:1146 netbox/dcim/forms/bulk_edit.py:1173 #: netbox/dcim/forms/bulk_edit.py:1200 netbox/dcim/forms/bulk_edit.py:1218 #: netbox/dcim/forms/bulk_edit.py:1236 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/object_create.py:48 netbox/templates/dcim/cable.html:36 -#: netbox/templates/dcim/consoleport.html:32 -#: netbox/templates/dcim/consoleserverport.html:32 -#: netbox/templates/dcim/devicebay.html:28 -#: netbox/templates/dcim/frontport.html:32 +#: netbox/dcim/forms/object_create.py:48 #: netbox/templates/dcim/inc/panels/inventory_items.html:19 -#: netbox/templates/dcim/interface.html:42 -#: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:34 -#: netbox/templates/dcim/poweroutlet.html:32 -#: netbox/templates/dcim/powerport.html:32 -#: netbox/templates/dcim/rearport.html:32 +#: netbox/templates/dcim/panels/component_inventory_items.html:9 #: netbox/templates/extras/customfield.html:26 #: netbox/templates/generic/bulk_import.html:193 msgid "Label" msgstr "Etykieta" #: netbox/dcim/forms/bulk_edit.py:807 netbox/dcim/forms/filtersets.py:1224 -#: netbox/templates/dcim/cable.html:54 msgid "Length" msgstr "Długość" @@ -4639,34 +4525,29 @@ msgid "Length unit" msgstr "Jednostka długości" #: netbox/dcim/forms/bulk_edit.py:830 -#: netbox/templates/dcim/virtualchassis.html:13 msgid "Domain" msgstr "Domena" #: netbox/dcim/forms/bulk_edit.py:886 netbox/dcim/forms/bulk_import.py:1646 -#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:865 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:891 msgid "Power panel" msgstr "Rozdzielnica zasilająca" #: netbox/dcim/forms/bulk_edit.py:908 netbox/dcim/forms/bulk_import.py:1682 #: netbox/dcim/forms/filtersets.py:1338 -#: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Dostawa" #: netbox/dcim/forms/bulk_edit.py:914 netbox/dcim/forms/bulk_import.py:1687 #: netbox/dcim/forms/filtersets.py:1343 -#: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Faza" #: netbox/dcim/forms/bulk_edit.py:920 netbox/dcim/forms/filtersets.py:1348 -#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Napięcie" #: netbox/dcim/forms/bulk_edit.py:924 netbox/dcim/forms/filtersets.py:1352 -#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Natężenie prądu" @@ -4679,7 +4560,7 @@ msgid "Maximum draw" msgstr "Maksymalne losowanie" #: netbox/dcim/forms/bulk_edit.py:1018 -#: netbox/dcim/models/device_component_templates.py:292 +#: netbox/dcim/models/device_component_templates.py:282 #: netbox/dcim/models/device_components.py:440 msgid "Maximum power draw (watts)" msgstr "Maksymalny pobór mocy (waty)" @@ -4689,14 +4570,14 @@ msgid "Allocated draw" msgstr "Przydzielone losowanie" #: netbox/dcim/forms/bulk_edit.py:1024 -#: netbox/dcim/models/device_component_templates.py:299 +#: netbox/dcim/models/device_component_templates.py:289 #: netbox/dcim/models/device_components.py:447 msgid "Allocated power draw (watts)" msgstr "Przydzielony pobór mocy (waty)" #: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_import.py:892 -#: netbox/dcim/forms/model_forms.py:1080 netbox/dcim/forms/model_forms.py:1445 -#: netbox/dcim/forms/model_forms.py:1774 netbox/dcim/forms/object_import.py:56 +#: netbox/dcim/forms/model_forms.py:1106 netbox/dcim/forms/model_forms.py:1471 +#: netbox/dcim/forms/model_forms.py:1800 netbox/dcim/forms/object_import.py:56 msgid "Power port" msgstr "Port zasilania" @@ -4705,23 +4586,23 @@ msgid "Feed leg" msgstr "Odnoga zasilania" #: netbox/dcim/forms/bulk_edit.py:1112 netbox/dcim/forms/bulk_edit.py:1433 -#: netbox/dcim/forms/filtersets.py:1719 +#: netbox/dcim/forms/filtersets.py:1719 netbox/dcim/ui/panels.py:478 msgid "Management only" msgstr "Tylko do zarządzania" #: netbox/dcim/forms/bulk_edit.py:1122 netbox/dcim/forms/bulk_edit.py:1439 #: netbox/dcim/forms/bulk_import.py:985 netbox/dcim/forms/filtersets.py:1643 #: netbox/dcim/forms/filtersets.py:1728 netbox/dcim/forms/object_import.py:91 -#: netbox/dcim/models/device_component_templates.py:462 -#: netbox/dcim/models/device_components.py:839 +#: netbox/dcim/models/device_component_templates.py:452 +#: netbox/dcim/models/device_components.py:839 netbox/dcim/ui/panels.py:480 msgid "PoE mode" msgstr "Tryb PoE" #: netbox/dcim/forms/bulk_edit.py:1128 netbox/dcim/forms/bulk_edit.py:1445 #: netbox/dcim/forms/bulk_import.py:991 netbox/dcim/forms/filtersets.py:1648 #: netbox/dcim/forms/filtersets.py:1733 netbox/dcim/forms/object_import.py:96 -#: netbox/dcim/models/device_component_templates.py:469 -#: netbox/dcim/models/device_components.py:846 +#: netbox/dcim/models/device_component_templates.py:459 +#: netbox/dcim/models/device_components.py:846 netbox/dcim/ui/panels.py:481 msgid "PoE type" msgstr "Typ PoE" @@ -4730,36 +4611,26 @@ msgstr "Typ PoE" msgid "Wireless role" msgstr "Rola sieci bezprzewodowej" -#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:786 -#: netbox/dcim/forms/model_forms.py:1390 netbox/dcim/tables/devices.py:330 -#: netbox/templates/dcim/consoleport.html:24 -#: netbox/templates/dcim/consoleserverport.html:24 -#: netbox/templates/dcim/frontport.html:24 -#: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/modulebay.html:26 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/poweroutlet.html:24 -#: netbox/templates/dcim/powerport.html:24 -#: netbox/templates/dcim/rearport.html:24 +#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:812 +#: netbox/dcim/forms/model_forms.py:1416 netbox/dcim/tables/devices.py:330 +#: netbox/templates/dcim/panels/installed_module.html:9 msgid "Module" msgstr "Moduł" #: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/tables/devices.py:746 -#: netbox/templates/dcim/interface.html:134 +#: netbox/dcim/ui/panels.py:495 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1472 +#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1498 msgid "Virtual device contexts" msgstr "Konteksty urządzeń wirtualnych" #: netbox/dcim/forms/bulk_edit.py:1424 netbox/dcim/forms/bulk_import.py:819 #: netbox/dcim/forms/bulk_import.py:845 netbox/dcim/forms/filtersets.py:1429 #: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1607 -#: netbox/dcim/tables/devices.py:651 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 -#: netbox/templates/dcim/consoleport.html:40 -#: netbox/templates/dcim/consoleserverport.html:40 +#: netbox/dcim/tables/devices.py:651 netbox/dcim/ui/panels.py:474 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:64 msgid "Speed" msgstr "Prędkość" @@ -4776,7 +4647,7 @@ msgid "Mode" msgstr "Tryb" #: netbox/dcim/forms/bulk_edit.py:1461 netbox/dcim/forms/bulk_import.py:1000 -#: netbox/dcim/forms/model_forms.py:1521 netbox/ipam/forms/bulk_import.py:177 +#: netbox/dcim/forms/model_forms.py:1547 netbox/ipam/forms/bulk_import.py:177 #: netbox/ipam/forms/filtersets.py:582 netbox/ipam/models/vlans.py:93 #: netbox/virtualization/forms/bulk_edit.py:205 #: netbox/virtualization/forms/bulk_import.py:184 @@ -4785,16 +4656,15 @@ msgid "VLAN group" msgstr "Grupa VLAN" #: netbox/dcim/forms/bulk_edit.py:1470 netbox/dcim/forms/bulk_import.py:1007 -#: netbox/dcim/forms/model_forms.py:1527 netbox/dcim/tables/devices.py:616 -#: netbox/templates/dcim/interface.html:91 -#: netbox/virtualization/forms/bulk_edit.py:213 +#: netbox/dcim/forms/model_forms.py:1553 netbox/dcim/tables/devices.py:616 +#: netbox/dcim/ui/panels.py:484 netbox/virtualization/forms/bulk_edit.py:213 #: netbox/virtualization/forms/bulk_import.py:191 #: netbox/virtualization/forms/model_forms.py:331 msgid "Untagged VLAN" msgstr "Nietagowany VLAN" #: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/bulk_import.py:1014 -#: netbox/dcim/forms/model_forms.py:1536 netbox/dcim/tables/devices.py:622 +#: netbox/dcim/forms/model_forms.py:1562 netbox/dcim/tables/devices.py:622 #: netbox/virtualization/forms/bulk_edit.py:221 #: netbox/virtualization/forms/bulk_import.py:198 #: netbox/virtualization/forms/model_forms.py:340 @@ -4810,30 +4680,29 @@ msgid "Remove tagged VLANs" msgstr "Usuń tagowane VLANy" #: netbox/dcim/forms/bulk_edit.py:1502 netbox/dcim/forms/bulk_import.py:1027 -#: netbox/dcim/forms/model_forms.py:1545 +#: netbox/dcim/forms/model_forms.py:1571 #: netbox/virtualization/forms/bulk_import.py:211 #: netbox/virtualization/forms/model_forms.py:349 msgid "Q-in-Q Service VLAN" msgstr "Q-in-Q Service VLAN" -#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1508 +#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1534 #: netbox/wireless/forms/filtersets.py:26 msgid "Wireless LAN group" msgstr "Grupy WLAN" -#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1513 -#: netbox/dcim/tables/devices.py:660 netbox/netbox/navigation/menu.py:156 -#: netbox/templates/dcim/interface.html:355 +#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1539 +#: netbox/dcim/tables/devices.py:660 netbox/dcim/ui/panels.py:561 +#: netbox/netbox/navigation/menu.py:156 #: netbox/wireless/tables/wirelesslan.py:20 msgid "Wireless LANs" msgstr "Sieci WLAN" #: netbox/dcim/forms/bulk_edit.py:1531 netbox/dcim/forms/filtersets.py:1574 -#: netbox/dcim/forms/model_forms.py:1579 netbox/ipam/forms/bulk_edit.py:227 -#: netbox/ipam/forms/bulk_edit.py:313 netbox/ipam/forms/filtersets.py:191 -#: netbox/netbox/navigation/menu.py:112 -#: netbox/templates/dcim/interface.html:146 -#: netbox/templates/ipam/prefix.html:91 +#: netbox/dcim/forms/model_forms.py:1605 netbox/dcim/ui/panels.py:499 +#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:313 +#: netbox/ipam/forms/filtersets.py:191 netbox/netbox/navigation/menu.py:112 +#: netbox/templates/ipam/panels/prefix_addressing.html:4 #: netbox/virtualization/forms/filtersets.py:218 #: netbox/virtualization/forms/model_forms.py:369 #: netbox/virtualization/ui/panels.py:68 @@ -4841,26 +4710,25 @@ msgid "Addressing" msgstr "Adresowanie" #: netbox/dcim/forms/bulk_edit.py:1532 netbox/dcim/forms/filtersets.py:821 -#: netbox/dcim/forms/model_forms.py:1580 +#: netbox/dcim/forms/model_forms.py:1606 #: netbox/virtualization/forms/model_forms.py:370 msgid "Operation" msgstr "Działanie" #: netbox/dcim/forms/bulk_edit.py:1533 netbox/dcim/forms/filtersets.py:1575 -#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1124 -#: netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1150 +#: netbox/dcim/forms/model_forms.py:1608 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1581 -#: netbox/templates/dcim/interface.html:110 -#: netbox/virtualization/forms/bulk_edit.py:237 +#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1607 +#: netbox/dcim/ui/panels.py:491 netbox/virtualization/forms/bulk_edit.py:237 #: netbox/virtualization/forms/model_forms.py:371 msgid "Related Interfaces" msgstr "Powiązane interfejsy" #: netbox/dcim/forms/bulk_edit.py:1536 netbox/dcim/forms/filtersets.py:1576 -#: netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1611 #: netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/filtersets.py:219 #: netbox/virtualization/forms/model_forms.py:374 @@ -4968,7 +4836,7 @@ msgstr "Witryna nadrzędna" msgid "Rack's location (if any)" msgstr "Lokalizacja szafy (jeśli określona)" -#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:331 +#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:357 #: netbox/dcim/tables/racks.py:209 #: netbox/templates/dcim/rackreservation.html:7 msgid "Units" @@ -5049,7 +4917,7 @@ msgid "Assigned platform" msgstr "Przydzielona platforma" #: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/bulk_import.py:614 -#: netbox/dcim/forms/model_forms.py:651 +#: netbox/dcim/forms/model_forms.py:677 msgid "Virtual chassis" msgstr "Wirtualne podwozie" @@ -5065,7 +4933,7 @@ msgstr "Przypisana lokalizacja (jeśli istnieje)" msgid "Assigned rack (if any)" msgstr "Przypisana szafa (jeśli określona)" -#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:634 msgid "Face" msgstr "Twarz" @@ -5091,7 +4959,7 @@ msgstr "" msgid "The device in which this module is installed" msgstr "Urządzenie, w którym zainstalowany jest ten moduł" -#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:755 +#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:781 msgid "Module bay" msgstr "Wnęka modułu" @@ -5103,7 +4971,7 @@ msgstr "Wnęka modułu, w której ten moduł jest zainstalowany" msgid "The type of module" msgstr "Rodzaj modułu" -#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:773 +#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:799 msgid "Replicate components" msgstr "Replikacja komponentów" @@ -5115,11 +4983,11 @@ msgstr "" "Automatyczne wypełnianie komponentów powiązanych z tym typem modułu " "(domyślnie włączone)" -#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:779 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:805 msgid "Adopt components" msgstr "Zastosuj komponenty" -#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:782 +#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:808 msgid "Adopt already existing components" msgstr "Zastosuj już istniejące komponenty" @@ -5144,13 +5012,13 @@ msgstr "Lokalny port zasilania zasilający to gniazdko" msgid "Electrical phase (for three-phase circuits)" msgstr "Faza elektryczna (dla obwodów trójfazowych)" -#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1483 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1509 #: netbox/virtualization/forms/bulk_import.py:168 #: netbox/virtualization/forms/model_forms.py:310 msgid "Parent interface" msgstr "Interfejs nadrzędny" -#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1491 +#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1517 #: netbox/virtualization/forms/bulk_import.py:175 #: netbox/virtualization/forms/model_forms.py:318 msgid "Bridged interface" @@ -5383,6 +5251,7 @@ msgid "Side B name" msgstr "Nazwa strony B" #: netbox/dcim/forms/bulk_import.py:1456 +#: netbox/templates/dcim/panels/connection.html:60 #: netbox/wireless/forms/bulk_import.py:133 msgid "Connection status" msgstr "Status połączenia" @@ -5414,11 +5283,9 @@ msgstr "" "{color} nie pasował do żadnej używanej nazwy koloru i był dłuższy niż sześć " "znaków: nieprawidłowy hex." -#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:900 +#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:926 #: netbox/dcim/tables/devices.py:1124 #: netbox/templates/dcim/panels/virtual_chassis_members.html:10 -#: netbox/templates/dcim/virtualchassis.html:17 -#: netbox/templates/dcim/virtualchassis.html:57 msgid "Master" msgstr "Mistrzu" @@ -5446,9 +5313,8 @@ msgstr "Rodzaj zasilania (AC/DC)" msgid "Single or three-phase" msgstr "Pojedynczy lub trójfazowy" -#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1875 -#: netbox/dcim/ui/panels.py:108 -#: netbox/templates/dcim/virtualdevicecontext.html:30 +#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1901 +#: netbox/dcim/ui/panels.py:110 netbox/dcim/ui/panels.py:354 #: netbox/virtualization/ui/panels.py:28 msgid "Primary IPv4" msgstr "Podstawowy IPv4" @@ -5457,9 +5323,8 @@ msgstr "Podstawowy IPv4" msgid "IPv4 address with mask, e.g. 1.2.3.4/24" msgstr "Adres IPv4 z maską, np. 1.2.3.4/24" -#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1884 -#: netbox/dcim/ui/panels.py:113 -#: netbox/templates/dcim/virtualdevicecontext.html:41 +#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1910 +#: netbox/dcim/ui/panels.py:115 netbox/dcim/ui/panels.py:359 #: netbox/virtualization/ui/panels.py:33 msgid "Primary IPv6" msgstr "Podstawowy IPv6" @@ -5469,8 +5334,7 @@ msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64" msgstr "Adres IPv6 z prefiksem, np. 2001:db8::1/64" #: netbox/dcim/forms/common.py:19 netbox/dcim/models/device_components.py:615 -#: netbox/templates/dcim/interface.html:57 -#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/dcim/ui/panels.py:476 netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/ui/panels.py:61 msgid "MTU" msgstr "MTU" @@ -5511,18 +5375,15 @@ msgstr "Nie można adoptować {model} {name} ponieważ już należy do modułu" msgid "A {model} named {name} already exists" msgstr "A {model} o nazwie {name} już istnieje" -#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:853 +#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:879 #: netbox/dcim/tables/power.py:63 #: netbox/templates/dcim/inc/cable_termination.html:40 -#: netbox/templates/dcim/powerfeed.html:24 -#: netbox/templates/dcim/powerpanel.html:19 #: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "Rozdzielnica zasilająca" -#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:880 -#: netbox/templates/dcim/powerfeed.html:21 -#: netbox/templates/dcim/powerport.html:80 +#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:906 +#: netbox/dcim/views.py:3106 msgid "Power Feed" msgstr "Linia zasilająca" @@ -5550,12 +5411,12 @@ msgstr "Liczba stojaków" msgid "Function" msgstr "Funkcja" -#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:341 -#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1164 +#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:367 +#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1166 msgid "Reservation" msgstr "Rezerwacje" -#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:390 +#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:416 #: netbox/netbox/views/generic/feature_views.py:97 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" @@ -5578,7 +5439,7 @@ msgstr "Rola urządzenia podrzędnego" msgid "Module count" msgstr "Liczba modułów" -#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:548 msgid "Device Role" msgstr "Rola urządzenia" @@ -5616,16 +5477,9 @@ msgstr "Zajęty" #: netbox/dcim/forms/filtersets.py:1420 netbox/dcim/forms/filtersets.py:1460 #: netbox/dcim/forms/filtersets.py:1500 netbox/dcim/forms/filtersets.py:1535 #: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/tables/devices.py:381 -#: netbox/dcim/tables/devices.py:682 netbox/ipam/tables/vlans.py:174 +#: netbox/dcim/tables/devices.py:682 netbox/dcim/ui/panels.py:377 +#: netbox/dcim/ui/panels.py:516 netbox/ipam/tables/vlans.py:174 #: netbox/templates/circuits/inc/circuit_termination_fields.html:16 -#: netbox/templates/dcim/consoleport.html:55 -#: netbox/templates/dcim/consoleserverport.html:55 -#: netbox/templates/dcim/frontport.html:66 -#: netbox/templates/dcim/interface.html:215 -#: netbox/templates/dcim/powerfeed.html:110 -#: netbox/templates/dcim/poweroutlet.html:73 -#: netbox/templates/dcim/powerport.html:59 -#: netbox/templates/dcim/rearport.html:66 msgid "Connection" msgstr "Połączenie" @@ -5641,13 +5495,12 @@ msgstr "Typ" msgid "Mgmt only" msgstr "Tylko MGMT" -#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1567 -#: netbox/dcim/models/device_components.py:792 -#: netbox/templates/dcim/interface.html:160 +#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1593 +#: netbox/dcim/models/device_components.py:792 netbox/dcim/ui/panels.py:506 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1653 +#: netbox/dcim/forms/filtersets.py:1653 netbox/dcim/ui/panels.py:482 #: netbox/virtualization/forms/filtersets.py:260 msgid "802.1Q mode" msgstr "Tryb 802.1Q" @@ -5664,18 +5517,17 @@ msgstr "Częstotliwość kanału (MHz)" msgid "Channel width (MHz)" msgstr "Szerokość kanału (MHz)" -#: netbox/dcim/forms/filtersets.py:1680 -#: netbox/templates/dcim/interface.html:96 +#: netbox/dcim/forms/filtersets.py:1680 netbox/dcim/ui/panels.py:485 msgid "Transmit power (dBm)" msgstr "Moc transmisji (dBm)" #: netbox/dcim/forms/filtersets.py:1751 netbox/dcim/forms/filtersets.py:1795 -#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable.html:12 -#: netbox/templates/dcim/cable_trace.html:46 -#: netbox/templates/dcim/frontport.html:74 +#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/htmx/cable_edit.html:53 #: netbox/templates/dcim/inc/connection_endpoints.html:4 -#: netbox/templates/dcim/rearport.html:74 +#: netbox/templates/dcim/panels/connection.html:14 +#: netbox/templates/dcim/panels/connection.html:51 +#: netbox/templates/dcim/panels/interface_connection.html:13 #: netbox/templates/dcim/trace/cable.html:7 msgid "Cable" msgstr "Kabel" @@ -5715,9 +5567,7 @@ msgstr "Rodzaj zakresu" #: netbox/ipam/forms/bulk_edit.py:382 netbox/ipam/forms/filtersets.py:195 #: netbox/ipam/forms/model_forms.py:225 netbox/ipam/forms/model_forms.py:603 #: netbox/ipam/forms/model_forms.py:613 netbox/ipam/tables/ip.py:193 -#: netbox/ipam/tables/vlans.py:40 netbox/templates/ipam/prefix.html:48 -#: netbox/templates/ipam/vlangroup.html:38 -#: netbox/virtualization/forms/bulk_edit.py:74 +#: netbox/ipam/tables/vlans.py:40 netbox/virtualization/forms/bulk_edit.py:74 #: netbox/virtualization/forms/filtersets.py:53 #: netbox/virtualization/forms/model_forms.py:73 #: netbox/virtualization/tables/clusters.py:81 @@ -5740,28 +5590,28 @@ msgstr "Typ zakresu (aplikacja i model)" #: netbox/dcim/forms/mixins.py:126 msgid "Scope name" -msgstr "" +msgstr "Nazwa zakresu" #: netbox/dcim/forms/mixins.py:127 msgid "Name of the assigned scope object (if not using ID)" -msgstr "" +msgstr "Nazwa przypisanego obiektu zakresu (jeśli nie używa identyfikatora)" #: netbox/dcim/forms/mixins.py:139 msgid "scope_name and scope_id are mutually exclusive." -msgstr "" +msgstr "scope_name i scope_id wzajemnie się wykluczają." #: netbox/dcim/forms/mixins.py:143 msgid "scope_type must be specified when using scope_name" -msgstr "" +msgstr "scope_type musi być określony podczas korzystania z nazwa_zakresu" #: netbox/dcim/forms/mixins.py:145 msgid "scope_type must be specified when using scope_id" -msgstr "" +msgstr "scope_type musi być określony podczas używania scope_id" #: netbox/dcim/forms/mixins.py:154 #, python-brace-format msgid "{scope_type} \"{name}\" not found." -msgstr "" +msgstr "{scope_type} „{name}„Nie znaleziono." #: netbox/dcim/forms/mixins.py:162 #, python-brace-format @@ -5769,6 +5619,8 @@ msgid "" "Multiple {scope_type} objects match \"{name}\". Use scope_id to specify the " "intended object." msgstr "" +"Wielokrotne {scope_type} obiekty pasują”{name}„. Użyj scope_id, aby określić" +" zamierzony obiekt." #: netbox/dcim/forms/mixins.py:180 netbox/dcim/tables/devices.py:260 msgid "Rear ports" @@ -5783,30 +5635,30 @@ msgstr "" "Całkowita liczba pozycji przednich portów ({frontport_count}) musi " "odpowiadać wybranej liczbie pozycji tylnych portów ({rearport_count})." -#: netbox/dcim/forms/model_forms.py:158 +#: netbox/dcim/forms/model_forms.py:169 msgid "Contact Info" msgstr "Informacje kontaktowe" -#: netbox/dcim/forms/model_forms.py:211 +#: netbox/dcim/forms/model_forms.py:237 msgid "Rack Role" msgstr "Rola szafy" -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:380 -#: netbox/dcim/forms/model_forms.py:551 +#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:406 +#: netbox/dcim/forms/model_forms.py:577 #: netbox/utilities/forms/fields/fields.py:58 msgid "Slug" msgstr "Uproszczona nazwa" -#: netbox/dcim/forms/model_forms.py:276 +#: netbox/dcim/forms/model_forms.py:302 msgid "Select a pre-defined rack type, or set physical characteristics below." msgstr "" "Wybierz predefiniowany typ szafy lub ustaw parametry fizyczne poniżej." -#: netbox/dcim/forms/model_forms.py:284 +#: netbox/dcim/forms/model_forms.py:310 msgid "Inventory Control" msgstr "Kontrola zapasów" -#: netbox/dcim/forms/model_forms.py:333 +#: netbox/dcim/forms/model_forms.py:359 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -5814,37 +5666,37 @@ msgstr "" "Lista numerycznych identyfikatorów jednostek oddzielonych przecinkami. " "Zakres można określić za pomocą myślnika." -#: netbox/dcim/forms/model_forms.py:414 netbox/extras/forms/model_forms.py:603 +#: netbox/dcim/forms/model_forms.py:440 netbox/extras/forms/model_forms.py:603 msgid "Enter a valid JSON schema to define supported attributes." msgstr "" "Wprowadź prawidłowy schemat JSON, aby zdefiniować obsługiwane atrybuty." -#: netbox/dcim/forms/model_forms.py:445 +#: netbox/dcim/forms/model_forms.py:471 msgid "Profile & Attributes" msgstr "Profil i atrybuty" -#: netbox/dcim/forms/model_forms.py:597 netbox/dcim/models/devices.py:579 +#: netbox/dcim/forms/model_forms.py:623 netbox/dcim/models/devices.py:579 msgid "The lowest-numbered unit occupied by the device" msgstr "Jednostka o najniższej liczbie zajmowana przez urządzenie" -#: netbox/dcim/forms/model_forms.py:662 +#: netbox/dcim/forms/model_forms.py:688 msgid "The position in the virtual chassis this device is identified by" msgstr "" "Pozycja w wirtualnej obudowie tego urządzenia jest identyfikowana przez" -#: netbox/dcim/forms/model_forms.py:667 +#: netbox/dcim/forms/model_forms.py:693 msgid "The priority of the device in the virtual chassis" msgstr "Priorytet urządzenia w wirtualnej obudowie" -#: netbox/dcim/forms/model_forms.py:776 +#: netbox/dcim/forms/model_forms.py:802 msgid "Automatically populate components associated with this module type" msgstr "Automatyczne wypełnianie komponentów powiązanych z tym typem modułu" -#: netbox/dcim/forms/model_forms.py:882 +#: netbox/dcim/forms/model_forms.py:908 msgid "Characteristics" msgstr "Charakterystyka" -#: netbox/dcim/forms/model_forms.py:1038 +#: netbox/dcim/forms/model_forms.py:1064 #, python-brace-format msgid "" "Alphanumeric ranges are supported for bulk creation. Mixed cases and types " @@ -5859,107 +5711,95 @@ msgstr "" "zostanie automatycznie zastąpiony wartością pozycji podczas tworzenia nowego" " modułu." -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "Szablon portu konsoli" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "Szablon portu serwera konsoli" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "Szablon portu przedniego" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "Szablon interfejsu" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "Szablon gniazdka elektrycznego" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "Szablon portu zasilania" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "Szablon tylnego portu" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "Port konsoli" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "Port serwera konsoli" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "Port przedni" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "Tylny port" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "Port zasilania" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "Gniazdo zasilania" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "Przypisywanie komponentów" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "InventoryItem można przypisać tylko do pojedynczego komponentu." -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "Interfejs LAG" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "Filtruj sieci VLAN dostępne do przypisania według grup." -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "Urządzenie dziecięce" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -5967,43 +5807,41 @@ msgstr "" "Urządzenia podrzędne muszą być najpierw utworzone i przypisane do terenu " "i szafy urządzenia nadrzędnego." -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "Port konsoli" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "Port serwera konsoli" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "Port przedni" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "Gniazdo zasilania" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "Tylny port" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "Przedmiot zapasów" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "Rola pozycji zapasów" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "Interfejs VM" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -6017,7 +5855,7 @@ msgstr "Interfejs VM" msgid "Virtual Machine" msgstr "Maszyna wirtualna" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "Adres MAC można przypisać tylko do jednego obiektu." @@ -6041,9 +5879,9 @@ msgstr "" "oczekiwane." #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "Członkowie" @@ -6241,41 +6079,41 @@ msgid "" msgstr "" "Szablon komponentu musi być skojarzony z typem urządzenia lub typem modułu." -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "szablon portu konsoli" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "szablony portów konsoli" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "szablon portu serwera konsoli" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "szablony portów serwera konsoli" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "maksymalne losowanie" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "przydzielone losowanie" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "szablon portu zasilania" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "szablony portów zasilania" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." @@ -6283,93 +6121,93 @@ msgstr "" "Przydzielone losowanie nie może przekroczyć maksymalnego losowania " "({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "noga karmiąca" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "Faza (dla zasilania trójfazowego)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "szablon gniazdka elektrycznego" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "szablony gniazdek elektrycznych" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Nadrzędny port zasilania ({power_port}) musi należeć do tego samego typu " "urządzenia" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Nadrzędny port zasilania ({power_port}) musi należeć do tego samego typu " "modułu" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "Tylko zarządzanie" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "interfejs mostka" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "rola bezprzewodowa" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "szablon interfejsu" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "szablony interfejsu" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" "Interfejs mostka ({bridge}) musi należeć do tego samego typu urządzenia" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Interfejs mostka ({bridge}) musi należeć do tego samego typu modułu" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "Tylny port ({rear_port}) musi należeć do tego samego typu urządzenia" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "położenia" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "szablon portu przedniego" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "szablony portów przednich" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " @@ -6378,15 +6216,15 @@ msgstr "" "Liczba pozycji nie może być mniejsza niż liczba zmapowanych szablonów " "tylnych portów ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "szablon tylnego portu" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "szablony tylnych portów" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " @@ -6395,35 +6233,35 @@ msgstr "" "Liczba pozycji nie może być mniejsza niż liczba zmapowanych szablonów portów" " przednich ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "położenie" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "" "Identyfikator, do którego należy odwołać się podczas zmiany nazwy " "zainstalowanych komponentów" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "szablon modułu wnęki" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "szablony modułów" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "szablon kieszeni urządzenia" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "szablony kieszeni urządzeń" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -6432,21 +6270,21 @@ msgstr "" "Rola podurządzenia typu urządzenia ({device_type}) musi być ustawiony na " "„rodzic”, aby zezwolić na gniazda urządzeń." -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "ID części" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "Identyfikator części przypisany przez producenta" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "szablon pozycji inwentaryzacji" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "szablony pozycji inwentaryzacji" @@ -6577,10 +6415,10 @@ msgid "tagged VLANs" msgstr "oznaczone sieci VLAN" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "Q-in-Q SVLAN" @@ -7736,11 +7574,11 @@ msgstr "Dodawanie komponentów" msgid "Disconnect Selected" msgstr "Rozłącz zaznaczone" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "Wypowiedzenie A" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "Strona B" @@ -7785,6 +7623,8 @@ msgstr "Nazwa koloru" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "Osiągnięty" @@ -7821,7 +7661,7 @@ msgstr "Wysokość U" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "Adres IP" @@ -7870,16 +7710,14 @@ msgid "Power outlets" msgstr "Gniazdka elektryczne" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7912,18 +7750,17 @@ msgid "Device Site" msgstr "Witryna urządzenia" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Moduł Bay" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "Przedmioty magazynowe" @@ -7947,13 +7784,13 @@ msgstr "Maksymalne wyciąganie (W)" msgid "Allocated draw (W)" msgstr "Przydzielone losowanie (W)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "Adresy IP" @@ -7961,18 +7798,18 @@ msgstr "Adresy IP" msgid "Primary MAC" msgstr "Podstawowy MAC" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "Adresy MAC" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Grupy FHRP" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -7981,7 +7818,6 @@ msgid "Tunnel" msgstr "Tunel" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Tylko zarządzanie" @@ -7989,7 +7825,7 @@ msgstr "Tylko zarządzanie" msgid "VDCs" msgstr "VDC" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "Wirtualny obwód" @@ -7998,7 +7834,7 @@ msgstr "Wirtualny obwód" msgid "Mappings" msgstr "Mapowania" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "Zainstalowane urządzenie" @@ -8022,7 +7858,7 @@ msgstr "Zainstalowany serial" msgid "Installed Asset Tag" msgstr "Zainstalowany znacznik zasobów" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "Zainstalowany moduł" @@ -8039,7 +7875,6 @@ msgid "Module Status" msgstr "Status modułu" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "Komponent" @@ -8057,7 +7892,7 @@ msgstr "Rodzaje szaf" msgid "Device Types" msgstr "Rodzaje urządzeń" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "Rodzaje modułów" @@ -8080,8 +7915,8 @@ msgstr "Pełna głębokość" msgid "Device Count" msgstr "Liczba urządzeń" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -8091,8 +7926,8 @@ msgstr "Liczba urządzeń" msgid "Console Ports" msgstr "Porty konsoli" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -8102,8 +7937,8 @@ msgstr "Porty konsoli" msgid "Console Server Ports" msgstr "Porty serwera konsoli" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -8113,8 +7948,8 @@ msgstr "Porty serwera konsoli" msgid "Power Ports" msgstr "Porty zasilania" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -8124,8 +7959,8 @@ msgstr "Porty zasilania" msgid "Power Outlets" msgstr "Gniazdka elektryczne" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -8134,8 +7969,8 @@ msgstr "Gniazdka elektryczne" msgid "Front Ports" msgstr "Porty przednie" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -8145,16 +7980,16 @@ msgstr "Porty przednie" msgid "Rear Ports" msgstr "Tylne porty" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Wnęsy na urządzenia" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8169,11 +8004,10 @@ msgid "Module Count" msgstr "Liczba modułów" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Zasilanie zasilania" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "Maksymalne wykorzystanie" @@ -8188,7 +8022,7 @@ msgid "Racks" msgstr "Szafy" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Wysokość" @@ -8236,85 +8070,123 @@ msgstr "Grupy VLAN" msgid "Test case must set peer_termination_type" msgstr "Przypadek testowy musi ustawić peer_termination_type" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} milimetrów" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "Numer seryjny" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "Maksymalna waga" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "Zarządzanie" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "Poza pasmem IP" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "Rodzic/dziecko" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "Nazwa modelu" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "Element nadrzędny" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "Identyfikator części" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "Podłączone urządzenie" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "Wykorzystanie (przydzielone)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "Charakterystyka elektryczna" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{} V" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{} A" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "Główny dla interfejsu" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "Wirtualne elementy podwozia" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "Wykorzystanie mocy" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "Tłumaczenie VLAN" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "Odłączony {count} {type}" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "Regiony dziecięce" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "Grupy dzieci" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "Urządzenia poza szafami" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "Lokalizacje podrzędne" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "Rezerwacje" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "Role urządzeń podrzędnych" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "Platformy dziecięce" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "Usługi aplikacyjne" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8322,41 +8194,69 @@ msgstr "Usługi aplikacyjne" msgid "Config Context" msgstr "Kontekst konfiguracji" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "Konfiguracja renderowania" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "Maszyny wirtualne" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "Konteksty urządzeń wirtualnych" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "sieci VLAN" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "Członkowie LGD" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "Tłumaczenie VLAN" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "Interfejsy mostkowe" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "Interfejsy podrzędne" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Zainstalowane urządzenie {device} w zatoce {device_bay}." -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Usunięte urządzenie {device} z zatoki {device_bay}." -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "Dzieci" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "Dodano członka {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "Nie można usunąć urządzenia głównego {device} z wirtualnego podwozia." -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Usunięto {device} z wirtualnego podwozia {chassis}" @@ -8452,10 +8352,9 @@ msgstr "tak" msgid "No" msgstr "Nie" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "Link" @@ -8914,15 +8813,6 @@ msgstr "Jeden lub więcej przypisanych typów obiektów" msgid "Field data type (e.g. text, integer, etc.)" msgstr "Typ danych pola (np. tekst, liczba całkowita itp.)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "Typ obiektu" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "Typ obiektu (dla pól obiektu lub wielu obiektów)" @@ -9026,7 +8916,7 @@ msgstr "Klasyfikacja wpisu" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -9053,15 +8943,14 @@ msgstr "" #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "Grupy" @@ -9087,13 +8976,6 @@ msgstr "Typ pola" msgid "Choices" msgstr "Wybory" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "Dane" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10390,17 +10272,6 @@ msgstr "Rozszerzenie pliku" msgid "As Attachment" msgstr "Jako załącznik" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "Plik danych" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10416,9 +10287,8 @@ msgstr "Obraz" msgid "Filename" msgstr "Nazwa pliku" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "Rozmiar" @@ -10472,6 +10342,7 @@ msgstr "" "Spróbuj ponownie skonfigurować widżet lub usuń go z pulpitu nawigacyjnego." #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10615,7 +10486,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "Zwykły tekst" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "Serwis" @@ -10678,7 +10549,6 @@ msgstr "Eksportowanie L2VPN (identyfikator)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "Prefiks" @@ -10728,7 +10598,6 @@ msgstr "Numer VLAN (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "Adres" @@ -10785,7 +10654,7 @@ msgstr "Grupa FHRP (ID)" msgid "IP address (ID)" msgstr "Adres IP (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "Adres IP" @@ -10852,8 +10721,8 @@ msgstr "Jest prywatny" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "RIR" @@ -10864,15 +10733,13 @@ msgstr "Data dodania" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Grupa VLAN" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10887,7 +10754,7 @@ msgid "Prefix length" msgstr "Długość prefiksu" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "Jest basenem" @@ -10906,23 +10773,21 @@ msgstr "Przypisanie sieci VLAN" msgid "Treat as populated" msgstr "Traktuj jako zaludniony" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "Nazwa DNS" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protokół" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "Identyfikator grupy" @@ -10943,9 +10808,8 @@ msgid "Authentication key" msgstr "klucz uwierzytelniania" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -10974,23 +10838,22 @@ msgstr "Strona & Grupa" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "Polityka" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "Porty" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "Importuj cele trasy" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "Cele trasy eksportu" @@ -11020,7 +10883,6 @@ msgstr "Identyfikator zakresu" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "Grupa FHRP" @@ -11131,7 +10993,7 @@ msgid "Exported by VRF" msgstr "Eksportowane przez VRF" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "Prywatny" @@ -11140,7 +11002,7 @@ msgstr "Prywatny" msgid "Address family" msgstr "Rodzina adresu" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "Zasięg" @@ -11168,18 +11030,10 @@ msgstr "Urządzenie/VM" msgid "Parent Prefix" msgstr "Prefiks nadrzędny" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "Nazwa DNS" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "sieci VLAN" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "Zawiera identyfikator VLAN" @@ -11197,26 +11051,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Q w Q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "IDENTYFIKATOR VLAN" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "Cel trasy" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "agregat" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "Zakres ASN" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "Zakres IP" @@ -11271,8 +11123,7 @@ msgstr "Wirtualny adres IP" msgid "Assignment already exists" msgstr "Przydział już istnieje" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "Identyfikatory sieci VLAN" @@ -11291,7 +11142,6 @@ msgstr "" "z grup VLAN w tym celu." #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "Reguła tłumaczenia VLAN" @@ -11304,7 +11154,6 @@ msgstr "" " określić za pomocą myślnika." #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "Szablon usługi aplikacji" @@ -11481,7 +11330,7 @@ msgstr "jest basenem" msgid "All IP addresses within this prefix are considered usable" msgstr "Wszystkie adresy IP w tym prefiksie są uważane za użyteczne" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "użyty znak" @@ -11493,12 +11342,12 @@ msgstr "prefiksy" msgid "Cannot create prefix with /0 mask." msgstr "Nie można utworzyć prefiksu z maską /0." -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "tabela globalna" @@ -11507,130 +11356,130 @@ msgstr "tabela globalna" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Zduplikowany prefiks znaleziony w {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "adres początkowy" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "Adres IPv4 lub IPv6 (z maską)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "adres końcowy" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "Stan operacyjny tego zakresu" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "Podstawowa funkcja tego zakresu" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "znak zapełniony" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "Zapobiegaj tworzeniu adresów IP w tym zakresie" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "Przestrzeń raportu w pełni wykorzystana" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "Zakres IP" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "Zakresy IP" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "Początkowe i kończące wersje adresu IP muszą być zgodne" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "Początkowe i kończące maski adresów IP muszą być zgodne" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "Adres końcowy musi być większy niż adres początkowy ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Zdefiniowane adresy pokrywają się z zakresem {overlapping_range} w VRF {vrf}" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "Zdefiniowany zakres przekracza maksymalny obsługiwany rozmiar ({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "przemawiać" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "Status operacyjny niniejszego IP" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "Funkcjonalna rola tego IP" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (wewnątrz)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "IP, dla którego ten adres jest „zewnętrznym” adresem IP" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Nazwa hosta lub FQDN (nie rozróżnia wielkości liter)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "Adresy IP" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "Nie można utworzyć adresu IP z maską /0." -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "" "{ip} jest identyfikatorem sieci, który może nie być przypisany do " "interfejsu." -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "" "{ip} jest adresem nadawczym, który nie może być przypisany do interfejsu." -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Zduplikowany adres IP znaleziony w {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "Nie można utworzyć adresu IP {ip} zasięg wewnętrzny {range}." -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -11638,7 +11487,7 @@ msgstr "" "Nie można ponownie przypisać adresu IP, gdy jest on wyznaczony jako główny " "adres IP dla obiektu nadrzędnego" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" @@ -11646,7 +11495,7 @@ msgstr "" "Nie można ponownie przypisać adresu IP, gdy jest on oznaczony jako adres IP " "OOB dla obiektu nadrzędnego" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Tylko adresy IPv6 mogą mieć przypisany status SLAAC" @@ -11845,17 +11694,17 @@ msgid "Added" msgstr "Dodano" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "Prefiksy" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "Wykorzystanie" @@ -11882,7 +11731,7 @@ msgid "Pool" msgstr "Basen" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "Oznaczone Używane" @@ -11890,7 +11739,7 @@ msgstr "Oznaczone Używane" msgid "Start address" msgstr "Adres początkowy" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "Oznaczony zaludniony" @@ -11920,17 +11769,14 @@ msgid "VID" msgstr "VIDEO" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "Zasady" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "Lokalny VID" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "Zdalny VID" @@ -11950,16 +11796,71 @@ msgstr "Importuj cele" msgid "Export Targets" msgstr "Cele eksportu" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "Utwórz grupę" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Przypisz grupę" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "Rozróżniacz trasy" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "Unikalna przestrzeń IP" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "Numer AS" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Rodzina" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "Data dodania" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "Adres początkowy" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "Adres końcowy" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (na zewnątrz)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "Podstawowy adres IP" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "OOB IP" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "Typ uwierzytelniania" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "klucz uwierzytelniania" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Rola Q w Q" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "VLAN klientów" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "Dodawanie sieci VLAN" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -11998,26 +11899,79 @@ msgstr "" "W nazwach DNS dozwolone są tylko znaki alfanumeryczne, gwiazdki, łączniki, " "kropki i podkreślenia" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "Interfejsy urządzeń" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "Interfejsy VM" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "Importowanie plików VRF" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "Eksportowanie plików VRF" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "Importowanie L2VPN" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "Eksportowanie L2VPN" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "Zduplikowane prefiksy" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "Przedrostki nadrzędne" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "Prefiksy podrzędne" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "Zakresy dla dzieci" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "Zduplikowane adresy IP" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "Usługi aplikacyjne" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "Powiązane adresy IP" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "Reguły tłumaczenia sieci VLAN" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "Dodaj regułę" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "Wirtualne adresy IP" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "Dodaj adres IP" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "Dodaj prefiks" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "To pole może nie być puste." @@ -12525,7 +12479,6 @@ msgid "Contact Groups" msgstr "Grupy kontaktowe" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Role kontaktowe" @@ -12545,11 +12498,6 @@ msgstr "Elewacje" msgid "Modules" msgstr "Moduły" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "Konteksty urządzeń wirtualnych" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "Profile typu modułu" @@ -12563,12 +12511,11 @@ msgid "Device Components" msgstr "Komponenty urządzenia" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Role pozycji zapasów" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "Połączenia" @@ -12609,7 +12556,6 @@ msgid "VLAN Translation Policies" msgstr "Zasady tłumaczeń VLAN" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "Zasady tłumaczenia VLAN" @@ -12688,7 +12634,6 @@ msgid "Circuit Terminations" msgstr "Zakończenia obwodów" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "Wirtualne łącza" @@ -12704,18 +12649,11 @@ msgstr "Zakończenia łącza wirtualnego" msgid "Circuit Groups" msgstr "Grupy łączy" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "Przypisania grup" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "Dostawcy" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Konta dostawców" @@ -12811,7 +12749,7 @@ msgid "Journal Entries" msgstr "Wpisy do czasopism" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Dziennik zmian" @@ -12864,6 +12802,7 @@ msgstr "Zadania w tle" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12882,8 +12821,9 @@ msgstr "Klonowanie" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -12895,8 +12835,9 @@ msgstr "Edytuj" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -13171,7 +13112,7 @@ msgstr "Wtyczka Dummy" msgid "Copy" msgstr "Kopiuj" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -13179,11 +13120,19 @@ msgstr "" "Nieprawidłowa opcja dekodowania: {decoding}! Musi być jednym z " "{image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" +"Nieprawidłowa wartość max_items: {max_items}! Musi być dodatnią liczbą " +"całkowitą lub Brak." + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "Współrzędne GPS" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "Powiązane obiekty" @@ -13457,8 +13406,7 @@ msgid "Account Details" msgstr "Szczegóły konta" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "E-mail" @@ -13480,16 +13428,15 @@ msgid "Assigned Groups" msgstr "Przydzielone grupy" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13564,55 +13511,21 @@ msgstr "Kod źródłowy" msgid "Community" msgstr "Społeczność" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "Data instalacji" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "Data wypowiedzenia" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "Zamknięcia obwodu zamiennego" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "Zamień te zakończenia na obwód %(circuit)s?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "Strona A" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Strona Z" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "Przypisz obwód" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "Przypisanie grupy łączy" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "Dodaj obwód" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "Typ łącza" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "Punkt zakończenia" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "Oznaczony jako połączony" @@ -13622,13 +13535,14 @@ msgstr "do" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "Ślad" @@ -13642,37 +13556,30 @@ msgstr "Wyjmij kabel" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "Odłącz" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "Połącz" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "W dalszej części" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "W górę rzeki" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "Połączenie krzyżowe" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "Panel krosowy/port" @@ -13680,39 +13587,10 @@ msgstr "Panel krosowy/port" msgid "Add circuit" msgstr "Dodaj obwód" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "Konto dostawcy" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "Dodaj obwód wirtualny" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "Dodaj zakończenie" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "Zakończenie łącza wirtualnego" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "Dodaj obwód wirtualny" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "Typ łącza wirtualnego" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "Dane konfiguracyjne" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "Komentarz" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13735,31 +13613,11 @@ msgstr "Nowa wartość" msgid "Changed" msgstr "Zmieniono" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "bajty" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "SHA256 Hash" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "Zawartość" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "Ostatnia synchronizacja" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "Backend" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "Brak zdefiniowanych parametrów" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "Elewacje szaf" @@ -13818,71 +13676,11 @@ msgstr "Plik danych powiązany z tym obiektem został usunięty" msgid "Data Synced" msgstr "Zsynchronizowane dane" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "Praca" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "Utworzony przez" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "Planowanie" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "co %(interval)s minut(ę/y)" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "Zmień" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "Różnica" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "Poprzednie" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "Kolejny" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "Utworzony obiekt" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "Obiekt usunięty" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "Brak zmian" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "Wstępna zmiana danych" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Ostrzeżenie: Porównywanie zmian nieatomowych z poprzednim rekordem zmian" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "Dane po zmianie" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Zobacz wszystko %(count)s Zmiany" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -13898,6 +13696,60 @@ msgstr "dni" msgid "Indefinite" msgstr "Nieokreślony" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "Komentarz" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "Dane konfiguracyjne" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "Brak zdefiniowanych parametrów" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "Różnica" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "Poprzednie" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "Kolejny" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "Utworzony obiekt" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "Obiekt usunięty" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "Brak zmian" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "Dane po zmianie" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "Wstępna zmiana danych" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Ostrzeżenie: Porównywanie zmian nieatomowych z poprzednim rekordem zmian" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Zobacz wszystko %(count)s Zmiany" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "Nie zainstalowany" @@ -14185,22 +14037,13 @@ msgstr "Segmenty" msgid "Incomplete" msgstr "Niekompletny" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "Nie jest połączony" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT dla" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "NAT" @@ -14208,7 +14051,7 @@ msgstr "NAT" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "Kopiuj do schowka" @@ -14258,10 +14101,6 @@ msgstr "Usuń" msgid "Local Config Context Data" msgstr "Dane kontekstowe konfiguracji lokalnej" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "Zatoka na urządzenia" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -14289,34 +14128,6 @@ msgstr "Zatoka" msgid "Add Device" msgstr "Dodaj urządzenie" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "Pozycje" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "Oznaczone jako połączone" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "Status połączenia" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "Mapowanie portów" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "Brak zdefiniowanych mapowań" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "Strona" @@ -14342,6 +14153,8 @@ msgid "Path Status" msgstr "Status ścieżki" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "Nieosiągalny" @@ -14350,8 +14163,6 @@ msgid "Path Endpoints" msgstr "Punkty końcowe ścieżki" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "Nie podłączony" @@ -14397,94 +14208,10 @@ msgstr "Elewacja szafy" msgid "Loading..." msgstr "Ładowanie..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "Dodaj interfejs podrzędny" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "Prędkość/Duplex" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "Tryb PoE" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "Typ PoE" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "Interfejsy mostkowe" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "Tłumaczenie VLAN" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "Połączenie bezprzewodowe" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "Kanał" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "Częstotliwość kanału" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "MHz" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "Szerokość kanału" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "Dodaj adres IP" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "Dodaj adres MAC" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "Element nadrzędny" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "Identyfikator części" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "Etykietka zasobów" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "Główny dla interfejsu" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "Dodaj typ urządzenia" @@ -14493,6 +14220,64 @@ msgstr "Dodaj typ urządzenia" msgid "Add Module Type" msgstr "Dodaj typ modułu" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "Status ścieżki" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "Punkty końcowe ścieżki" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "Nie jest połączony" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "Mapowanie portów" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "Brak zdefiniowanych mapowań" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "Połączenie bezprzewodowe" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "Kanał" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "Częstotliwość kanału" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "MHz" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "Szerokość kanału" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "Brak przypisanego profilu" @@ -14512,7 +14297,7 @@ msgstr "Przydzielony" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "VA" @@ -14536,44 +14321,6 @@ msgstr "Tylko obrazy" msgid "Labels only" msgstr "Tylko etykiety" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "Podłączone urządzenie" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "Wykorzystanie (przydzielone" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "Charakterystyka elektryczna" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "A" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "Odnoga zasilania" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "Dodaj źródła zasilania" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "Maksymalne obciążenie" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "Przydzielone obciążenie" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "Dodaj rezerwację" @@ -14613,10 +14360,6 @@ msgstr "Dodaj witrynę" msgid "Attachment" msgstr "Załącznik" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "Dodaj członka" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14668,10 +14411,6 @@ msgstr "" "Czy na pewno chcesz usunąć %(device)s z wirtualnego " "podwozia %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "Identyfikator" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -15008,6 +14747,10 @@ msgstr "" msgid "Journal Entry" msgstr "Wpis do dziennika" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "Utworzony przez" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "Grupa powiadomień" @@ -15503,37 +15246,15 @@ msgstr "Wyloguj się" msgid "Log In" msgstr "Zaloguj się" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Rodzina" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "Data dodania" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "Dodaj prefiks" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "Numer AS" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "Typ uwierzytelniania" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "klucz uwierzytelniania" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "Wirtualne adresy IP" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "Globalny" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15568,15 +15289,6 @@ msgstr "Pokaż dostępne" msgid "Show All" msgstr "Pokaż wszystko" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "Globalny" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (na zewnątrz)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "Przypisanie adresu IP" @@ -15593,51 +15305,43 @@ msgstr "Wyniki wyszukiwania" msgid "Bulk Add IP Addresses" msgstr "Masowe dodawanie adresów IP" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "Adres początkowy" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "Adres końcowy" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "Szczegóły adresowania" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "Oznaczone w pełni wykorzystane" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "Adresy IP dla dzieci" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "Dostępne adresy IP" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "Pierwszy dostępny adres IP" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "Szczegóły prefiksu" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "Adres sieciowy" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "Maska sieciowa" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "Maska wieloznaczna" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "Adres transmisji" @@ -15649,58 +15353,14 @@ msgstr "Dodaj zakres IP" msgid "Hide Depth Indicators" msgstr "Ukryj wskaźniki głębokości" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "Dodaj agregat" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "Importowanie plików VRF" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "Eksportowanie plików VRF" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "Importowanie L2VPN" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "Eksportowanie L2VPN" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Rola Q w Q" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "Dodaj prefiks" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "VLAN klientów" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "Dodawanie sieci VLAN" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "Dodaj VLAN" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "Dodaj regułę" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "Rozróżniacz trasy" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "Unikalna przestrzeń IP" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15770,61 +15430,14 @@ msgstr "" "Kliknij tutaj aby spróbować ponownie załadować " "NetBox." -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "Kontakt" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "Tytuł" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "Telefon" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "Grupa kontaktowa" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "Dodaj grupę kontaktów" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "Rola kontaktowa" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "Dodawanie kontaktu" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "Dodaj najemcę" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "Grupa Najemców" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "Dodaj grupę najemców" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -15935,16 +15548,28 @@ msgstr "Polityka IPsec" msgid "PFS Group" msgstr "Grupa PFS" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "Dodaj zakończenie" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "Dodaj tunel" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "Częstotliwość kanału" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "MHz" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "Szerokość kanału" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "Dodaj bezprzewodową sieć LAN" @@ -15979,6 +15604,20 @@ msgstr "Rola kontaktowa (ID)" msgid "Contact role (slug)" msgstr "Rola kontaktu (identyfikator)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "Kontakt" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "Rola kontaktowa" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "Grupa kontaktowa" @@ -16011,6 +15650,15 @@ msgstr "Dodaj grupy" msgid "Remove groups" msgstr "Usuń grupy" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "Tytuł" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "Telefon" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -16023,6 +15671,17 @@ msgstr "" msgid "Assigned contact" msgstr "Przypisany kontakt" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "Grupa Najemców" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "Grupa kontaktowa" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "grupa kontaktowa" @@ -16124,6 +15783,14 @@ msgstr "Link do kontaktu" msgid "Contact Description" msgstr "Opis kontaktu" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "Dodaj grupę najemców" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "Dodaj grupę kontaktów" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -17418,10 +17085,6 @@ msgstr "Dodano {count} urządzenia do klastrowania {cluster}" msgid "Assigned VLANs" msgstr "Przypisane sieci VLAN" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "Interfejsy podrzędne" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPsec - Transport" diff --git a/netbox/translations/pt/LC_MESSAGES/django.mo b/netbox/translations/pt/LC_MESSAGES/django.mo index 48b7b538e70a5dc22d0a7edb8716224aaf1cc742..f1de0204f5d0e2936c33ae8c2c299c0ab78f2aa4 100644 GIT binary patch delta 76115 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 PkYPcs8u2a&YVG=etl*oZ delta 75505 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 v6;U6;@BaS)Pu8jY diff --git a/netbox/translations/pt/LC_MESSAGES/django.po b/netbox/translations/pt/LC_MESSAGES/django.po index 66985cc0a..dc653e53d 100644 --- a/netbox/translations/pt/LC_MESSAGES/django.po +++ b/netbox/translations/pt/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-14 05:18+0000\n" +"POT-Creation-Date: 2026-03-31 05:31+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2026\n" "Language-Team: Portuguese (https://app.transifex.com/netbox-community/teams/178115/pt/)\n" @@ -49,9 +49,9 @@ msgstr "Sua senha foi alterada com sucesso." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 #: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204 -#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1933 -#: netbox/dcim/choices.py:1991 netbox/dcim/choices.py:2058 -#: netbox/dcim/choices.py:2080 netbox/virtualization/choices.py:20 +#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1954 +#: netbox/dcim/choices.py:2012 netbox/dcim/choices.py:2079 +#: netbox/dcim/choices.py:2101 netbox/virtualization/choices.py:20 #: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18 #: netbox/vpn/choices.py:281 msgid "Planned" @@ -65,8 +65,8 @@ msgstr "Provisionamento" #: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22 #: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155 #: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256 -#: netbox/dcim/choices.py:1990 netbox/dcim/choices.py:2057 -#: netbox/dcim/choices.py:2079 netbox/extras/tables/tables.py:642 +#: netbox/dcim/choices.py:2011 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:2100 netbox/extras/tables/tables.py:642 #: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49 #: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154 #: netbox/templates/extras/configcontext.html:29 @@ -78,8 +78,8 @@ msgid "Active" msgstr "Ativo" #: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202 -#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:1989 -#: netbox/dcim/choices.py:2059 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:2010 +#: netbox/dcim/choices.py:2080 netbox/dcim/choices.py:2099 #: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44 msgid "Offline" msgstr "Offline" @@ -92,8 +92,9 @@ msgstr "Em Desprovisionamento" msgid "Decommissioned" msgstr "Descomissionado" -#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2002 -#: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:153 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2023 +#: netbox/dcim/tables/devices.py:1208 +#: netbox/templates/dcim/interface/attrs/mac_address.html:3 #: netbox/tenancy/choices.py:17 msgid "Primary" msgstr "Primário" @@ -112,7 +113,8 @@ msgid "Inactive" msgstr "Inativo" #: netbox/circuits/choices.py:107 netbox/dcim/tables/devices.py:714 -#: netbox/templates/dcim/interface.html:293 netbox/vpn/choices.py:63 +#: netbox/templates/dcim/panels/interface_wireless.html:12 +#: netbox/vpn/choices.py:63 msgid "Peer" msgstr "Par" @@ -188,9 +190,9 @@ msgstr "Grupo de sites (slug)" #: netbox/dcim/forms/filtersets.py:1172 netbox/dcim/forms/filtersets.py:1268 #: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:2024 #: netbox/dcim/forms/filtersets.py:2048 netbox/dcim/forms/filtersets.py:2072 -#: netbox/dcim/forms/model_forms.py:155 netbox/dcim/forms/model_forms.py:183 -#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:570 -#: netbox/dcim/forms/model_forms.py:839 netbox/dcim/forms/object_create.py:294 +#: netbox/dcim/forms/model_forms.py:166 netbox/dcim/forms/model_forms.py:209 +#: netbox/dcim/forms/model_forms.py:280 netbox/dcim/forms/model_forms.py:596 +#: netbox/dcim/forms/model_forms.py:865 netbox/dcim/forms/object_create.py:294 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:26 #: netbox/dcim/tables/power.py:90 netbox/dcim/tables/racks.py:111 #: netbox/dcim/tables/racks.py:194 netbox/dcim/tables/sites.py:102 @@ -201,7 +203,6 @@ msgstr "Grupo de sites (slug)" #: netbox/ipam/tables/vlans.py:90 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:36 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/ipam/vlan.html:23 #: netbox/templates/ipam/vlan_edit.html:52 #: netbox/virtualization/forms/bulk_edit.py:95 #: netbox/virtualization/forms/bulk_import.py:60 @@ -233,7 +234,6 @@ msgstr "ASN (ID)" #: netbox/circuits/filtersets.py:85 netbox/circuits/forms/filtersets.py:42 #: netbox/ipam/forms/model_forms.py:162 netbox/ipam/models/asns.py:137 #: netbox/ipam/models/asns.py:154 netbox/ipam/tables/asn.py:51 -#: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" @@ -330,14 +330,12 @@ msgstr "Busca" #: netbox/circuits/forms/filtersets.py:232 #: netbox/circuits/forms/filtersets.py:259 #: netbox/circuits/forms/filtersets.py:306 -#: netbox/circuits/forms/model_forms.py:139 -#: netbox/circuits/forms/model_forms.py:162 -#: netbox/circuits/forms/model_forms.py:260 +#: netbox/circuits/forms/model_forms.py:168 +#: netbox/circuits/forms/model_forms.py:191 +#: netbox/circuits/forms/model_forms.py:289 #: netbox/circuits/tables/circuits.py:103 #: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 -#: netbox/templates/circuits/circuit.html:15 -#: netbox/templates/circuits/circuitgroupassignment.html:30 -#: netbox/templates/circuits/circuittermination.html:19 +#: netbox/templates/circuits/panels/circuit_termination.html:7 #: netbox/templates/dcim/inc/cable_termination.html:62 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -395,11 +393,9 @@ msgstr "Tipo de circuito virtual (slug)" #: netbox/circuits/forms/bulk_import.py:248 #: netbox/circuits/forms/filtersets.py:384 #: netbox/circuits/forms/filtersets.py:390 -#: netbox/circuits/forms/model_forms.py:338 -#: netbox/circuits/forms/model_forms.py:353 +#: netbox/circuits/forms/model_forms.py:367 +#: netbox/circuits/forms/model_forms.py:382 #: netbox/circuits/tables/virtual_circuits.py:84 -#: netbox/templates/circuits/virtualcircuit.html:20 -#: netbox/templates/circuits/virtualcircuittermination.html:38 msgid "Virtual circuit" msgstr "Circuito virtual" @@ -412,12 +408,12 @@ msgstr "Interface (ID)" #: netbox/circuits/forms/bulk_edit.py:48 #: netbox/circuits/forms/filtersets.py:68 #: netbox/circuits/forms/model_forms.py:48 -#: netbox/circuits/tables/providers.py:32 netbox/dcim/forms/bulk_edit.py:134 -#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/model_forms.py:142 -#: netbox/dcim/tables/sites.py:74 netbox/ipam/models/asns.py:155 -#: netbox/ipam/tables/asn.py:37 netbox/ipam/views.py:270 -#: netbox/netbox/navigation/menu.py:182 netbox/netbox/navigation/menu.py:185 -#: netbox/templates/circuits/provider.html:23 +#: netbox/circuits/tables/providers.py:32 netbox/circuits/ui/panels.py:92 +#: netbox/dcim/forms/bulk_edit.py:134 netbox/dcim/forms/filtersets.py:225 +#: netbox/dcim/forms/model_forms.py:142 netbox/dcim/tables/sites.py:74 +#: netbox/ipam/models/asns.py:155 netbox/ipam/tables/asn.py:37 +#: netbox/ipam/views.py:365 netbox/netbox/navigation/menu.py:182 +#: netbox/netbox/navigation/menu.py:185 msgid "ASNs" msgstr "ASNs" @@ -437,9 +433,9 @@ msgstr "ASNs" #: netbox/circuits/forms/filtersets.py:349 #: netbox/circuits/forms/filtersets.py:385 #: netbox/circuits/forms/filtersets.py:408 -#: netbox/circuits/forms/model_forms.py:65 -#: netbox/circuits/forms/model_forms.py:80 -#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:90 +#: netbox/circuits/forms/model_forms.py:109 +#: netbox/circuits/forms/model_forms.py:140 #: netbox/circuits/tables/circuits.py:56 #: netbox/circuits/tables/circuits.py:107 #: netbox/circuits/tables/circuits.py:192 @@ -447,22 +443,14 @@ msgstr "ASNs" #: netbox/circuits/tables/providers.py:95 #: netbox/circuits/tables/virtual_circuits.py:46 #: netbox/circuits/tables/virtual_circuits.py:89 -#: netbox/templates/circuits/circuit.html:18 -#: netbox/templates/circuits/circuitgroupassignment.html:26 -#: netbox/templates/circuits/circuittermination.html:25 -#: netbox/templates/circuits/provider.html:20 -#: netbox/templates/circuits/provideraccount.html:20 -#: netbox/templates/circuits/providernetwork.html:20 -#: netbox/templates/circuits/virtualcircuit.html:23 -#: netbox/templates/circuits/virtualcircuittermination.html:26 +#: netbox/templates/circuits/panels/circuit_termination.html:11 #: netbox/templates/dcim/inc/cable_termination.html:58 -#: netbox/templates/dcim/interface.html:184 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:7 msgid "Provider" msgstr "Provedor" #: netbox/circuits/forms/bulk_edit.py:86 -#: netbox/circuits/forms/filtersets.py:106 -#: netbox/templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/filtersets.py:106 netbox/circuits/ui/panels.py:106 msgid "Service ID" msgstr "ID do serviço" @@ -481,12 +469,7 @@ msgstr "ID do serviço" #: netbox/dcim/tables/devicetypes.py:214 netbox/dcim/tables/devicetypes.py:255 #: netbox/dcim/tables/devicetypes.py:274 netbox/dcim/tables/racks.py:30 #: netbox/extras/forms/bulk_edit.py:306 netbox/extras/tables/tables.py:552 -#: netbox/netbox/ui/attrs.py:194 netbox/templates/circuits/circuittype.html:30 -#: netbox/templates/circuits/virtualcircuittype.html:30 -#: netbox/templates/dcim/cable.html:44 netbox/templates/dcim/frontport.html:40 -#: netbox/templates/dcim/inventoryitemrole.html:26 -#: netbox/templates/dcim/poweroutlet.html:48 -#: netbox/templates/dcim/rearport.html:40 netbox/templates/extras/tag.html:26 +#: netbox/netbox/ui/attrs.py:213 netbox/templates/extras/tag.html:26 msgid "Color" msgstr "Cor" @@ -520,27 +503,14 @@ msgstr "Cor" #: netbox/dcim/forms/filtersets.py:1602 netbox/dcim/forms/filtersets.py:1707 #: netbox/dcim/forms/filtersets.py:1756 netbox/dcim/forms/filtersets.py:1775 #: netbox/dcim/forms/filtersets.py:1799 netbox/dcim/forms/filtersets.py:1818 -#: netbox/dcim/forms/model_forms.py:820 netbox/dcim/forms/model_forms.py:826 +#: netbox/dcim/forms/model_forms.py:846 netbox/dcim/forms/model_forms.py:852 #: netbox/dcim/forms/object_import.py:85 #: netbox/dcim/forms/object_import.py:114 #: netbox/dcim/forms/object_import.py:127 netbox/dcim/tables/devices.py:182 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 #: netbox/extras/forms/bulk_import.py:48 netbox/extras/tables/tables.py:510 #: netbox/extras/tables/tables.py:578 netbox/netbox/tables/tables.py:339 -#: netbox/templates/circuits/circuit.html:30 -#: netbox/templates/circuits/virtualcircuit.html:39 -#: netbox/templates/circuits/virtualcircuittermination.html:64 -#: netbox/templates/core/datasource.html:38 -#: netbox/templates/dcim/cable.html:15 -#: netbox/templates/dcim/consoleport.html:36 -#: netbox/templates/dcim/consoleserverport.html:36 -#: netbox/templates/dcim/frontport.html:36 -#: netbox/templates/dcim/interface.html:46 -#: netbox/templates/dcim/interface.html:244 -#: netbox/templates/dcim/powerfeed.html:32 -#: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 -#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/dcim/panels/interface_connection.html:68 #: netbox/templates/extras/eventrule.html:74 #: netbox/templates/wireless/panels/wirelesslink_interface.html:16 #: netbox/virtualization/forms/bulk_edit.py:50 @@ -561,10 +531,8 @@ msgstr "Tipo" #: netbox/circuits/forms/bulk_import.py:213 #: netbox/circuits/forms/filtersets.py:159 #: netbox/circuits/forms/filtersets.py:357 -#: netbox/circuits/forms/model_forms.py:117 -#: netbox/circuits/forms/model_forms.py:326 -#: netbox/templates/circuits/virtualcircuit.html:31 -#: netbox/templates/circuits/virtualcircuittermination.html:34 +#: netbox/circuits/forms/model_forms.py:146 +#: netbox/circuits/forms/model_forms.py:355 msgid "Provider account" msgstr "Conta do provedor" @@ -606,19 +574,10 @@ msgstr "Conta do provedor" #: netbox/ipam/forms/model_forms.py:503 netbox/ipam/tables/ip.py:182 #: netbox/ipam/tables/ip.py:261 netbox/ipam/tables/ip.py:314 #: netbox/ipam/tables/ip.py:389 netbox/ipam/tables/ip.py:416 -#: netbox/ipam/tables/vlans.py:98 netbox/templates/circuits/circuit.html:34 -#: netbox/templates/circuits/virtualcircuit.html:43 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:21 -#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:19 -#: netbox/templates/dcim/cable.html:19 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/powerfeed.html:36 -#: netbox/templates/dcim/poweroutlet.html:40 +#: netbox/ipam/tables/vlans.py:98 netbox/templates/core/rq_task.html:81 +#: netbox/templates/core/system.html:19 #: netbox/templates/extras/inc/script_list_content.html:35 -#: netbox/templates/ipam/ipaddress.html:37 -#: netbox/templates/ipam/iprange.html:61 netbox/templates/ipam/prefix.html:69 -#: netbox/templates/ipam/vlan.html:48 netbox/users/forms/filtersets.py:36 -#: netbox/users/forms/model_forms.py:223 +#: netbox/users/forms/filtersets.py:36 netbox/users/forms/model_forms.py:223 #: netbox/virtualization/forms/bulk_edit.py:60 #: netbox/virtualization/forms/bulk_edit.py:83 #: netbox/virtualization/forms/bulk_import.py:55 @@ -679,21 +638,9 @@ msgstr "Status" #: netbox/ipam/forms/filtersets.py:155 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:297 netbox/ipam/forms/filtersets.py:350 #: netbox/ipam/forms/filtersets.py:459 netbox/ipam/forms/filtersets.py:552 -#: netbox/ipam/tables/ip.py:419 netbox/templates/circuits/circuit.html:48 -#: netbox/templates/circuits/circuitgroup.html:36 -#: netbox/templates/circuits/virtualcircuit.html:47 -#: netbox/templates/dcim/cable.html:27 netbox/templates/dcim/powerfeed.html:44 -#: netbox/templates/dcim/virtualdevicecontext.html:52 -#: netbox/templates/ipam/aggregate.html:30 netbox/templates/ipam/asn.html:33 -#: netbox/templates/ipam/asnrange.html:29 -#: netbox/templates/ipam/ipaddress.html:28 -#: netbox/templates/ipam/iprange.html:65 netbox/templates/ipam/prefix.html:29 -#: netbox/templates/ipam/routetarget.html:17 -#: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vlangroup.html:50 -#: netbox/templates/ipam/vrf.html:20 netbox/templates/tenancy/tenant.html:17 -#: netbox/tenancy/forms/filtersets.py:55 netbox/tenancy/forms/forms.py:26 -#: netbox/tenancy/forms/forms.py:50 netbox/tenancy/forms/model_forms.py:51 -#: netbox/tenancy/tables/columns.py:50 +#: netbox/ipam/tables/ip.py:419 netbox/tenancy/forms/filtersets.py:55 +#: netbox/tenancy/forms/forms.py:26 netbox/tenancy/forms/forms.py:50 +#: netbox/tenancy/forms/model_forms.py:51 netbox/tenancy/tables/columns.py:50 #: netbox/virtualization/forms/bulk_edit.py:66 #: netbox/virtualization/forms/bulk_edit.py:126 #: netbox/virtualization/forms/bulk_import.py:67 @@ -728,8 +675,7 @@ msgstr "Taxa garantida (Kbps)" #: netbox/circuits/forms/bulk_edit.py:159 #: netbox/circuits/forms/filtersets.py:217 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/templates/circuits/circuit.html:38 +#: netbox/circuits/forms/model_forms.py:165 #: netbox/wireless/forms/bulk_edit.py:121 #: netbox/wireless/forms/filtersets.py:137 #: netbox/wireless/forms/model_forms.py:166 @@ -748,7 +694,7 @@ msgid "Distance unit" msgstr "Unidade de distância" #: netbox/circuits/forms/bulk_edit.py:173 -#: netbox/circuits/forms/model_forms.py:141 +#: netbox/circuits/forms/model_forms.py:170 msgid "Service Parameters" msgstr "Parâmetros do serviço" @@ -774,7 +720,7 @@ msgstr "Parâmetros do serviço" #: netbox/dcim/forms/filtersets.py:1864 netbox/dcim/forms/filtersets.py:1879 #: netbox/dcim/forms/filtersets.py:1890 netbox/dcim/forms/filtersets.py:1936 #: netbox/dcim/forms/filtersets.py:1972 netbox/dcim/tables/modules.py:25 -#: netbox/dcim/views.py:1679 netbox/extras/forms/bulk_edit.py:94 +#: netbox/dcim/views.py:1681 netbox/extras/forms/bulk_edit.py:94 #: netbox/extras/forms/filtersets.py:48 netbox/extras/forms/filtersets.py:147 #: netbox/extras/forms/filtersets.py:226 netbox/extras/forms/filtersets.py:243 #: netbox/extras/forms/filtersets.py:275 netbox/extras/forms/filtersets.py:306 @@ -797,12 +743,12 @@ msgstr "Atributos" #: netbox/circuits/forms/bulk_edit.py:175 #: netbox/circuits/forms/bulk_edit.py:317 -#: netbox/circuits/forms/model_forms.py:142 -#: netbox/circuits/forms/model_forms.py:238 -#: netbox/circuits/forms/model_forms.py:340 -#: netbox/dcim/forms/model_forms.py:157 netbox/dcim/forms/model_forms.py:198 -#: netbox/dcim/forms/model_forms.py:285 netbox/dcim/forms/model_forms.py:342 -#: netbox/dcim/forms/model_forms.py:883 netbox/dcim/forms/model_forms.py:1897 +#: netbox/circuits/forms/model_forms.py:171 +#: netbox/circuits/forms/model_forms.py:267 +#: netbox/circuits/forms/model_forms.py:369 +#: netbox/dcim/forms/model_forms.py:168 netbox/dcim/forms/model_forms.py:224 +#: netbox/dcim/forms/model_forms.py:311 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/forms/model_forms.py:909 netbox/dcim/forms/model_forms.py:1923 #: netbox/ipam/forms/bulk_edit.py:383 netbox/ipam/forms/model_forms.py:70 #: netbox/ipam/forms/model_forms.py:87 netbox/ipam/forms/model_forms.py:118 #: netbox/ipam/forms/model_forms.py:139 netbox/ipam/forms/model_forms.py:163 @@ -837,34 +783,9 @@ msgstr "Locação" #: netbox/extras/tables/tables.py:97 netbox/ipam/tables/vlans.py:214 #: netbox/ipam/tables/vlans.py:241 netbox/netbox/forms/bulk_edit.py:79 #: netbox/netbox/forms/bulk_edit.py:91 netbox/netbox/forms/bulk_edit.py:103 -#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 -#: netbox/templates/circuits/circuit.html:69 -#: netbox/templates/circuits/circuitgroup.html:32 -#: netbox/templates/circuits/circuittype.html:26 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:83 -#: netbox/templates/circuits/provider.html:33 -#: netbox/templates/circuits/provideraccount.html:32 -#: netbox/templates/circuits/providernetwork.html:32 -#: netbox/templates/circuits/virtualcircuit.html:56 -#: netbox/templates/circuits/virtualcircuittermination.html:68 -#: netbox/templates/circuits/virtualcircuittype.html:26 -#: netbox/templates/core/datasource.html:58 -#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:40 -#: netbox/templates/dcim/consoleport.html:44 -#: netbox/templates/dcim/consoleserverport.html:44 -#: netbox/templates/dcim/devicebay.html:32 -#: netbox/templates/dcim/frontport.html:54 -#: netbox/templates/dcim/interface.html:69 -#: netbox/templates/dcim/inventoryitem.html:64 -#: netbox/templates/dcim/inventoryitemrole.html:22 -#: netbox/templates/dcim/macaddress.html:21 -#: netbox/templates/dcim/modulebay.html:42 -#: netbox/templates/dcim/powerfeed.html:40 -#: netbox/templates/dcim/poweroutlet.html:44 -#: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 -#: netbox/templates/dcim/rearport.html:54 -#: netbox/templates/dcim/virtualchassis.html:21 +#: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:85 +#: netbox/templates/core/plugin.html:80 #: netbox/templates/extras/configcontext.html:25 #: netbox/templates/extras/configcontextprofile.html:17 #: netbox/templates/extras/configtemplate.html:17 @@ -879,23 +800,6 @@ msgstr "Locação" #: netbox/templates/extras/tableconfig.html:17 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:151 -#: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 -#: netbox/templates/ipam/asnrange.html:38 -#: netbox/templates/ipam/fhrpgroup.html:34 -#: netbox/templates/ipam/ipaddress.html:55 -#: netbox/templates/ipam/iprange.html:74 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/rir.html:26 netbox/templates/ipam/role.html:26 -#: netbox/templates/ipam/routetarget.html:21 -#: netbox/templates/ipam/service.html:52 -#: netbox/templates/ipam/servicetemplate.html:27 -#: netbox/templates/ipam/vlan.html:62 netbox/templates/ipam/vlangroup.html:34 -#: netbox/templates/ipam/vlantranslationpolicy.html:18 -#: netbox/templates/ipam/vlantranslationrule.html:26 -#: netbox/templates/ipam/vrf.html:33 netbox/templates/tenancy/contact.html:77 -#: netbox/templates/tenancy/contactgroup.html:25 -#: netbox/templates/tenancy/contactrole.html:22 -#: netbox/templates/tenancy/tenant.html:24 -#: netbox/templates/tenancy/tenantgroup.html:33 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:12 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:12 #: netbox/users/forms/bulk_edit.py:62 netbox/users/forms/bulk_edit.py:80 @@ -907,7 +811,7 @@ msgid "Description" msgstr "Descrição" #: netbox/circuits/forms/bulk_edit.py:192 -#: netbox/circuits/forms/model_forms.py:170 +#: netbox/circuits/forms/model_forms.py:199 #: netbox/dcim/forms/bulk_import.py:1419 netbox/dcim/forms/bulk_import.py:1444 msgid "Termination type" msgstr "Tipo de terminação" @@ -915,9 +819,9 @@ msgstr "Tipo de terminação" #: netbox/circuits/forms/bulk_edit.py:195 #: netbox/circuits/forms/bulk_import.py:133 #: netbox/circuits/forms/filtersets.py:234 -#: netbox/circuits/forms/model_forms.py:173 +#: netbox/circuits/forms/model_forms.py:202 netbox/circuits/ui/panels.py:14 #: netbox/templates/circuits/inc/circuit_termination.html:6 -#: netbox/templates/dcim/cable.html:72 netbox/templates/dcim/cable.html:76 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:6 #: netbox/vpn/forms/bulk_import.py:99 netbox/vpn/forms/filtersets.py:87 msgid "Termination" msgstr "Terminação" @@ -939,26 +843,23 @@ msgid "Mark connected" msgstr "Marcar como conectado" #: netbox/circuits/forms/bulk_edit.py:220 -#: netbox/circuits/forms/model_forms.py:184 +#: netbox/circuits/forms/model_forms.py:213 netbox/circuits/views.py:513 +#: netbox/dcim/views.py:3465 netbox/dcim/views.py:3566 #: netbox/templates/circuits/inc/circuit_termination_fields.html:55 -#: netbox/templates/dcim/frontport.html:118 -#: netbox/templates/dcim/interface.html:268 -#: netbox/templates/dcim/rearport.html:112 +#: netbox/templates/dcim/panels/interface_connection.html:92 msgid "Circuit Termination" msgstr "Terminação do Circuito" #: netbox/circuits/forms/bulk_edit.py:222 -#: netbox/circuits/forms/model_forms.py:186 +#: netbox/circuits/forms/model_forms.py:215 msgid "Termination Details" msgstr "Detalhes da Terminação" #: netbox/circuits/forms/bulk_edit.py:261 #: netbox/circuits/forms/bulk_import.py:188 #: netbox/circuits/forms/filtersets.py:314 -#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:666 -#: netbox/templates/circuits/circuitgroupassignment.html:34 +#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:692 #: netbox/templates/dcim/panels/virtual_chassis_members.html:11 -#: netbox/templates/dcim/virtualchassis.html:58 #: netbox/templates/dcim/virtualchassis_edit.html:68 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 #: netbox/templates/ipam/panels/fhrp_groups.html:12 @@ -973,7 +874,7 @@ msgstr "Prioridade" #: netbox/circuits/forms/filtersets.py:272 #: netbox/circuits/forms/filtersets.py:365 #: netbox/circuits/forms/filtersets.py:403 -#: netbox/circuits/forms/model_forms.py:321 +#: netbox/circuits/forms/model_forms.py:350 #: netbox/circuits/tables/virtual_circuits.py:51 #: netbox/circuits/tables/virtual_circuits.py:95 msgid "Provider network" @@ -982,13 +883,13 @@ msgstr "Rede do provedor" #: netbox/circuits/forms/bulk_edit.py:326 #: netbox/circuits/forms/bulk_import.py:253 #: netbox/circuits/forms/filtersets.py:393 -#: netbox/circuits/forms/model_forms.py:360 netbox/dcim/forms/bulk_edit.py:351 +#: netbox/circuits/forms/model_forms.py:389 netbox/dcim/forms/bulk_edit.py:351 #: netbox/dcim/forms/bulk_edit.py:1245 netbox/dcim/forms/bulk_edit.py:1681 #: netbox/dcim/forms/bulk_import.py:270 netbox/dcim/forms/bulk_import.py:1199 #: netbox/dcim/forms/filtersets.py:404 netbox/dcim/forms/filtersets.py:879 #: netbox/dcim/forms/filtersets.py:1902 netbox/dcim/forms/filtersets.py:1942 -#: netbox/dcim/forms/model_forms.py:267 netbox/dcim/forms/model_forms.py:1234 -#: netbox/dcim/forms/model_forms.py:1717 +#: netbox/dcim/forms/model_forms.py:293 netbox/dcim/forms/model_forms.py:1260 +#: netbox/dcim/forms/model_forms.py:1743 #: netbox/dcim/forms/object_import.py:182 netbox/dcim/tables/devices.py:173 #: netbox/dcim/tables/devices.py:1032 netbox/dcim/tables/devicetypes.py:318 #: netbox/dcim/tables/racks.py:118 netbox/extras/filtersets.py:734 @@ -1002,14 +903,10 @@ msgstr "Rede do provedor" #: netbox/ipam/forms/model_forms.py:253 netbox/ipam/forms/model_forms.py:678 #: netbox/ipam/tables/ip.py:208 netbox/ipam/tables/ip.py:265 #: netbox/ipam/tables/ip.py:318 netbox/ipam/tables/vlans.py:102 -#: netbox/templates/circuits/virtualcircuittermination.html:42 #: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:196 -#: netbox/templates/dcim/interface.html:298 -#: netbox/templates/dcim/inventoryitem.html:40 -#: netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:57 netbox/templates/ipam/prefix.html:73 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/dcim/panels/component_inventory_items.html:10 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:19 +#: netbox/templates/dcim/panels/interface_wireless.html:17 #: netbox/templates/wireless/panels/wirelesslink_interface.html:20 #: netbox/tenancy/forms/bulk_edit.py:136 #: netbox/tenancy/forms/filtersets.py:136 @@ -1105,22 +1002,19 @@ msgid "Operational role" msgstr "Função operacional" #: netbox/circuits/forms/bulk_import.py:258 -#: netbox/circuits/forms/model_forms.py:363 +#: netbox/circuits/forms/model_forms.py:392 #: netbox/circuits/tables/virtual_circuits.py:108 -#: netbox/dcim/forms/bulk_import.py:1330 netbox/dcim/forms/model_forms.py:1308 -#: netbox/dcim/forms/model_forms.py:1577 netbox/dcim/forms/model_forms.py:1758 -#: netbox/dcim/forms/model_forms.py:1793 netbox/dcim/forms/model_forms.py:1918 -#: netbox/dcim/tables/connections.py:66 netbox/dcim/tables/devices.py:1199 -#: netbox/ipam/forms/bulk_import.py:323 netbox/ipam/forms/model_forms.py:283 -#: netbox/ipam/forms/model_forms.py:292 netbox/ipam/tables/fhrp.py:61 -#: netbox/ipam/tables/ip.py:323 netbox/ipam/tables/vlans.py:145 +#: netbox/circuits/ui/panels.py:134 netbox/dcim/forms/bulk_import.py:1330 +#: netbox/dcim/forms/model_forms.py:1334 netbox/dcim/forms/model_forms.py:1603 +#: netbox/dcim/forms/model_forms.py:1784 netbox/dcim/forms/model_forms.py:1819 +#: netbox/dcim/forms/model_forms.py:1944 netbox/dcim/tables/connections.py:66 +#: netbox/dcim/tables/devices.py:1199 netbox/dcim/views.py:3457 +#: netbox/dcim/views.py:3560 netbox/ipam/forms/bulk_import.py:323 +#: netbox/ipam/forms/model_forms.py:283 netbox/ipam/forms/model_forms.py:292 +#: netbox/ipam/tables/fhrp.py:61 netbox/ipam/tables/ip.py:323 +#: netbox/ipam/tables/vlans.py:145 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 -#: netbox/templates/circuits/virtualcircuittermination.html:53 -#: netbox/templates/circuits/virtualcircuittermination.html:60 -#: netbox/templates/dcim/frontport.html:103 -#: netbox/templates/dcim/interface.html:27 -#: netbox/templates/dcim/interface.html:259 -#: netbox/templates/dcim/rearport.html:103 +#: netbox/templates/dcim/panels/interface_connection.html:83 #: netbox/templates/wireless/panels/wirelesslink_interface.html:12 #: netbox/virtualization/forms/model_forms.py:368 #: netbox/vpn/forms/bulk_import.py:302 netbox/vpn/forms/model_forms.py:434 @@ -1152,8 +1046,8 @@ msgstr "Interface" #: netbox/dcim/forms/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1746 #: netbox/dcim/forms/filtersets.py:1790 netbox/dcim/forms/filtersets.py:1833 #: netbox/dcim/forms/filtersets.py:1865 netbox/dcim/forms/filtersets.py:1892 -#: netbox/dcim/forms/model_forms.py:197 netbox/dcim/forms/model_forms.py:259 -#: netbox/dcim/forms/model_forms.py:575 netbox/dcim/forms/model_forms.py:844 +#: netbox/dcim/forms/model_forms.py:223 netbox/dcim/forms/model_forms.py:285 +#: netbox/dcim/forms/model_forms.py:601 netbox/dcim/forms/model_forms.py:870 #: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:30 #: netbox/dcim/tables/racks.py:107 netbox/dcim/tables/racks.py:199 #: netbox/extras/filtersets.py:718 netbox/extras/forms/filtersets.py:404 @@ -1161,7 +1055,6 @@ msgstr "Interface" #: netbox/ipam/forms/filtersets.py:481 netbox/ipam/forms/filtersets.py:549 #: netbox/templates/dcim/device_edit.html:32 #: netbox/templates/dcim/inc/cable_termination.html:12 -#: netbox/templates/dcim/powerpanel.html:26 #: netbox/virtualization/forms/filtersets.py:87 #: netbox/virtualization/forms/filtersets.py:113 #: netbox/wireless/forms/filtersets.py:99 @@ -1272,7 +1165,7 @@ msgstr "Contatos" #: netbox/dcim/tables/devices.py:147 netbox/dcim/tables/sites.py:65 #: netbox/extras/filtersets.py:685 netbox/ipam/forms/bulk_edit.py:404 #: netbox/ipam/forms/filtersets.py:241 netbox/ipam/forms/filtersets.py:466 -#: netbox/ipam/forms/filtersets.py:559 netbox/templates/ipam/vlan.html:16 +#: netbox/ipam/forms/filtersets.py:559 netbox/ipam/ui/panels.py:195 #: netbox/virtualization/forms/filtersets.py:67 #: netbox/virtualization/forms/filtersets.py:147 #: netbox/virtualization/forms/model_forms.py:86 @@ -1304,8 +1197,6 @@ msgstr "Grupo de sites" #: netbox/circuits/tables/providers.py:61 #: netbox/circuits/tables/virtual_circuits.py:55 #: netbox/circuits/tables/virtual_circuits.py:99 -#: netbox/templates/circuits/circuit.html:22 -#: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Conta" @@ -1316,9 +1207,7 @@ msgstr "Lado da Terminação" #: netbox/circuits/forms/filtersets.py:296 netbox/dcim/forms/bulk_edit.py:1540 #: netbox/extras/forms/model_forms.py:706 netbox/ipam/forms/filtersets.py:154 #: netbox/ipam/forms/filtersets.py:642 netbox/ipam/forms/model_forms.py:329 -#: netbox/templates/dcim/macaddress.html:25 -#: netbox/templates/extras/configcontext.html:36 -#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/ipam/ui/panels.py:121 netbox/templates/extras/configcontext.html:36 #: netbox/templates/ipam/vlan_edit.html:42 #: netbox/tenancy/forms/filtersets.py:116 #: netbox/users/forms/model_forms.py:375 @@ -1326,18 +1215,16 @@ msgid "Assignment" msgstr "Atribuição" #: netbox/circuits/forms/filtersets.py:311 -#: netbox/circuits/forms/model_forms.py:250 +#: netbox/circuits/forms/model_forms.py:279 #: netbox/circuits/tables/circuits.py:187 netbox/dcim/forms/bulk_edit.py:118 #: netbox/dcim/forms/bulk_import.py:115 netbox/dcim/forms/model_forms.py:135 #: netbox/dcim/tables/sites.py:69 netbox/extras/forms/filtersets.py:600 #: netbox/ipam/filtersets.py:1034 netbox/ipam/forms/bulk_edit.py:423 #: netbox/ipam/forms/bulk_import.py:515 netbox/ipam/forms/model_forms.py:561 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/vlans.py:94 -#: netbox/templates/circuits/circuitgroupassignment.html:22 -#: netbox/templates/dcim/interface.html:359 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:8 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 #: netbox/templates/ipam/panels/fhrp_groups.html:9 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/tenant.html:20 #: netbox/tenancy/forms/bulk_edit.py:44 netbox/tenancy/forms/bulk_import.py:46 #: netbox/tenancy/forms/filtersets.py:63 #: netbox/tenancy/forms/filtersets.py:126 @@ -1363,23 +1250,38 @@ msgstr "Atribuição" msgid "Group" msgstr "Grupo" -#: netbox/circuits/forms/model_forms.py:237 -#: netbox/templates/circuits/circuitgroup.html:25 +#: netbox/circuits/forms/model_forms.py:53 +#: netbox/dcim/forms/model_forms.py:147 +msgid "Add ASNs" +msgstr "Adicionar SANs" + +#: netbox/circuits/forms/model_forms.py:58 +#: netbox/dcim/forms/model_forms.py:152 +msgid "Remove ASNs" +msgstr "Remover ASNs" + +#: netbox/circuits/forms/model_forms.py:79 +#: netbox/dcim/forms/model_forms.py:198 +#, python-brace-format +msgid "{count} ASNs currently assigned" +msgstr "{count} ASNs atualmente atribuídos" + +#: netbox/circuits/forms/model_forms.py:266 msgid "Circuit Group" msgstr "Grupo de Circuitos" -#: netbox/circuits/forms/model_forms.py:257 +#: netbox/circuits/forms/model_forms.py:286 msgid "Circuit type" msgstr "Tipo de circuito" -#: netbox/circuits/forms/model_forms.py:268 +#: netbox/circuits/forms/model_forms.py:297 msgid "Group Assignment" msgstr "Atribuição do Grupo" #: netbox/circuits/models/base.py:18 netbox/dcim/models/cables.py:81 -#: netbox/dcim/models/device_component_templates.py:353 -#: netbox/dcim/models/device_component_templates.py:588 -#: netbox/dcim/models/device_component_templates.py:661 +#: netbox/dcim/models/device_component_templates.py:343 +#: netbox/dcim/models/device_component_templates.py:578 +#: netbox/dcim/models/device_component_templates.py:651 #: netbox/dcim/models/device_components.py:573 #: netbox/dcim/models/device_components.py:1156 #: netbox/dcim/models/device_components.py:1204 @@ -1416,8 +1318,8 @@ msgstr "ID única do circuito" #: netbox/dcim/models/modules.py:219 netbox/dcim/models/power.py:95 #: netbox/dcim/models/racks.py:301 netbox/dcim/models/racks.py:685 #: netbox/dcim/models/sites.py:163 netbox/dcim/models/sites.py:287 -#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:528 -#: netbox/ipam/models/ip.py:757 netbox/ipam/models/vlans.py:228 +#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:538 +#: netbox/ipam/models/ip.py:767 netbox/ipam/models/vlans.py:228 #: netbox/virtualization/models/clusters.py:70 #: netbox/virtualization/models/virtualmachines.py:80 #: netbox/vpn/models/l2vpn.py:36 netbox/vpn/models/tunnels.py:38 @@ -1537,7 +1439,7 @@ msgstr "terminação do circuito" msgid "circuit terminations" msgstr "terminações dos circuitos" -#: netbox/circuits/models/circuits.py:360 +#: netbox/circuits/models/circuits.py:367 msgid "A circuit termination must attach to a terminating object." msgstr "" "Uma terminação de circuito deve ser conectada a um objeto de terminação." @@ -1642,7 +1544,7 @@ msgid "virtual circuits" msgstr "circuitos virtuais" #: netbox/circuits/models/virtual_circuits.py:135 netbox/ipam/models/ip.py:201 -#: netbox/ipam/models/ip.py:764 netbox/vpn/models/tunnels.py:109 +#: netbox/ipam/models/ip.py:774 netbox/vpn/models/tunnels.py:109 msgid "role" msgstr "função" @@ -1690,30 +1592,13 @@ msgstr "terminações de circuito virtual" #: netbox/ipam/tables/vlans.py:33 netbox/ipam/tables/vlans.py:86 #: netbox/ipam/tables/vlans.py:205 netbox/ipam/tables/vrfs.py:26 #: netbox/ipam/tables/vrfs.py:65 netbox/netbox/tables/tables.py:325 -#: netbox/netbox/ui/panels.py:198 netbox/netbox/ui/panels.py:207 -#: netbox/templates/circuits/circuitgroup.html:28 -#: netbox/templates/circuits/circuittype.html:22 -#: netbox/templates/circuits/provideraccount.html:28 -#: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/circuits/virtualcircuittype.html:22 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:17 +#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 #: netbox/templates/core/plugin.html:54 #: netbox/templates/core/rq_worker.html:43 -#: netbox/templates/dcim/consoleport.html:28 -#: netbox/templates/dcim/consoleserverport.html:28 -#: netbox/templates/dcim/devicebay.html:24 -#: netbox/templates/dcim/frontport.html:28 #: netbox/templates/dcim/inc/interface_vlans_table.html:5 #: netbox/templates/dcim/inc/panels/inventory_items.html:18 -#: netbox/templates/dcim/interface.html:38 -#: netbox/templates/dcim/interface.html:240 -#: netbox/templates/dcim/inventoryitem.html:28 -#: netbox/templates/dcim/inventoryitemrole.html:18 -#: netbox/templates/dcim/modulebay.html:30 -#: netbox/templates/dcim/poweroutlet.html:28 -#: netbox/templates/dcim/powerport.html:28 -#: netbox/templates/dcim/rearport.html:28 -#: netbox/templates/dcim/virtualdevicecontext.html:18 +#: netbox/templates/dcim/panels/component_inventory_items.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:64 #: netbox/templates/extras/configcontext.html:13 #: netbox/templates/extras/configcontextprofile.html:13 #: netbox/templates/extras/configtemplate.html:13 @@ -1727,18 +1612,6 @@ msgstr "terminações de circuito virtual" #: netbox/templates/extras/savedfilter.html:13 #: netbox/templates/extras/tableconfig.html:13 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 -#: netbox/templates/ipam/asnrange.html:15 -#: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 -#: netbox/templates/ipam/role.html:22 -#: netbox/templates/ipam/routetarget.html:13 -#: netbox/templates/ipam/service.html:26 -#: netbox/templates/ipam/servicetemplate.html:15 -#: netbox/templates/ipam/vlan.html:35 netbox/templates/ipam/vlangroup.html:30 -#: netbox/templates/ipam/vlantranslationpolicy.html:14 -#: netbox/templates/tenancy/contact.html:35 -#: netbox/templates/tenancy/contactgroup.html:21 -#: netbox/templates/tenancy/contactrole.html:18 -#: netbox/templates/tenancy/tenantgroup.html:29 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:8 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:8 #: netbox/tenancy/tables/contacts.py:38 netbox/tenancy/tables/contacts.py:53 @@ -1768,17 +1641,13 @@ msgstr "Nome" #: netbox/circuits/tables/virtual_circuits.py:27 #: netbox/netbox/navigation/menu.py:278 netbox/netbox/navigation/menu.py:282 #: netbox/netbox/navigation/menu.py:284 -#: netbox/templates/circuits/provider.html:57 -#: netbox/templates/circuits/provideraccount.html:48 -#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Circuitos" #: netbox/circuits/tables/circuits.py:53 #: netbox/circuits/tables/virtual_circuits.py:42 -#: netbox/templates/circuits/circuit.html:26 -#: netbox/templates/circuits/virtualcircuit.html:35 -#: netbox/templates/dcim/interface.html:192 +#: netbox/circuits/ui/panels.py:75 netbox/circuits/ui/panels.py:118 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:15 msgid "Circuit ID" msgstr "ID do Circuito" @@ -1792,13 +1661,11 @@ msgid "Side Z" msgstr "Lado Z" #: netbox/circuits/tables/circuits.py:78 -#: netbox/templates/circuits/circuit.html:65 msgid "Commit Rate" msgstr "Taxa Garantida" #: netbox/circuits/tables/circuits.py:85 netbox/dcim/forms/filtersets.py:1973 -#: netbox/templates/tenancy/contact.html:94 -#: netbox/tenancy/tables/contacts.py:67 +#: netbox/tenancy/tables/contacts.py:67 netbox/tenancy/views.py:416 msgid "Assignments" msgstr "Atribuições" @@ -1820,10 +1687,7 @@ msgid "Site Group" msgstr "Grupo de Sites" #: netbox/circuits/tables/circuits.py:145 -#: netbox/templates/circuits/providernetwork.html:17 -#: netbox/templates/circuits/virtualcircuit.html:27 -#: netbox/templates/circuits/virtualcircuittermination.html:30 -#: netbox/templates/dcim/interface.html:188 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:11 msgid "Provider Network" msgstr "Rede do Provedor" @@ -1839,8 +1703,7 @@ msgstr "Quantidade de contas" msgid "ASN Count" msgstr "Quantidade de ASNs" -#: netbox/circuits/tables/virtual_circuits.py:64 -#: netbox/templates/circuits/virtualcircuit.html:87 +#: netbox/circuits/tables/virtual_circuits.py:64 netbox/circuits/views.py:802 #: netbox/vpn/tables/tunnels.py:59 netbox/vpn/views.py:139 #: netbox/vpn/views.py:685 msgid "Terminations" @@ -1869,9 +1732,9 @@ msgstr "Terminações" #: netbox/dcim/forms/filtersets.py:1868 netbox/dcim/forms/filtersets.py:1880 #: netbox/dcim/forms/filtersets.py:1895 netbox/dcim/forms/filtersets.py:1937 #: netbox/dcim/forms/filtersets.py:2032 netbox/dcim/forms/filtersets.py:2056 -#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:748 -#: netbox/dcim/forms/model_forms.py:963 netbox/dcim/forms/model_forms.py:1375 -#: netbox/dcim/forms/model_forms.py:1869 netbox/dcim/forms/model_forms.py:1942 +#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:774 +#: netbox/dcim/forms/model_forms.py:989 netbox/dcim/forms/model_forms.py:1401 +#: netbox/dcim/forms/model_forms.py:1895 netbox/dcim/forms/model_forms.py:1968 #: netbox/dcim/forms/object_create.py:207 netbox/dcim/tables/connections.py:23 #: netbox/dcim/tables/connections.py:42 netbox/dcim/tables/connections.py:61 #: netbox/dcim/tables/devices.py:293 netbox/dcim/tables/devices.py:388 @@ -1883,24 +1746,11 @@ msgstr "Terminações" #: netbox/dcim/tables/modules.py:82 netbox/extras/forms/filtersets.py:405 #: netbox/ipam/forms/bulk_import.py:309 netbox/ipam/forms/filtersets.py:649 #: netbox/ipam/forms/model_forms.py:325 netbox/ipam/tables/vlans.py:156 -#: netbox/templates/circuits/virtualcircuittermination.html:56 -#: netbox/templates/dcim/consoleport.html:20 -#: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device_edit.html:12 -#: netbox/templates/dcim/devicebay.html:20 -#: netbox/templates/dcim/devicebay.html:48 -#: netbox/templates/dcim/frontport.html:20 -#: netbox/templates/dcim/interface.html:30 -#: netbox/templates/dcim/interface.html:236 -#: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/modulebay.html:20 +#: netbox/templates/dcim/panels/installed_device.html:9 +#: netbox/templates/dcim/panels/interface_connection.html:60 #: netbox/templates/dcim/panels/virtual_chassis_members.html:8 -#: netbox/templates/dcim/poweroutlet.html:20 -#: netbox/templates/dcim/powerport.html:20 -#: netbox/templates/dcim/rearport.html:20 -#: netbox/templates/dcim/virtualchassis.html:55 #: netbox/templates/dcim/virtualchassis_edit.html:63 -#: netbox/templates/dcim/virtualdevicecontext.html:22 #: netbox/templates/wireless/panels/wirelesslink_interface.html:8 #: netbox/virtualization/filtersets.py:160 #: netbox/virtualization/forms/bulk_edit.py:108 @@ -1918,6 +1768,15 @@ msgstr "Terminações" msgid "Device" msgstr "Dispositivo" +#: netbox/circuits/ui/panels.py:37 netbox/netbox/navigation/menu.py:301 +msgid "Group Assignments" +msgstr "Atribuições do Grupo" + +#: netbox/circuits/ui/panels.py:46 netbox/ipam/ui/panels.py:36 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Atribuir Grupo" + #: netbox/core/api/views.py:51 msgid "This user does not have permission to synchronize this data source." msgstr "Este usuário não tem permissão para sincronizar esta origem de dados." @@ -1964,14 +1823,14 @@ msgid "Syncing" msgstr "Sincronizando" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:43 netbox/templates/core/job.html:59 +#: netbox/core/tables/jobs.py:43 msgid "Completed" msgstr "Concluído" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35 #: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259 -#: netbox/dcim/choices.py:1992 netbox/dcim/choices.py:2082 +#: netbox/dcim/choices.py:2013 netbox/dcim/choices.py:2103 #: netbox/virtualization/choices.py:48 msgid "Failed" msgstr "Falhou" @@ -1995,7 +1854,6 @@ msgstr "Pendente" #: netbox/core/choices.py:55 netbox/core/constants.py:24 #: netbox/core/tables/jobs.py:34 netbox/core/tables/tasks.py:39 -#: netbox/templates/core/job.html:46 msgid "Scheduled" msgstr "Agendado" @@ -2034,10 +1892,9 @@ msgstr "30 dias" #: netbox/core/choices.py:102 netbox/core/tables/jobs.py:31 #: netbox/core/tables/tasks.py:80 netbox/extras/tables/tables.py:436 #: netbox/extras/tables/tables.py:742 -#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision.html:23 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:42 netbox/templates/core/rq_task.html:16 -#: netbox/templates/core/rq_task.html:73 +#: netbox/templates/core/rq_task.html:16 netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 #: netbox/templates/extras/journalentry.html:22 @@ -2059,7 +1916,6 @@ msgid "Finished" msgstr "Concluído" #: netbox/core/constants.py:22 netbox/core/tables/jobs.py:40 -#: netbox/templates/core/job.html:55 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Iniciado" @@ -2091,13 +1947,12 @@ msgid "Warning" msgstr "Aviso" #: netbox/core/constants.py:33 netbox/netbox/tables/columns.py:589 -#: netbox/templates/core/job.html:26 msgid "Error" msgstr "Erro" #: netbox/core/data_backends.py:46 netbox/core/tables/plugins.py:54 #: netbox/templates/core/plugin.html:88 -#: netbox/templates/dcim/interface.html:291 +#: netbox/templates/dcim/panels/interface_wireless.html:10 msgid "Local" msgstr "Local" @@ -2156,7 +2011,7 @@ msgid "User name" msgstr "Nome de usuário" #: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47 -#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2040 +#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2061 #: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386 #: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712 #: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233 @@ -2167,8 +2022,6 @@ msgstr "Nome de usuário" #: netbox/extras/tables/tables.py:188 netbox/extras/tables/tables.py:319 #: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:520 #: netbox/netbox/preferences.py:46 netbox/netbox/preferences.py:71 -#: netbox/templates/core/datasource.html:42 -#: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 #: netbox/templates/extras/eventrule.html:17 #: netbox/templates/extras/savedfilter.html:25 @@ -2182,7 +2035,7 @@ msgid "Enabled" msgstr "Habilitado" #: netbox/core/forms/bulk_edit.py:30 netbox/core/forms/filtersets.py:54 -#: netbox/core/tables/data.py:31 netbox/templates/core/datasource.html:50 +#: netbox/core/tables/data.py:31 netbox/core/ui/panels.py:12 msgid "Sync interval" msgstr "intervalo de sincronização" @@ -2196,17 +2049,17 @@ msgstr "intervalo de sincronização" msgid "Parameters" msgstr "Parâmetros" -#: netbox/core/forms/bulk_edit.py:37 netbox/templates/core/datasource.html:72 +#: netbox/core/forms/bulk_edit.py:37 netbox/core/ui/panels.py:22 msgid "Ignore rules" msgstr "Ignorar regras" #: netbox/core/forms/filtersets.py:33 netbox/core/forms/model_forms.py:100 -#: netbox/extras/forms/model_forms.py:280 +#: netbox/core/ui/panels.py:7 netbox/extras/forms/model_forms.py:280 #: netbox/extras/forms/model_forms.py:613 #: netbox/extras/forms/model_forms.py:702 #: netbox/extras/forms/model_forms.py:755 netbox/extras/tables/tables.py:230 #: netbox/extras/tables/tables.py:600 netbox/extras/tables/tables.py:630 -#: netbox/extras/tables/tables.py:672 netbox/templates/core/datasource.html:31 +#: netbox/extras/tables/tables.py:672 #: netbox/templates/core/inc/datafile_panel.html:7 #: netbox/templates/extras/configtemplate.html:37 #: netbox/templates/extras/object_render_config.html:19 @@ -2233,15 +2086,14 @@ msgstr "Criação" #: netbox/extras/forms/filtersets.py:580 netbox/extras/tables/tables.py:283 #: netbox/extras/tables/tables.py:350 netbox/extras/tables/tables.py:376 #: netbox/extras/tables/tables.py:395 netbox/extras/tables/tables.py:427 -#: netbox/extras/tables/tables.py:747 netbox/templates/core/job.html:11 -#: netbox/templates/core/objectchange.html:52 +#: netbox/extras/tables/tables.py:747 #: netbox/templates/extras/tableconfig.html:21 #: netbox/tenancy/tables/contacts.py:84 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Tipo de Objeto" #: netbox/core/forms/filtersets.py:95 netbox/core/tables/jobs.py:46 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:61 +#: netbox/core/ui/panels.py:65 netbox/templates/core/rq_task.html:61 msgid "Queue" msgstr "Fila" @@ -2278,11 +2130,10 @@ msgid "Completed before" msgstr "Concluído antes" #: netbox/core/forms/filtersets.py:141 netbox/core/forms/filtersets.py:170 -#: netbox/dcim/forms/bulk_edit.py:458 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/model_forms.py:336 netbox/extras/forms/filtersets.py:575 -#: netbox/extras/forms/filtersets.py:595 netbox/extras/tables/tables.py:403 -#: netbox/extras/tables/tables.py:443 -#: netbox/templates/core/objectchange.html:36 +#: netbox/core/ui/panels.py:73 netbox/dcim/forms/bulk_edit.py:458 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:362 +#: netbox/extras/forms/filtersets.py:575 netbox/extras/forms/filtersets.py:595 +#: netbox/extras/tables/tables.py:403 netbox/extras/tables/tables.py:443 #: netbox/templates/extras/savedfilter.html:21 #: netbox/templates/extras/tableconfig.html:29 #: netbox/templates/inc/user_menu.html:31 netbox/users/filtersets.py:135 @@ -2295,7 +2146,6 @@ msgstr "Usuário" #: netbox/core/forms/filtersets.py:149 netbox/core/tables/change_logging.py:16 #: netbox/core/tables/jobs.py:72 netbox/extras/tables/tables.py:785 #: netbox/extras/tables/tables.py:840 -#: netbox/templates/core/objectchange.html:32 msgid "Time" msgstr "Tempo" @@ -2309,21 +2159,19 @@ msgstr "Antes" #: netbox/core/forms/filtersets.py:163 netbox/core/tables/change_logging.py:30 #: netbox/extras/forms/model_forms.py:490 -#: netbox/templates/core/objectchange.html:46 #: netbox/templates/extras/eventrule.html:71 msgid "Action" msgstr "Ação" #: netbox/core/forms/model_forms.py:55 netbox/core/tables/data.py:57 -#: netbox/templates/core/datafile.html:21 #: netbox/templates/extras/report/base.html:33 #: netbox/templates/extras/script/base.html:32 msgid "Source" msgstr "Origem" #: netbox/core/forms/model_forms.py:57 -#: netbox/templates/core/datasource.html:14 -#: netbox/templates/core/datasource.html:20 +#: netbox/templates/core/datasource.html:10 +#: netbox/templates/core/datasource.html:16 #: netbox/utilities/templatetags/buttons.py:156 msgid "Sync" msgstr "Sincronizar" @@ -2353,7 +2201,7 @@ msgstr "" msgid "Rack Elevations" msgstr "Elevações de Rack" -#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1911 +#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1932 #: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340 #: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144 #: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320 @@ -2496,13 +2344,13 @@ msgid "Config revision #{id}" msgstr "Revisão da configuração #{id}" #: netbox/core/models/data.py:45 netbox/dcim/models/cables.py:50 -#: netbox/dcim/models/device_component_templates.py:210 -#: netbox/dcim/models/device_component_templates.py:245 -#: netbox/dcim/models/device_component_templates.py:281 -#: netbox/dcim/models/device_component_templates.py:346 -#: netbox/dcim/models/device_component_templates.py:437 -#: netbox/dcim/models/device_component_templates.py:583 -#: netbox/dcim/models/device_component_templates.py:656 +#: netbox/dcim/models/device_component_templates.py:200 +#: netbox/dcim/models/device_component_templates.py:235 +#: netbox/dcim/models/device_component_templates.py:271 +#: netbox/dcim/models/device_component_templates.py:336 +#: netbox/dcim/models/device_component_templates.py:427 +#: netbox/dcim/models/device_component_templates.py:573 +#: netbox/dcim/models/device_component_templates.py:646 #: netbox/dcim/models/device_components.py:370 #: netbox/dcim/models/device_components.py:397 #: netbox/dcim/models/device_components.py:428 @@ -2516,15 +2364,14 @@ msgstr "Revisão da configuração #{id}" msgid "type" msgstr "tipo" -#: netbox/core/models/data.py:50 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:183 netbox/extras/tables/tables.py:850 -#: netbox/templates/core/datasource.html:62 -#: netbox/templates/core/plugin.html:66 +#: netbox/core/models/data.py:50 netbox/core/ui/panels.py:17 +#: netbox/extras/choices.py:37 netbox/extras/models/models.py:183 +#: netbox/extras/tables/tables.py:850 netbox/templates/core/plugin.html:66 msgid "URL" msgstr "URL" #: netbox/core/models/data.py:60 -#: netbox/dcim/models/device_component_templates.py:442 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:605 #: netbox/extras/models/models.py:81 netbox/extras/models/models.py:319 #: netbox/extras/models/models.py:507 netbox/extras/models/models.py:586 @@ -2601,7 +2448,7 @@ msgstr "caminho" msgid "File path relative to the data source's root" msgstr "Caminho de arquivo relativo à raiz da origem de dados" -#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:509 +#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:519 msgid "size" msgstr "tamanho" @@ -2750,27 +2597,24 @@ msgid "Full Name" msgstr "Nome Completo" #: netbox/core/tables/change_logging.py:38 netbox/core/tables/jobs.py:23 -#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:286 -#: netbox/extras/tables/tables.py:379 netbox/extras/tables/tables.py:398 -#: netbox/extras/tables/tables.py:430 netbox/extras/tables/tables.py:514 -#: netbox/extras/tables/tables.py:583 netbox/extras/tables/tables.py:752 -#: netbox/extras/tables/tables.py:793 netbox/extras/tables/tables.py:847 -#: netbox/netbox/tables/tables.py:343 -#: netbox/templates/core/objectchange.html:58 +#: netbox/core/ui/panels.py:83 netbox/extras/choices.py:41 +#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:379 +#: netbox/extras/tables/tables.py:398 netbox/extras/tables/tables.py:430 +#: netbox/extras/tables/tables.py:514 netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:752 netbox/extras/tables/tables.py:793 +#: netbox/extras/tables/tables.py:847 netbox/netbox/tables/tables.py:343 #: netbox/templates/extras/eventrule.html:78 #: netbox/templates/extras/journalentry.html:18 #: netbox/tenancy/tables/contacts.py:87 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "Objeto" -#: netbox/core/tables/change_logging.py:43 -#: netbox/templates/core/objectchange.html:74 +#: netbox/core/tables/change_logging.py:43 netbox/core/ui/panels.py:89 msgid "Request ID" msgstr "ID da Solicitação" #: netbox/core/tables/change_logging.py:46 netbox/core/tables/jobs.py:79 #: netbox/extras/tables/tables.py:796 netbox/extras/tables/tables.py:853 -#: netbox/templates/core/objectchange.html:68 msgid "Message" msgstr "Mensagem" @@ -2783,11 +2627,11 @@ msgstr "Está Ativo" msgid "Last Synced" msgstr "Última Sincronização" -#: netbox/core/tables/data.py:37 netbox/templates/core/datasource.html:118 +#: netbox/core/tables/data.py:37 msgid "Files" msgstr "Arquivos" -#: netbox/core/tables/data.py:61 netbox/templates/core/datafile.html:25 +#: netbox/core/tables/data.py:61 msgid "Path" msgstr "Caminho" @@ -2811,7 +2655,7 @@ msgstr "ID" msgid "Interval" msgstr "Intervalo" -#: netbox/core/tables/jobs.py:49 +#: netbox/core/tables/jobs.py:49 netbox/core/views.py:255 msgid "Log Entries" msgstr "Entradas de Log" @@ -2831,7 +2675,7 @@ msgstr "Sem entradas de log" msgid "Version" msgstr "Versão" -#: netbox/core/tables/plugins.py:21 netbox/templates/core/datafile.html:32 +#: netbox/core/tables/plugins.py:21 msgid "Last Updated" msgstr "Última Atualização" @@ -2927,7 +2771,61 @@ msgstr "PID" msgid "No workers found" msgstr "Nenhum agente encontrado" -#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:447 +#: netbox/core/ui/panels.py:13 +msgid "Last synced" +msgstr "Última sincronização" + +#: netbox/core/ui/panels.py:29 +msgid "Backend" +msgstr "Backend" + +#: netbox/core/ui/panels.py:33 netbox/extras/tables/tables.py:234 +#: netbox/extras/tables/tables.py:604 netbox/extras/tables/tables.py:634 +#: netbox/extras/tables/tables.py:676 +#: netbox/templates/core/inc/datafile_panel.html:4 +#: netbox/templates/core/inc/datafile_panel.html:17 +#: netbox/templates/extras/configtemplate.html:47 +#: netbox/templates/extras/object_render_config.html:23 +#: netbox/templates/generic/bulk_import.html:35 +msgid "Data File" +msgstr "Arquivo de Dados" + +#: netbox/core/ui/panels.py:38 +msgid "SHA256 hash" +msgstr "Hash SHA256" + +#: netbox/core/ui/panels.py:43 +msgid "Content" +msgstr "Conteúdo" + +#: netbox/core/ui/panels.py:47 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 +msgid "Job" +msgstr "Tarefa" + +#: netbox/core/ui/panels.py:50 netbox/core/ui/panels.py:79 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 +#: netbox/extras/forms/filtersets.py:335 +#: netbox/extras/forms/model_forms.py:338 +#: netbox/extras/forms/model_forms.py:398 +#: netbox/extras/forms/model_forms.py:435 +#: netbox/tenancy/forms/filtersets.py:121 +msgid "Object type" +msgstr "Tipo de objeto" + +#: netbox/core/ui/panels.py:56 +msgid "Created by" +msgstr "Criado por" + +#: netbox/core/ui/panels.py:60 +msgid "Scheduling" +msgstr "Agendamento" + +#: netbox/core/ui/panels.py:69 netbox/users/ui/panels.py:53 +msgid "Change" +msgstr "Alteração" + +#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Tarefa {job_id} não encontrada" @@ -2937,55 +2835,63 @@ msgstr "Tarefa {job_id} não encontrada" msgid "Job {id} not found." msgstr "Tarefa {id} não encontrada." -#: netbox/core/views.py:95 +#: netbox/core/views.py:125 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Tarefa {id} enfileirada para sincronizar {datasource}" -#: netbox/core/views.py:199 netbox/templates/extras/htmx/script_result.html:43 +#: netbox/core/views.py:237 netbox/extras/forms/filtersets.py:179 +#: netbox/extras/forms/filtersets.py:380 netbox/extras/forms/filtersets.py:403 +#: netbox/extras/forms/filtersets.py:499 +#: netbox/extras/forms/model_forms.py:696 +#: netbox/templates/extras/eventrule.html:84 +msgid "Data" +msgstr "Dados" + +#: netbox/core/views.py:248 netbox/templates/extras/htmx/script_result.html:43 msgid "Log" msgstr "Log" -#: netbox/core/views.py:383 +#: netbox/core/views.py:467 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Revisão da configuração nº {id} restaurada" -#: netbox/core/views.py:486 +#: netbox/core/views.py:570 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Tarefa {id} foi excluída." -#: netbox/core/views.py:488 +#: netbox/core/views.py:572 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Erro ao excluir a tarefa {id}: {error}" -#: netbox/core/views.py:497 +#: netbox/core/views.py:581 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Tarefa {id} foi reenfileirada." -#: netbox/core/views.py:506 +#: netbox/core/views.py:590 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Tarefa {id} foi enfileirada." -#: netbox/core/views.py:515 +#: netbox/core/views.py:599 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Tarefa {id} foi interrompida." -#: netbox/core/views.py:517 +#: netbox/core/views.py:601 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Falha ao interromper a tarefa {id}" -#: netbox/core/views.py:671 +#: netbox/core/views.py:755 msgid "Plugins catalog could not be loaded" msgstr "Catálogo de plugins não pode ser carregado" -#: netbox/core/views.py:707 +#: netbox/core/views.py:791 #, python-brace-format msgid "Plugin {name} not found" msgstr "Plugin {name} não encontrado" @@ -3008,7 +2914,7 @@ msgstr "O modo de interface não suporta VLAN tagueada" msgid "Position (U)" msgstr "Posição (U)" -#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:47 +#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:49 msgid "Facility ID" msgstr "ID do Facility" @@ -3035,8 +2941,8 @@ msgid "Staging" msgstr "Em Preparação" #: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208 -#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1934 -#: netbox/dcim/choices.py:2083 netbox/virtualization/choices.py:23 +#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1955 +#: netbox/dcim/choices.py:2104 netbox/virtualization/choices.py:23 #: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282 msgid "Decommissioning" msgstr "Em Descomissionamento" @@ -3102,7 +3008,7 @@ msgstr "Obsoleto" msgid "Millimeters" msgstr "Milímetros" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1956 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1977 msgid "Inches" msgstr "Polegadas" @@ -3130,21 +3036,17 @@ msgstr "Obsoleto" #: netbox/dcim/forms/bulk_import.py:1211 netbox/dcim/forms/filtersets.py:265 #: netbox/dcim/forms/filtersets.py:780 netbox/dcim/forms/filtersets.py:796 #: netbox/dcim/forms/model_forms.py:93 netbox/dcim/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:188 netbox/dcim/forms/model_forms.py:514 -#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1709 +#: netbox/dcim/forms/model_forms.py:214 netbox/dcim/forms/model_forms.py:540 +#: netbox/dcim/forms/model_forms.py:561 netbox/dcim/forms/model_forms.py:1252 +#: netbox/dcim/forms/model_forms.py:1735 #: netbox/dcim/forms/object_import.py:177 netbox/dcim/tables/devices.py:702 #: netbox/dcim/tables/devices.py:737 netbox/dcim/tables/devices.py:965 #: netbox/dcim/tables/devices.py:1052 netbox/dcim/tables/devices.py:1205 #: netbox/ipam/forms/bulk_import.py:601 netbox/ipam/forms/model_forms.py:758 #: netbox/ipam/tables/fhrp.py:56 netbox/ipam/tables/ip.py:329 #: netbox/ipam/tables/services.py:42 netbox/netbox/tables/tables.py:329 -#: netbox/netbox/ui/panels.py:206 netbox/templates/dcim/interface.html:113 -#: netbox/templates/ipam/service.html:30 -#: netbox/templates/tenancy/contactgroup.html:29 -#: netbox/templates/tenancy/tenantgroup.html:37 -#: netbox/tenancy/forms/bulk_edit.py:33 netbox/tenancy/forms/bulk_edit.py:62 -#: netbox/tenancy/forms/bulk_import.py:31 +#: netbox/netbox/ui/panels.py:207 netbox/tenancy/forms/bulk_edit.py:33 +#: netbox/tenancy/forms/bulk_edit.py:62 netbox/tenancy/forms/bulk_import.py:31 #: netbox/tenancy/forms/bulk_import.py:64 #: netbox/tenancy/forms/model_forms.py:26 #: netbox/tenancy/forms/model_forms.py:67 @@ -3178,7 +3080,7 @@ msgid "Rear" msgstr "Traseira" #: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258 -#: netbox/dcim/choices.py:2081 netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:2102 netbox/virtualization/choices.py:47 msgid "Staged" msgstr "Preparado" @@ -3211,7 +3113,7 @@ msgid "Top to bottom" msgstr "De cima para baixo" #: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280 -#: netbox/dcim/choices.py:1566 +#: netbox/dcim/choices.py:1587 msgid "Passive" msgstr "Passivo" @@ -3240,8 +3142,8 @@ msgid "Proprietary" msgstr "Proprietário" #: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853 -#: netbox/dcim/choices.py:1478 netbox/dcim/choices.py:1480 -#: netbox/dcim/choices.py:1716 netbox/dcim/choices.py:1718 +#: netbox/dcim/choices.py:1499 netbox/dcim/choices.py:1501 +#: netbox/dcim/choices.py:1737 netbox/dcim/choices.py:1739 #: netbox/netbox/navigation/menu.py:212 msgid "Other" msgstr "Outros" @@ -3254,348 +3156,350 @@ msgstr "ITA/Internacional" msgid "Physical" msgstr "Físico" -#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1153 +#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1162 msgid "Virtual" msgstr "Virtual" -#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1355 +#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 -#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125 -#: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150 -#: netbox/netbox/navigation/menu.py:154 -#: netbox/templates/dcim/interface.html:285 +#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1151 +#: netbox/dcim/forms/model_forms.py:1615 netbox/dcim/ui/panels.py:546 +#: netbox/netbox/navigation/menu.py:150 netbox/netbox/navigation/menu.py:154 msgid "Wireless" msgstr "Wireless" -#: netbox/dcim/choices.py:1151 +#: netbox/dcim/choices.py:1160 msgid "Virtual interfaces" msgstr "Interfaces virtuais" -#: netbox/dcim/choices.py:1154 netbox/dcim/forms/bulk_edit.py:1399 -#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107 -#: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:117 +#: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 +#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1133 +#: netbox/dcim/tables/devices.py:741 #: netbox/virtualization/forms/bulk_edit.py:177 #: netbox/virtualization/forms/bulk_import.py:171 #: netbox/virtualization/tables/virtualmachines.py:137 msgid "Bridge" msgstr "Bridge" -#: netbox/dcim/choices.py:1155 +#: netbox/dcim/choices.py:1164 msgid "Link Aggregation Group (LAG)" msgstr "Link Aggregation (LAG)" -#: netbox/dcim/choices.py:1159 +#: netbox/dcim/choices.py:1168 msgid "FastEthernet (100 Mbps)" msgstr "FastEthernet (100 Mbps)" -#: netbox/dcim/choices.py:1168 +#: netbox/dcim/choices.py:1177 msgid "GigabitEthernet (1 Gbps)" msgstr "GigabitEthernet (1 Gbps)" -#: netbox/dcim/choices.py:1186 +#: netbox/dcim/choices.py:1195 msgid "2.5/5 Gbps Ethernet" msgstr "2.5/5Gbps Ethernet" -#: netbox/dcim/choices.py:1193 +#: netbox/dcim/choices.py:1202 msgid "10 Gbps Ethernet" msgstr "10Gbps Ethernet" -#: netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1218 msgid "25 Gbps Ethernet" msgstr "25Gbps Ethernet" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1228 msgid "40 Gbps Ethernet" msgstr "40Gbps Ethernet" -#: netbox/dcim/choices.py:1230 +#: netbox/dcim/choices.py:1239 msgid "50 Gbps Ethernet" msgstr "50Gbps Ethernet" -#: netbox/dcim/choices.py:1240 +#: netbox/dcim/choices.py:1249 msgid "100 Gbps Ethernet" msgstr "100Gbps Ethernet" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1270 msgid "200 Gbps Ethernet" msgstr "200Gbps Ethernet" -#: netbox/dcim/choices.py:1275 +#: netbox/dcim/choices.py:1284 msgid "400 Gbps Ethernet" msgstr "400Gbps Ethernet" -#: netbox/dcim/choices.py:1293 +#: netbox/dcim/choices.py:1302 msgid "800 Gbps Ethernet" msgstr "800Gbps Ethernet" -#: netbox/dcim/choices.py:1302 +#: netbox/dcim/choices.py:1311 +msgid "1.6 Tbps Ethernet" +msgstr "Ethernet de 1,6 Tbps" + +#: netbox/dcim/choices.py:1319 msgid "Pluggable transceivers" msgstr "Transceivers conectáveis" -#: netbox/dcim/choices.py:1339 +#: netbox/dcim/choices.py:1359 msgid "Backplane Ethernet" msgstr "Backplane Ethernet" -#: netbox/dcim/choices.py:1371 +#: netbox/dcim/choices.py:1392 msgid "Cellular" msgstr "Celular" -#: netbox/dcim/choices.py:1423 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/choices.py:1444 netbox/dcim/forms/filtersets.py:425 #: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112 #: netbox/dcim/forms/filtersets.py:1910 -#: netbox/templates/dcim/inventoryitem.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:66 msgid "Serial" msgstr "Serial" -#: netbox/dcim/choices.py:1438 +#: netbox/dcim/choices.py:1459 msgid "Coaxial" msgstr "Coaxial" -#: netbox/dcim/choices.py:1459 +#: netbox/dcim/choices.py:1480 msgid "Stacking" msgstr "Empilhamento" -#: netbox/dcim/choices.py:1511 +#: netbox/dcim/choices.py:1532 msgid "Half" msgstr "Half" -#: netbox/dcim/choices.py:1512 +#: netbox/dcim/choices.py:1533 msgid "Full" msgstr "Full" -#: netbox/dcim/choices.py:1513 netbox/netbox/preferences.py:32 +#: netbox/dcim/choices.py:1534 netbox/netbox/preferences.py:32 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Automático" -#: netbox/dcim/choices.py:1525 +#: netbox/dcim/choices.py:1546 msgid "Access" msgstr "Acesso" -#: netbox/dcim/choices.py:1526 netbox/ipam/tables/vlans.py:148 +#: netbox/dcim/choices.py:1547 netbox/ipam/tables/vlans.py:148 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Tagueada" -#: netbox/dcim/choices.py:1527 +#: netbox/dcim/choices.py:1548 msgid "Tagged (All)" msgstr "Tagueada (Todos)" -#: netbox/dcim/choices.py:1528 netbox/templates/ipam/vlan_edit.html:26 +#: netbox/dcim/choices.py:1549 netbox/templates/ipam/vlan_edit.html:26 msgid "Q-in-Q (802.1ad)" msgstr "Q-in-Q (802.1ad)" -#: netbox/dcim/choices.py:1557 +#: netbox/dcim/choices.py:1578 msgid "IEEE Standard" msgstr "Padrão IEEE" -#: netbox/dcim/choices.py:1568 +#: netbox/dcim/choices.py:1589 msgid "Passive 24V (2-pair)" msgstr "24V passivo (2 pares)" -#: netbox/dcim/choices.py:1569 +#: netbox/dcim/choices.py:1590 msgid "Passive 24V (4-pair)" msgstr "24V passivo (4 pares)" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1591 msgid "Passive 48V (2-pair)" msgstr "48V passivo (2 pares)" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1592 msgid "Passive 48V (4-pair)" msgstr "48V passivo (4 pares)" -#: netbox/dcim/choices.py:1644 +#: netbox/dcim/choices.py:1665 msgid "Copper" msgstr "Cabo Metálico" -#: netbox/dcim/choices.py:1667 +#: netbox/dcim/choices.py:1688 msgid "Fiber Optic" msgstr "Fibra Óptica" -#: netbox/dcim/choices.py:1703 netbox/dcim/choices.py:1917 +#: netbox/dcim/choices.py:1724 netbox/dcim/choices.py:1938 msgid "USB" msgstr "USB" -#: netbox/dcim/choices.py:1759 +#: netbox/dcim/choices.py:1780 msgid "Single" msgstr "Único" -#: netbox/dcim/choices.py:1761 +#: netbox/dcim/choices.py:1782 msgid "1C1P" msgstr "1C1P" -#: netbox/dcim/choices.py:1762 +#: netbox/dcim/choices.py:1783 msgid "1C2P" msgstr "1C2P" -#: netbox/dcim/choices.py:1763 +#: netbox/dcim/choices.py:1784 msgid "1C4P" msgstr "1C4P" -#: netbox/dcim/choices.py:1764 +#: netbox/dcim/choices.py:1785 msgid "1C6P" msgstr "1C6P" -#: netbox/dcim/choices.py:1765 +#: netbox/dcim/choices.py:1786 msgid "1C8P" msgstr "1C8P" -#: netbox/dcim/choices.py:1766 +#: netbox/dcim/choices.py:1787 msgid "1C12P" msgstr "1C12P" -#: netbox/dcim/choices.py:1767 +#: netbox/dcim/choices.py:1788 msgid "1C16P" msgstr "1C16P" -#: netbox/dcim/choices.py:1771 +#: netbox/dcim/choices.py:1792 msgid "Trunk" msgstr "Tronco" -#: netbox/dcim/choices.py:1773 +#: netbox/dcim/choices.py:1794 msgid "2C1P trunk" msgstr "Tronco 2C1P" -#: netbox/dcim/choices.py:1774 +#: netbox/dcim/choices.py:1795 msgid "2C2P trunk" msgstr "Tronco 2C2P" -#: netbox/dcim/choices.py:1775 +#: netbox/dcim/choices.py:1796 msgid "2C4P trunk" msgstr "Tronco 2C4P" -#: netbox/dcim/choices.py:1776 +#: netbox/dcim/choices.py:1797 msgid "2C4P trunk (shuffle)" msgstr "Tronco 2C4P (aleatório)" -#: netbox/dcim/choices.py:1777 +#: netbox/dcim/choices.py:1798 msgid "2C6P trunk" msgstr "Tronco 2C6P" -#: netbox/dcim/choices.py:1778 +#: netbox/dcim/choices.py:1799 msgid "2C8P trunk" msgstr "Tronco 2C8P" -#: netbox/dcim/choices.py:1779 +#: netbox/dcim/choices.py:1800 msgid "2C12P trunk" msgstr "Tronco 2C12P" -#: netbox/dcim/choices.py:1780 +#: netbox/dcim/choices.py:1801 msgid "4C1P trunk" msgstr "Tronco 4C1P" -#: netbox/dcim/choices.py:1781 +#: netbox/dcim/choices.py:1802 msgid "4C2P trunk" msgstr "Tronco 4C2P" -#: netbox/dcim/choices.py:1782 +#: netbox/dcim/choices.py:1803 msgid "4C4P trunk" msgstr "Tronco 4C4P" -#: netbox/dcim/choices.py:1783 +#: netbox/dcim/choices.py:1804 msgid "4C4P trunk (shuffle)" msgstr "Tronco 4C4P (aleatório)" -#: netbox/dcim/choices.py:1784 +#: netbox/dcim/choices.py:1805 msgid "4C6P trunk" msgstr "Tronco 4C6P" -#: netbox/dcim/choices.py:1785 +#: netbox/dcim/choices.py:1806 msgid "4C8P trunk" msgstr "Tronco 4C8P" -#: netbox/dcim/choices.py:1786 +#: netbox/dcim/choices.py:1807 msgid "8C4P trunk" msgstr "Tronco 8C4P" -#: netbox/dcim/choices.py:1790 +#: netbox/dcim/choices.py:1811 msgid "Breakout" msgstr "Breakout" -#: netbox/dcim/choices.py:1792 +#: netbox/dcim/choices.py:1813 msgid "1C4P:4C1P breakout" msgstr "1C4P:4C1P breakout" -#: netbox/dcim/choices.py:1793 +#: netbox/dcim/choices.py:1814 msgid "1C6P:6C1P breakout" msgstr "1C6P:6C1P breakout" -#: netbox/dcim/choices.py:1794 +#: netbox/dcim/choices.py:1815 msgid "2C4P:8C1P breakout (shuffle)" msgstr "2C4P:8C1P breakout (aleatório)" -#: netbox/dcim/choices.py:1852 +#: netbox/dcim/choices.py:1873 msgid "Copper - Twisted Pair (UTP/STP)" msgstr "Cobre - par trançado (UTP/STP)" -#: netbox/dcim/choices.py:1866 +#: netbox/dcim/choices.py:1887 msgid "Copper - Twinax (DAC)" msgstr "Cobre - Twinax (DAC)" -#: netbox/dcim/choices.py:1873 +#: netbox/dcim/choices.py:1894 msgid "Copper - Coaxial" msgstr "Cobre - Coaxial" -#: netbox/dcim/choices.py:1888 +#: netbox/dcim/choices.py:1909 msgid "Fiber - Multimode" msgstr "Fibra - Multimodo" -#: netbox/dcim/choices.py:1899 +#: netbox/dcim/choices.py:1920 msgid "Fiber - Single-mode" msgstr "Fibra - Monomodo" -#: netbox/dcim/choices.py:1907 +#: netbox/dcim/choices.py:1928 msgid "Fiber - Other" msgstr "Fibra - Outros" -#: netbox/dcim/choices.py:1932 netbox/dcim/forms/filtersets.py:1402 +#: netbox/dcim/choices.py:1953 netbox/dcim/forms/filtersets.py:1402 msgid "Connected" msgstr "Conectado" -#: netbox/dcim/choices.py:1951 netbox/netbox/choices.py:177 +#: netbox/dcim/choices.py:1972 netbox/netbox/choices.py:177 msgid "Kilometers" msgstr "Quilômetros" -#: netbox/dcim/choices.py:1952 netbox/netbox/choices.py:178 +#: netbox/dcim/choices.py:1973 netbox/netbox/choices.py:178 #: netbox/templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Metros" -#: netbox/dcim/choices.py:1953 +#: netbox/dcim/choices.py:1974 msgid "Centimeters" msgstr "Centímetros" -#: netbox/dcim/choices.py:1954 netbox/netbox/choices.py:179 +#: netbox/dcim/choices.py:1975 netbox/netbox/choices.py:179 msgid "Miles" msgstr "Milhas" -#: netbox/dcim/choices.py:1955 netbox/netbox/choices.py:180 +#: netbox/dcim/choices.py:1976 netbox/netbox/choices.py:180 #: netbox/templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Pés" -#: netbox/dcim/choices.py:2003 +#: netbox/dcim/choices.py:2024 msgid "Redundant" msgstr "Redundante" -#: netbox/dcim/choices.py:2024 +#: netbox/dcim/choices.py:2045 msgid "Single phase" msgstr "Monofásico" -#: netbox/dcim/choices.py:2025 +#: netbox/dcim/choices.py:2046 msgid "Three-phase" msgstr "Trifásico" -#: netbox/dcim/choices.py:2041 netbox/extras/choices.py:53 +#: netbox/dcim/choices.py:2062 netbox/extras/choices.py:53 #: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70 #: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Desativado" -#: netbox/dcim/choices.py:2042 +#: netbox/dcim/choices.py:2063 msgid "Faulty" msgstr "Defeituoso" @@ -3877,8 +3781,9 @@ msgstr "É full-depth" #: netbox/dcim/filtersets.py:1323 netbox/dcim/forms/filtersets.py:920 #: netbox/dcim/forms/filtersets.py:1634 netbox/dcim/forms/filtersets.py:1979 -#: netbox/dcim/forms/model_forms.py:1915 netbox/dcim/models/devices.py:1313 -#: netbox/dcim/models/devices.py:1336 netbox/virtualization/filtersets.py:230 +#: netbox/dcim/forms/model_forms.py:1941 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1336 netbox/dcim/ui/panels.py:366 +#: netbox/dcim/ui/panels.py:504 netbox/virtualization/filtersets.py:230 #: netbox/virtualization/filtersets.py:318 #: netbox/virtualization/forms/filtersets.py:191 #: netbox/virtualization/forms/filtersets.py:245 @@ -3966,7 +3871,6 @@ msgstr "Chassi Virtual (ID)" #: netbox/dcim/forms/object_create.py:329 netbox/dcim/tables/devices.py:215 #: netbox/netbox/navigation/menu.py:82 #: netbox/templates/dcim/device_edit.html:95 -#: netbox/templates/dcim/virtualchassis.html:10 #: netbox/templates/dcim/virtualchassis_edit.html:28 msgid "Virtual Chassis" msgstr "Chassi Virtual" @@ -4026,7 +3930,7 @@ msgstr "Está associado" msgid "Is primary" msgstr "É primário" -#: netbox/dcim/filtersets.py:2060 netbox/templates/dcim/interface.html:81 +#: netbox/dcim/filtersets.py:2060 #: netbox/virtualization/forms/model_forms.py:386 #: netbox/virtualization/ui/panels.py:62 msgid "802.1Q Mode" @@ -4043,27 +3947,25 @@ msgstr "VLAN ID Designada " #: netbox/dcim/filtersets.py:2074 netbox/dcim/forms/bulk_edit.py:1512 #: netbox/dcim/forms/bulk_import.py:1034 netbox/dcim/forms/filtersets.py:1687 -#: netbox/dcim/forms/model_forms.py:1555 +#: netbox/dcim/forms/model_forms.py:1581 #: netbox/dcim/models/device_components.py:867 -#: netbox/dcim/tables/devices.py:667 netbox/ipam/filtersets.py:360 -#: netbox/ipam/filtersets.py:372 netbox/ipam/filtersets.py:511 -#: netbox/ipam/filtersets.py:618 netbox/ipam/filtersets.py:630 -#: netbox/ipam/forms/bulk_edit.py:190 netbox/ipam/forms/bulk_edit.py:240 -#: netbox/ipam/forms/bulk_edit.py:281 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:248 netbox/ipam/forms/bulk_import.py:284 -#: netbox/ipam/forms/filtersets.py:70 netbox/ipam/forms/filtersets.py:194 -#: netbox/ipam/forms/filtersets.py:348 netbox/ipam/forms/model_forms.py:68 -#: netbox/ipam/forms/model_forms.py:203 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:303 netbox/ipam/forms/model_forms.py:466 -#: netbox/ipam/forms/model_forms.py:480 netbox/ipam/forms/model_forms.py:494 -#: netbox/ipam/models/ip.py:224 netbox/ipam/models/ip.py:518 -#: netbox/ipam/models/ip.py:747 netbox/ipam/models/vrfs.py:61 -#: netbox/ipam/tables/ip.py:187 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:311 netbox/ipam/tables/ip.py:413 -#: netbox/templates/dcim/interface.html:170 -#: netbox/templates/ipam/ipaddress.html:18 -#: netbox/templates/ipam/iprange.html:47 netbox/templates/ipam/prefix.html:19 -#: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 +#: netbox/dcim/tables/devices.py:667 netbox/dcim/ui/panels.py:507 +#: netbox/ipam/filtersets.py:360 netbox/ipam/filtersets.py:372 +#: netbox/ipam/filtersets.py:511 netbox/ipam/filtersets.py:618 +#: netbox/ipam/filtersets.py:630 netbox/ipam/forms/bulk_edit.py:190 +#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:281 +#: netbox/ipam/forms/bulk_import.py:163 netbox/ipam/forms/bulk_import.py:248 +#: netbox/ipam/forms/bulk_import.py:284 netbox/ipam/forms/filtersets.py:70 +#: netbox/ipam/forms/filtersets.py:194 netbox/ipam/forms/filtersets.py:348 +#: netbox/ipam/forms/model_forms.py:68 netbox/ipam/forms/model_forms.py:203 +#: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:303 +#: netbox/ipam/forms/model_forms.py:466 netbox/ipam/forms/model_forms.py:480 +#: netbox/ipam/forms/model_forms.py:494 netbox/ipam/models/ip.py:224 +#: netbox/ipam/models/ip.py:528 netbox/ipam/models/ip.py:757 +#: netbox/ipam/models/vrfs.py:61 netbox/ipam/tables/ip.py:187 +#: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:311 +#: netbox/ipam/tables/ip.py:413 netbox/ipam/ui/panels.py:102 +#: netbox/ipam/ui/panels.py:111 netbox/ipam/ui/panels.py:139 #: netbox/virtualization/forms/bulk_edit.py:226 #: netbox/virtualization/forms/bulk_import.py:218 #: netbox/virtualization/forms/filtersets.py:250 @@ -4086,9 +3988,9 @@ msgid "L2VPN (ID)" msgstr "L2VPN (ID)" #: netbox/dcim/filtersets.py:2092 netbox/dcim/forms/filtersets.py:1692 -#: netbox/dcim/tables/devices.py:607 netbox/ipam/filtersets.py:1087 -#: netbox/ipam/forms/filtersets.py:613 netbox/ipam/tables/vlans.py:116 -#: netbox/templates/dcim/interface.html:104 netbox/templates/ipam/vlan.html:82 +#: netbox/dcim/tables/devices.py:607 netbox/dcim/ui/panels.py:487 +#: netbox/ipam/filtersets.py:1087 netbox/ipam/forms/filtersets.py:613 +#: netbox/ipam/tables/vlans.py:116 netbox/ipam/ui/panels.py:206 #: netbox/virtualization/forms/filtersets.py:255 #: netbox/vpn/forms/bulk_import.py:285 netbox/vpn/forms/filtersets.py:268 #: netbox/vpn/forms/model_forms.py:407 netbox/vpn/forms/model_forms.py:425 @@ -4102,10 +4004,9 @@ msgid "VLAN Translation Policy (ID)" msgstr "Política de Tradução de VLAN (ID)" #: netbox/dcim/filtersets.py:2105 netbox/dcim/forms/filtersets.py:1658 -#: netbox/dcim/forms/model_forms.py:1572 +#: netbox/dcim/forms/model_forms.py:1598 #: netbox/dcim/models/device_components.py:668 #: netbox/ipam/forms/filtersets.py:531 netbox/ipam/forms/model_forms.py:703 -#: netbox/templates/ipam/vlantranslationpolicy.html:11 #: netbox/virtualization/forms/bulk_edit.py:231 #: netbox/virtualization/forms/filtersets.py:265 #: netbox/virtualization/forms/model_forms.py:364 @@ -4149,9 +4050,6 @@ msgid "LAG interface (ID)" msgstr "Interface LAG (ID)" #: netbox/dcim/filtersets.py:2185 netbox/dcim/tables/devices.py:1194 -#: netbox/templates/dcim/interface.html:149 -#: netbox/templates/dcim/macaddress.html:11 -#: netbox/templates/dcim/macaddress.html:14 #: netbox/virtualization/ui/panels.py:71 msgid "MAC Address" msgstr "Endereço MAC" @@ -4160,15 +4058,14 @@ msgstr "Endereço MAC" msgid "Primary MAC address (ID)" msgstr "Endereço MAC primário (ID)" -#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1559 +#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1585 #: netbox/virtualization/filtersets.py:331 #: netbox/virtualization/forms/model_forms.py:302 msgid "Primary MAC address" msgstr "Endereço MAC primário" #: netbox/dcim/filtersets.py:2225 netbox/dcim/filtersets.py:2237 -#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1895 -#: netbox/templates/dcim/virtualdevicecontext.html:15 +#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1921 msgid "Virtual Device Context" msgstr "Contexto de Dispositivo Virtual" @@ -4227,6 +4124,7 @@ msgstr "Quadro de alimentação (ID)" #: netbox/netbox/forms/bulk_import.py:27 netbox/netbox/forms/mixins.py:131 #: netbox/netbox/tables/columns.py:495 #: netbox/templates/circuits/inc/circuit_termination.html:29 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:29 #: netbox/templates/generic/bulk_edit.html:78 #: netbox/templates/inc/panels/tags.html:5 #: netbox/utilities/forms/fields/fields.py:101 @@ -4234,14 +4132,12 @@ msgid "Tags" msgstr "Etiquetas" #: netbox/dcim/forms/bulk_create.py:116 netbox/dcim/forms/filtersets.py:1842 -#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:595 -#: netbox/dcim/forms/model_forms.py:661 netbox/dcim/forms/object_create.py:155 +#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:621 +#: netbox/dcim/forms/model_forms.py:687 netbox/dcim/forms/object_create.py:155 #: netbox/dcim/forms/object_create.py:256 netbox/dcim/tables/devices.py:169 -#: netbox/templates/dcim/frontport.html:132 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/panels/front_port_mappings.html:9 +#: netbox/templates/dcim/panels/rear_port_mappings.html:9 #: netbox/templates/dcim/panels/virtual_chassis_members.html:9 -#: netbox/templates/dcim/rearport.html:126 -#: netbox/templates/dcim/virtualchassis.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:67 msgid "Position" msgstr "Posição" @@ -4272,7 +4168,7 @@ msgid "Contact E-mail" msgstr "E-mail de Contato" #: netbox/dcim/forms/bulk_edit.py:152 netbox/dcim/forms/bulk_import.py:138 -#: netbox/dcim/forms/model_forms.py:147 +#: netbox/dcim/forms/model_forms.py:157 msgid "Time zone" msgstr "Fuso horário" @@ -4287,17 +4183,16 @@ msgstr "Fuso horário" #: netbox/dcim/forms/filtersets.py:546 netbox/dcim/forms/filtersets.py:695 #: netbox/dcim/forms/filtersets.py:801 netbox/dcim/forms/filtersets.py:884 #: netbox/dcim/forms/filtersets.py:1096 netbox/dcim/forms/filtersets.py:1907 -#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:223 -#: netbox/dcim/forms/model_forms.py:354 netbox/dcim/forms/model_forms.py:366 -#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:540 -#: netbox/dcim/forms/model_forms.py:1239 netbox/dcim/forms/model_forms.py:1722 +#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:249 +#: netbox/dcim/forms/model_forms.py:380 netbox/dcim/forms/model_forms.py:392 +#: netbox/dcim/forms/model_forms.py:462 netbox/dcim/forms/model_forms.py:566 +#: netbox/dcim/forms/model_forms.py:1265 netbox/dcim/forms/model_forms.py:1748 #: netbox/dcim/forms/object_import.py:188 netbox/dcim/tables/devices.py:101 #: netbox/dcim/tables/devices.py:176 netbox/dcim/tables/devices.py:1035 #: netbox/dcim/tables/devicetypes.py:87 netbox/dcim/tables/devicetypes.py:322 #: netbox/dcim/tables/modules.py:47 netbox/dcim/tables/modules.py:90 #: netbox/dcim/tables/racks.py:51 netbox/dcim/tables/racks.py:121 -#: netbox/templates/dcim/inventoryitem.html:48 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/panels/installed_module.html:13 #: netbox/templates/dcim/panels/module_type.html:7 msgid "Manufacturer" msgstr "Fabricante" @@ -4322,7 +4217,7 @@ msgid "Height (U)" msgstr "Altura (U)" #: netbox/dcim/forms/bulk_edit.py:244 netbox/dcim/forms/bulk_edit.py:387 -#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:39 +#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:41 msgid "Descending units" msgstr "Unidades descendentes" @@ -4356,10 +4251,10 @@ msgstr "Profundidade de montagem" #: netbox/dcim/forms/filtersets.py:362 netbox/dcim/forms/filtersets.py:441 #: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:651 #: netbox/dcim/forms/filtersets.py:683 netbox/dcim/forms/filtersets.py:755 -#: netbox/dcim/forms/model_forms.py:237 netbox/dcim/forms/model_forms.py:318 +#: netbox/dcim/forms/model_forms.py:263 netbox/dcim/forms/model_forms.py:344 #: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:55 #: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:162 -#: netbox/dcim/views.py:891 netbox/dcim/views.py:1019 +#: netbox/dcim/views.py:893 netbox/dcim/views.py:1021 #: netbox/extras/forms/bulk_edit.py:57 netbox/extras/forms/bulk_edit.py:137 #: netbox/extras/forms/bulk_edit.py:191 netbox/extras/forms/bulk_edit.py:219 #: netbox/extras/forms/bulk_edit.py:315 netbox/extras/forms/bulk_edit.py:341 @@ -4370,7 +4265,7 @@ msgstr "Profundidade de montagem" #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 #: netbox/templates/extras/tableconfig.html:41 -#: netbox/templates/extras/tag.html:32 netbox/templates/ipam/role.html:30 +#: netbox/templates/extras/tag.html:32 msgid "Weight" msgstr "Peso" @@ -4389,18 +4284,18 @@ msgid "Weight unit" msgstr "Unidade de peso" #: netbox/dcim/forms/bulk_edit.py:290 netbox/dcim/forms/filtersets.py:335 -#: netbox/dcim/forms/model_forms.py:233 netbox/dcim/forms/model_forms.py:272 +#: netbox/dcim/forms/model_forms.py:259 netbox/dcim/forms/model_forms.py:298 msgid "Rack Type" msgstr "Tipo de Rack" #: netbox/dcim/forms/bulk_edit.py:292 netbox/dcim/forms/bulk_edit.py:440 -#: netbox/dcim/forms/model_forms.py:236 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/model_forms.py:262 netbox/dcim/forms/model_forms.py:343 msgid "Outer Dimensions" msgstr "Dimensões externas" -#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:238 -#: netbox/dcim/forms/model_forms.py:319 netbox/dcim/ui/panels.py:135 -#: netbox/dcim/views.py:885 netbox/dcim/views.py:1017 +#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:345 netbox/dcim/ui/panels.py:137 +#: netbox/dcim/views.py:887 netbox/dcim/views.py:1019 #: netbox/extras/tables/tables.py:278 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 #: netbox/templates/extras/imageattachment.html:40 @@ -4408,8 +4303,8 @@ msgid "Dimensions" msgstr "Dimensões" #: netbox/dcim/forms/bulk_edit.py:297 netbox/dcim/forms/filtersets.py:336 -#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:240 -#: netbox/dcim/views.py:890 netbox/dcim/views.py:1018 +#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:266 +#: netbox/dcim/views.py:892 netbox/dcim/views.py:1020 #: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "Numeração" @@ -4420,13 +4315,14 @@ msgid "Rack type" msgstr "Tipo de rack" #: netbox/dcim/forms/bulk_edit.py:363 netbox/dcim/forms/bulk_edit.py:708 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/templates/dcim/modulebay.html:70 +#: netbox/dcim/forms/bulk_edit.py:763 msgid "Serial Number" msgstr "Número de Série" #: netbox/dcim/forms/bulk_edit.py:366 netbox/dcim/forms/filtersets.py:429 #: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1116 #: netbox/dcim/forms/filtersets.py:1914 +#: netbox/templates/dcim/panels/installed_module.html:25 msgid "Asset tag" msgstr "Etiqueta de ativo" @@ -4447,13 +4343,12 @@ msgstr "Fluxo de Ar" #: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/filtersets.py:501 #: netbox/dcim/forms/filtersets.py:874 netbox/dcim/forms/filtersets.py:1086 #: netbox/dcim/forms/filtersets.py:1186 netbox/dcim/forms/filtersets.py:1325 -#: netbox/dcim/forms/model_forms.py:282 netbox/dcim/forms/model_forms.py:326 -#: netbox/dcim/forms/model_forms.py:586 netbox/dcim/forms/model_forms.py:871 +#: netbox/dcim/forms/model_forms.py:308 netbox/dcim/forms/model_forms.py:352 +#: netbox/dcim/forms/model_forms.py:612 netbox/dcim/forms/model_forms.py:897 #: netbox/dcim/forms/object_create.py:303 netbox/dcim/tables/devices.py:165 #: netbox/dcim/tables/power.py:67 netbox/dcim/tables/racks.py:204 #: netbox/ipam/forms/filtersets.py:486 #: netbox/templates/dcim/inc/cable_termination.html:16 -#: netbox/templates/dcim/powerfeed.html:28 #: netbox/templates/dcim/rack/base.html:4 #: netbox/virtualization/forms/model_forms.py:107 msgid "Rack" @@ -4463,14 +4358,14 @@ msgstr "Rack" #: netbox/dcim/forms/filtersets.py:360 netbox/dcim/forms/filtersets.py:440 #: netbox/dcim/forms/filtersets.py:532 netbox/dcim/forms/filtersets.py:677 #: netbox/dcim/forms/filtersets.py:822 netbox/dcim/forms/filtersets.py:1043 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:787 -#: netbox/dcim/forms/model_forms.py:1790 +#: netbox/dcim/forms/model_forms.py:470 netbox/dcim/forms/model_forms.py:813 +#: netbox/dcim/forms/model_forms.py:1816 #: netbox/templates/dcim/device_edit.html:22 msgid "Hardware" msgstr "Hardware" #: netbox/dcim/forms/bulk_edit.py:490 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:397 msgid "Default platform" msgstr "Plataforma padrão" @@ -4487,29 +4382,29 @@ msgstr "Altura em U" msgid "Exclude from utilization" msgstr "Excluir da utilização" -#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:385 -#: netbox/dcim/forms/model_forms.py:1022 netbox/dcim/forms/model_forms.py:1064 -#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1119 -#: netbox/dcim/forms/model_forms.py:1140 netbox/dcim/forms/model_forms.py:1180 -#: netbox/dcim/forms/model_forms.py:1198 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:411 +#: netbox/dcim/forms/model_forms.py:1048 netbox/dcim/forms/model_forms.py:1090 +#: netbox/dcim/forms/model_forms.py:1117 netbox/dcim/forms/model_forms.py:1145 +#: netbox/dcim/forms/model_forms.py:1166 netbox/dcim/forms/model_forms.py:1206 +#: netbox/dcim/forms/model_forms.py:1224 #: netbox/dcim/forms/object_create.py:119 netbox/dcim/tables/devicetypes.py:84 -#: netbox/dcim/ui/panels.py:125 netbox/templates/dcim/devicebay.html:52 +#: netbox/dcim/ui/panels.py:127 msgid "Device Type" msgstr "Tipo de Dispositivo" -#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:412 -#: netbox/dcim/views.py:1590 netbox/extras/forms/model_forms.py:601 +#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:438 +#: netbox/dcim/views.py:1592 netbox/extras/forms/model_forms.py:601 msgid "Schema" msgstr "Esquema" #: netbox/dcim/forms/bulk_edit.py:549 netbox/dcim/forms/bulk_edit.py:556 #: netbox/dcim/forms/bulk_edit.py:787 netbox/dcim/forms/bulk_import.py:460 #: netbox/dcim/forms/bulk_import.py:1459 netbox/dcim/forms/filtersets.py:690 -#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:418 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/tables/modules.py:43 +#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:444 +#: netbox/dcim/forms/model_forms.py:457 netbox/dcim/tables/modules.py:43 #: netbox/extras/forms/filtersets.py:413 #: netbox/extras/forms/model_forms.py:626 netbox/extras/tables/tables.py:627 -#: netbox/templates/account/base.html:7 netbox/templates/dcim/cable.html:23 +#: netbox/templates/account/base.html:7 #: netbox/templates/extras/configcontext.html:21 #: netbox/templates/inc/user_menu.html:38 netbox/vpn/forms/bulk_edit.py:213 #: netbox/vpn/forms/filtersets.py:203 netbox/vpn/forms/model_forms.py:378 @@ -4517,22 +4412,21 @@ msgid "Profile" msgstr "Perfil" #: netbox/dcim/forms/bulk_edit.py:588 netbox/dcim/forms/filtersets.py:1379 -#: netbox/dcim/forms/model_forms.py:443 netbox/dcim/forms/model_forms.py:1023 -#: netbox/dcim/forms/model_forms.py:1065 netbox/dcim/forms/model_forms.py:1092 -#: netbox/dcim/forms/model_forms.py:1120 netbox/dcim/forms/model_forms.py:1141 -#: netbox/dcim/forms/model_forms.py:1181 netbox/dcim/forms/model_forms.py:1199 +#: netbox/dcim/forms/model_forms.py:469 netbox/dcim/forms/model_forms.py:1049 +#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1118 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1167 +#: netbox/dcim/forms/model_forms.py:1207 netbox/dcim/forms/model_forms.py:1225 #: netbox/dcim/forms/object_create.py:120 netbox/dcim/tables/modules.py:52 -#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2848 -#: netbox/templates/dcim/modulebay.html:66 +#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2851 msgid "Module Type" msgstr "Tipo de Módulo" -#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:388 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:414 msgid "Chassis" msgstr "Chassi" #: netbox/dcim/forms/bulk_edit.py:611 netbox/dcim/models/devices.py:390 -#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:142 +#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:144 msgid "VM role" msgstr "Função da VM" @@ -4542,8 +4436,8 @@ msgstr "Função da VM" #: netbox/dcim/forms/bulk_import.py:561 netbox/dcim/forms/bulk_import.py:686 #: netbox/dcim/forms/bulk_import.py:690 netbox/dcim/forms/filtersets.py:775 #: netbox/dcim/forms/filtersets.py:806 netbox/dcim/forms/filtersets.py:925 -#: netbox/dcim/forms/model_forms.py:509 netbox/dcim/forms/model_forms.py:546 -#: netbox/dcim/forms/model_forms.py:670 +#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:572 +#: netbox/dcim/forms/model_forms.py:696 #: netbox/virtualization/forms/bulk_import.py:145 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/filtersets.py:207 @@ -4553,20 +4447,21 @@ msgstr "Modelo de configuração" #: netbox/dcim/forms/bulk_edit.py:657 netbox/dcim/forms/bulk_edit.py:1040 #: netbox/dcim/forms/bulk_import.py:592 netbox/dcim/forms/filtersets.py:133 -#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:616 -#: netbox/dcim/forms/model_forms.py:986 netbox/dcim/forms/model_forms.py:1003 +#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:642 +#: netbox/dcim/forms/model_forms.py:1012 netbox/dcim/forms/model_forms.py:1029 #: netbox/extras/filtersets.py:729 +#: netbox/templates/dcim/panels/installed_device.html:13 msgid "Device type" msgstr "Tipo de dispositivo" #: netbox/dcim/forms/bulk_edit.py:668 netbox/dcim/forms/bulk_import.py:573 -#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:624 +#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:650 msgid "Device role" msgstr "Função do dispositivo" #: netbox/dcim/forms/bulk_edit.py:691 netbox/dcim/forms/bulk_import.py:598 #: netbox/dcim/forms/filtersets.py:789 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/model_forms.py:557 netbox/dcim/forms/model_forms.py:629 +#: netbox/dcim/forms/model_forms.py:583 netbox/dcim/forms/model_forms.py:655 #: netbox/dcim/tables/devices.py:191 netbox/extras/filtersets.py:745 #: netbox/virtualization/forms/bulk_edit.py:131 #: netbox/virtualization/forms/bulk_import.py:135 @@ -4578,7 +4473,7 @@ msgstr "Plataforma" #: netbox/dcim/forms/bulk_edit.py:716 netbox/dcim/forms/bulk_import.py:617 #: netbox/dcim/forms/filtersets.py:830 netbox/dcim/forms/filtersets.py:1000 -#: netbox/dcim/forms/model_forms.py:638 netbox/dcim/tables/devices.py:211 +#: netbox/dcim/forms/model_forms.py:664 netbox/dcim/tables/devices.py:211 #: netbox/extras/filtersets.py:778 netbox/extras/forms/filtersets.py:406 #: netbox/ipam/forms/filtersets.py:457 netbox/ipam/forms/filtersets.py:491 #: netbox/virtualization/filtersets.py:148 @@ -4607,7 +4502,8 @@ msgid "Virtualization" msgstr "Virtualização" #: netbox/dcim/forms/bulk_edit.py:744 netbox/dcim/forms/bulk_import.py:759 -#: netbox/dcim/forms/model_forms.py:765 netbox/dcim/forms/model_forms.py:1011 +#: netbox/dcim/forms/model_forms.py:791 netbox/dcim/forms/model_forms.py:1037 +#: netbox/templates/dcim/panels/installed_module.html:17 msgid "Module type" msgstr "Tipo de módulo" @@ -4617,25 +4513,15 @@ msgstr "Tipo de módulo" #: netbox/dcim/forms/bulk_edit.py:1146 netbox/dcim/forms/bulk_edit.py:1173 #: netbox/dcim/forms/bulk_edit.py:1200 netbox/dcim/forms/bulk_edit.py:1218 #: netbox/dcim/forms/bulk_edit.py:1236 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/object_create.py:48 netbox/templates/dcim/cable.html:36 -#: netbox/templates/dcim/consoleport.html:32 -#: netbox/templates/dcim/consoleserverport.html:32 -#: netbox/templates/dcim/devicebay.html:28 -#: netbox/templates/dcim/frontport.html:32 +#: netbox/dcim/forms/object_create.py:48 #: netbox/templates/dcim/inc/panels/inventory_items.html:19 -#: netbox/templates/dcim/interface.html:42 -#: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:34 -#: netbox/templates/dcim/poweroutlet.html:32 -#: netbox/templates/dcim/powerport.html:32 -#: netbox/templates/dcim/rearport.html:32 +#: netbox/templates/dcim/panels/component_inventory_items.html:9 #: netbox/templates/extras/customfield.html:26 #: netbox/templates/generic/bulk_import.html:193 msgid "Label" msgstr "Rótulo" #: netbox/dcim/forms/bulk_edit.py:807 netbox/dcim/forms/filtersets.py:1224 -#: netbox/templates/dcim/cable.html:54 msgid "Length" msgstr "Comprimento" @@ -4645,34 +4531,29 @@ msgid "Length unit" msgstr "Unidade de comprimento" #: netbox/dcim/forms/bulk_edit.py:830 -#: netbox/templates/dcim/virtualchassis.html:13 msgid "Domain" msgstr "Domínio" #: netbox/dcim/forms/bulk_edit.py:886 netbox/dcim/forms/bulk_import.py:1646 -#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:865 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:891 msgid "Power panel" msgstr "Quadro de alimentação" #: netbox/dcim/forms/bulk_edit.py:908 netbox/dcim/forms/bulk_import.py:1682 #: netbox/dcim/forms/filtersets.py:1338 -#: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Tipo de Alimentação" #: netbox/dcim/forms/bulk_edit.py:914 netbox/dcim/forms/bulk_import.py:1687 #: netbox/dcim/forms/filtersets.py:1343 -#: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Fase" #: netbox/dcim/forms/bulk_edit.py:920 netbox/dcim/forms/filtersets.py:1348 -#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Tensão" #: netbox/dcim/forms/bulk_edit.py:924 netbox/dcim/forms/filtersets.py:1352 -#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Corrente" @@ -4685,7 +4566,7 @@ msgid "Maximum draw" msgstr "Consumo máximo" #: netbox/dcim/forms/bulk_edit.py:1018 -#: netbox/dcim/models/device_component_templates.py:292 +#: netbox/dcim/models/device_component_templates.py:282 #: netbox/dcim/models/device_components.py:440 msgid "Maximum power draw (watts)" msgstr "Consumo máximo de energia (Watts)" @@ -4695,14 +4576,14 @@ msgid "Allocated draw" msgstr "Consumo alocado" #: netbox/dcim/forms/bulk_edit.py:1024 -#: netbox/dcim/models/device_component_templates.py:299 +#: netbox/dcim/models/device_component_templates.py:289 #: netbox/dcim/models/device_components.py:447 msgid "Allocated power draw (watts)" msgstr "Consumo de energia alocado (Watts)" #: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_import.py:892 -#: netbox/dcim/forms/model_forms.py:1080 netbox/dcim/forms/model_forms.py:1445 -#: netbox/dcim/forms/model_forms.py:1774 netbox/dcim/forms/object_import.py:56 +#: netbox/dcim/forms/model_forms.py:1106 netbox/dcim/forms/model_forms.py:1471 +#: netbox/dcim/forms/model_forms.py:1800 netbox/dcim/forms/object_import.py:56 msgid "Power port" msgstr "Porta de alimentação" @@ -4711,23 +4592,23 @@ msgid "Feed leg" msgstr "Ramal de alimentação" #: netbox/dcim/forms/bulk_edit.py:1112 netbox/dcim/forms/bulk_edit.py:1433 -#: netbox/dcim/forms/filtersets.py:1719 +#: netbox/dcim/forms/filtersets.py:1719 netbox/dcim/ui/panels.py:478 msgid "Management only" msgstr "Somente gerenciamento" #: netbox/dcim/forms/bulk_edit.py:1122 netbox/dcim/forms/bulk_edit.py:1439 #: netbox/dcim/forms/bulk_import.py:985 netbox/dcim/forms/filtersets.py:1643 #: netbox/dcim/forms/filtersets.py:1728 netbox/dcim/forms/object_import.py:91 -#: netbox/dcim/models/device_component_templates.py:462 -#: netbox/dcim/models/device_components.py:839 +#: netbox/dcim/models/device_component_templates.py:452 +#: netbox/dcim/models/device_components.py:839 netbox/dcim/ui/panels.py:480 msgid "PoE mode" msgstr "Modo de Operação" #: netbox/dcim/forms/bulk_edit.py:1128 netbox/dcim/forms/bulk_edit.py:1445 #: netbox/dcim/forms/bulk_import.py:991 netbox/dcim/forms/filtersets.py:1648 #: netbox/dcim/forms/filtersets.py:1733 netbox/dcim/forms/object_import.py:96 -#: netbox/dcim/models/device_component_templates.py:469 -#: netbox/dcim/models/device_components.py:846 +#: netbox/dcim/models/device_component_templates.py:459 +#: netbox/dcim/models/device_components.py:846 netbox/dcim/ui/panels.py:481 msgid "PoE type" msgstr "Tipo de PoE" @@ -4736,36 +4617,26 @@ msgstr "Tipo de PoE" msgid "Wireless role" msgstr "Função do Wireless" -#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:786 -#: netbox/dcim/forms/model_forms.py:1390 netbox/dcim/tables/devices.py:330 -#: netbox/templates/dcim/consoleport.html:24 -#: netbox/templates/dcim/consoleserverport.html:24 -#: netbox/templates/dcim/frontport.html:24 -#: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/modulebay.html:26 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/poweroutlet.html:24 -#: netbox/templates/dcim/powerport.html:24 -#: netbox/templates/dcim/rearport.html:24 +#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:812 +#: netbox/dcim/forms/model_forms.py:1416 netbox/dcim/tables/devices.py:330 +#: netbox/templates/dcim/panels/installed_module.html:9 msgid "Module" msgstr "Módulo" #: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/tables/devices.py:746 -#: netbox/templates/dcim/interface.html:134 +#: netbox/dcim/ui/panels.py:495 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1472 +#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1498 msgid "Virtual device contexts" msgstr "Contextos de dispositivos virtuais" #: netbox/dcim/forms/bulk_edit.py:1424 netbox/dcim/forms/bulk_import.py:819 #: netbox/dcim/forms/bulk_import.py:845 netbox/dcim/forms/filtersets.py:1429 #: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1607 -#: netbox/dcim/tables/devices.py:651 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 -#: netbox/templates/dcim/consoleport.html:40 -#: netbox/templates/dcim/consoleserverport.html:40 +#: netbox/dcim/tables/devices.py:651 netbox/dcim/ui/panels.py:474 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:64 msgid "Speed" msgstr "Velocidade" @@ -4782,7 +4653,7 @@ msgid "Mode" msgstr "Modo" #: netbox/dcim/forms/bulk_edit.py:1461 netbox/dcim/forms/bulk_import.py:1000 -#: netbox/dcim/forms/model_forms.py:1521 netbox/ipam/forms/bulk_import.py:177 +#: netbox/dcim/forms/model_forms.py:1547 netbox/ipam/forms/bulk_import.py:177 #: netbox/ipam/forms/filtersets.py:582 netbox/ipam/models/vlans.py:93 #: netbox/virtualization/forms/bulk_edit.py:205 #: netbox/virtualization/forms/bulk_import.py:184 @@ -4791,16 +4662,15 @@ msgid "VLAN group" msgstr "Grupo de VLANs" #: netbox/dcim/forms/bulk_edit.py:1470 netbox/dcim/forms/bulk_import.py:1007 -#: netbox/dcim/forms/model_forms.py:1527 netbox/dcim/tables/devices.py:616 -#: netbox/templates/dcim/interface.html:91 -#: netbox/virtualization/forms/bulk_edit.py:213 +#: netbox/dcim/forms/model_forms.py:1553 netbox/dcim/tables/devices.py:616 +#: netbox/dcim/ui/panels.py:484 netbox/virtualization/forms/bulk_edit.py:213 #: netbox/virtualization/forms/bulk_import.py:191 #: netbox/virtualization/forms/model_forms.py:331 msgid "Untagged VLAN" msgstr "VLAN Não Tagueada" #: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/bulk_import.py:1014 -#: netbox/dcim/forms/model_forms.py:1536 netbox/dcim/tables/devices.py:622 +#: netbox/dcim/forms/model_forms.py:1562 netbox/dcim/tables/devices.py:622 #: netbox/virtualization/forms/bulk_edit.py:221 #: netbox/virtualization/forms/bulk_import.py:198 #: netbox/virtualization/forms/model_forms.py:340 @@ -4816,30 +4686,29 @@ msgid "Remove tagged VLANs" msgstr "Remover VLANs tagueadas" #: netbox/dcim/forms/bulk_edit.py:1502 netbox/dcim/forms/bulk_import.py:1027 -#: netbox/dcim/forms/model_forms.py:1545 +#: netbox/dcim/forms/model_forms.py:1571 #: netbox/virtualization/forms/bulk_import.py:211 #: netbox/virtualization/forms/model_forms.py:349 msgid "Q-in-Q Service VLAN" msgstr "VLAN de Serviço Q-in-Q" -#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1508 +#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1534 #: netbox/wireless/forms/filtersets.py:26 msgid "Wireless LAN group" msgstr "Grupo da Rede Wireless" -#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1513 -#: netbox/dcim/tables/devices.py:660 netbox/netbox/navigation/menu.py:156 -#: netbox/templates/dcim/interface.html:355 +#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1539 +#: netbox/dcim/tables/devices.py:660 netbox/dcim/ui/panels.py:561 +#: netbox/netbox/navigation/menu.py:156 #: netbox/wireless/tables/wirelesslan.py:20 msgid "Wireless LANs" msgstr "Redes Wireless" #: netbox/dcim/forms/bulk_edit.py:1531 netbox/dcim/forms/filtersets.py:1574 -#: netbox/dcim/forms/model_forms.py:1579 netbox/ipam/forms/bulk_edit.py:227 -#: netbox/ipam/forms/bulk_edit.py:313 netbox/ipam/forms/filtersets.py:191 -#: netbox/netbox/navigation/menu.py:112 -#: netbox/templates/dcim/interface.html:146 -#: netbox/templates/ipam/prefix.html:91 +#: netbox/dcim/forms/model_forms.py:1605 netbox/dcim/ui/panels.py:499 +#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:313 +#: netbox/ipam/forms/filtersets.py:191 netbox/netbox/navigation/menu.py:112 +#: netbox/templates/ipam/panels/prefix_addressing.html:4 #: netbox/virtualization/forms/filtersets.py:218 #: netbox/virtualization/forms/model_forms.py:369 #: netbox/virtualization/ui/panels.py:68 @@ -4847,26 +4716,25 @@ msgid "Addressing" msgstr "Endereçamento" #: netbox/dcim/forms/bulk_edit.py:1532 netbox/dcim/forms/filtersets.py:821 -#: netbox/dcim/forms/model_forms.py:1580 +#: netbox/dcim/forms/model_forms.py:1606 #: netbox/virtualization/forms/model_forms.py:370 msgid "Operation" msgstr "Operação" #: netbox/dcim/forms/bulk_edit.py:1533 netbox/dcim/forms/filtersets.py:1575 -#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1124 -#: netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1150 +#: netbox/dcim/forms/model_forms.py:1608 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1581 -#: netbox/templates/dcim/interface.html:110 -#: netbox/virtualization/forms/bulk_edit.py:237 +#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1607 +#: netbox/dcim/ui/panels.py:491 netbox/virtualization/forms/bulk_edit.py:237 #: netbox/virtualization/forms/model_forms.py:371 msgid "Related Interfaces" msgstr "Interfaces Relacionadas" #: netbox/dcim/forms/bulk_edit.py:1536 netbox/dcim/forms/filtersets.py:1576 -#: netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1611 #: netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/filtersets.py:219 #: netbox/virtualization/forms/model_forms.py:374 @@ -4975,7 +4843,7 @@ msgstr "Site principal" msgid "Rack's location (if any)" msgstr "Localização do rack (se houver)" -#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:331 +#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:357 #: netbox/dcim/tables/racks.py:209 #: netbox/templates/dcim/rackreservation.html:7 msgid "Units" @@ -5058,7 +4926,7 @@ msgid "Assigned platform" msgstr "Plataforma designada" #: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/bulk_import.py:614 -#: netbox/dcim/forms/model_forms.py:651 +#: netbox/dcim/forms/model_forms.py:677 msgid "Virtual chassis" msgstr "Chassi virtual" @@ -5074,7 +4942,7 @@ msgstr "Local designado (se houver)" msgid "Assigned rack (if any)" msgstr "Rack designado (se houver)" -#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:634 msgid "Face" msgstr "Face" @@ -5100,7 +4968,7 @@ msgstr "" msgid "The device in which this module is installed" msgstr "O dispositivo no qual este módulo está instalado" -#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:755 +#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:781 msgid "Module bay" msgstr "Compartimento de módulo" @@ -5112,7 +4980,7 @@ msgstr "O compartimento no qual este módulo está instalado" msgid "The type of module" msgstr "O tipo de módulo" -#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:773 +#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:799 msgid "Replicate components" msgstr "Replicar componentes" @@ -5124,11 +4992,11 @@ msgstr "" "Popular automaticamente os componentes associados a este tipo de módulo " "(ativado por padrão)" -#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:779 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:805 msgid "Adopt components" msgstr "Adotar componentes" -#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:782 +#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:808 msgid "Adopt already existing components" msgstr "Adotar componentes já existentes" @@ -5153,13 +5021,13 @@ msgstr "Porta de alimentação local que alimenta esta tomada" msgid "Electrical phase (for three-phase circuits)" msgstr "Fase (para circuitos trifásicos)" -#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1483 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1509 #: netbox/virtualization/forms/bulk_import.py:168 #: netbox/virtualization/forms/model_forms.py:310 msgid "Parent interface" msgstr "Interface pai" -#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1491 +#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1517 #: netbox/virtualization/forms/bulk_import.py:175 #: netbox/virtualization/forms/model_forms.py:318 msgid "Bridged interface" @@ -5389,6 +5257,7 @@ msgid "Side B name" msgstr "Nome da terminação no lado B" #: netbox/dcim/forms/bulk_import.py:1456 +#: netbox/templates/dcim/panels/connection.html:60 #: netbox/wireless/forms/bulk_import.py:133 msgid "Connection status" msgstr "Status da conexão" @@ -5422,11 +5291,9 @@ msgstr "" "{color} não corresponde a nenhum nome de cor usado e tem mais de seis " "caracteres: hexadecimal inválido." -#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:900 +#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:926 #: netbox/dcim/tables/devices.py:1124 #: netbox/templates/dcim/panels/virtual_chassis_members.html:10 -#: netbox/templates/dcim/virtualchassis.html:17 -#: netbox/templates/dcim/virtualchassis.html:57 msgid "Master" msgstr "Mestre" @@ -5454,9 +5321,8 @@ msgstr "Tipo de alimentação (AC/DC)" msgid "Single or three-phase" msgstr "Monofásico ou trifásico" -#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1875 -#: netbox/dcim/ui/panels.py:108 -#: netbox/templates/dcim/virtualdevicecontext.html:30 +#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1901 +#: netbox/dcim/ui/panels.py:110 netbox/dcim/ui/panels.py:354 #: netbox/virtualization/ui/panels.py:28 msgid "Primary IPv4" msgstr "IPv4 Primário" @@ -5465,9 +5331,8 @@ msgstr "IPv4 Primário" msgid "IPv4 address with mask, e.g. 1.2.3.4/24" msgstr "Endereço IPv4 com máscara, por exemplo, 1.2.3.4/24" -#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1884 -#: netbox/dcim/ui/panels.py:113 -#: netbox/templates/dcim/virtualdevicecontext.html:41 +#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1910 +#: netbox/dcim/ui/panels.py:115 netbox/dcim/ui/panels.py:359 #: netbox/virtualization/ui/panels.py:33 msgid "Primary IPv6" msgstr "IPv6 Primário" @@ -5477,8 +5342,7 @@ msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64" msgstr "Endereço IPv6 com tamanho de prefixo, por exemplo, 2001:db8: :1/64" #: netbox/dcim/forms/common.py:19 netbox/dcim/models/device_components.py:615 -#: netbox/templates/dcim/interface.html:57 -#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/dcim/ui/panels.py:476 netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/ui/panels.py:61 msgid "MTU" msgstr "MTU" @@ -5520,18 +5384,15 @@ msgstr "Não é possível adotar {model} {name} pois já pertence a outro módul msgid "A {model} named {name} already exists" msgstr "Um {model} com nome {name} já existe." -#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:853 +#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:879 #: netbox/dcim/tables/power.py:63 #: netbox/templates/dcim/inc/cable_termination.html:40 -#: netbox/templates/dcim/powerfeed.html:24 -#: netbox/templates/dcim/powerpanel.html:19 #: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "Quadro de Alimentação" -#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:880 -#: netbox/templates/dcim/powerfeed.html:21 -#: netbox/templates/dcim/powerport.html:80 +#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:906 +#: netbox/dcim/views.py:3106 msgid "Power Feed" msgstr "Fontes de Alimentação" @@ -5559,12 +5420,12 @@ msgstr "Contagem de racks" msgid "Function" msgstr "Função" -#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:341 -#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1164 +#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:367 +#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1166 msgid "Reservation" msgstr "Reserva" -#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:390 +#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:416 #: netbox/netbox/views/generic/feature_views.py:97 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" @@ -5587,7 +5448,7 @@ msgstr "Função do subdispositivo" msgid "Module count" msgstr "Contagem de módulos" -#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:548 msgid "Device Role" msgstr "Função do Dispositivo" @@ -5625,16 +5486,9 @@ msgstr "Ocupado" #: netbox/dcim/forms/filtersets.py:1420 netbox/dcim/forms/filtersets.py:1460 #: netbox/dcim/forms/filtersets.py:1500 netbox/dcim/forms/filtersets.py:1535 #: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/tables/devices.py:381 -#: netbox/dcim/tables/devices.py:682 netbox/ipam/tables/vlans.py:174 +#: netbox/dcim/tables/devices.py:682 netbox/dcim/ui/panels.py:377 +#: netbox/dcim/ui/panels.py:516 netbox/ipam/tables/vlans.py:174 #: netbox/templates/circuits/inc/circuit_termination_fields.html:16 -#: netbox/templates/dcim/consoleport.html:55 -#: netbox/templates/dcim/consoleserverport.html:55 -#: netbox/templates/dcim/frontport.html:66 -#: netbox/templates/dcim/interface.html:215 -#: netbox/templates/dcim/powerfeed.html:110 -#: netbox/templates/dcim/poweroutlet.html:73 -#: netbox/templates/dcim/powerport.html:59 -#: netbox/templates/dcim/rearport.html:66 msgid "Connection" msgstr "Conexão" @@ -5650,13 +5504,12 @@ msgstr "Tipo" msgid "Mgmt only" msgstr "Somente gerenciamento" -#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1567 -#: netbox/dcim/models/device_components.py:792 -#: netbox/templates/dcim/interface.html:160 +#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1593 +#: netbox/dcim/models/device_components.py:792 netbox/dcim/ui/panels.py:506 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1653 +#: netbox/dcim/forms/filtersets.py:1653 netbox/dcim/ui/panels.py:482 #: netbox/virtualization/forms/filtersets.py:260 msgid "802.1Q mode" msgstr "Modo 802.1Q" @@ -5673,18 +5526,17 @@ msgstr "Frequência do canal (MHz)" msgid "Channel width (MHz)" msgstr "Largura do canal (MHz)" -#: netbox/dcim/forms/filtersets.py:1680 -#: netbox/templates/dcim/interface.html:96 +#: netbox/dcim/forms/filtersets.py:1680 netbox/dcim/ui/panels.py:485 msgid "Transmit power (dBm)" msgstr "Potência de transmissão (dBm)" #: netbox/dcim/forms/filtersets.py:1751 netbox/dcim/forms/filtersets.py:1795 -#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable.html:12 -#: netbox/templates/dcim/cable_trace.html:46 -#: netbox/templates/dcim/frontport.html:74 +#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/htmx/cable_edit.html:53 #: netbox/templates/dcim/inc/connection_endpoints.html:4 -#: netbox/templates/dcim/rearport.html:74 +#: netbox/templates/dcim/panels/connection.html:14 +#: netbox/templates/dcim/panels/connection.html:51 +#: netbox/templates/dcim/panels/interface_connection.html:13 #: netbox/templates/dcim/trace/cable.html:7 msgid "Cable" msgstr "Cabo" @@ -5724,9 +5576,7 @@ msgstr "Tipo de escopo" #: netbox/ipam/forms/bulk_edit.py:382 netbox/ipam/forms/filtersets.py:195 #: netbox/ipam/forms/model_forms.py:225 netbox/ipam/forms/model_forms.py:603 #: netbox/ipam/forms/model_forms.py:613 netbox/ipam/tables/ip.py:193 -#: netbox/ipam/tables/vlans.py:40 netbox/templates/ipam/prefix.html:48 -#: netbox/templates/ipam/vlangroup.html:38 -#: netbox/virtualization/forms/bulk_edit.py:74 +#: netbox/ipam/tables/vlans.py:40 netbox/virtualization/forms/bulk_edit.py:74 #: netbox/virtualization/forms/filtersets.py:53 #: netbox/virtualization/forms/model_forms.py:73 #: netbox/virtualization/tables/clusters.py:81 @@ -5749,28 +5599,28 @@ msgstr "Tipo de escopo (aplicativo e modelo)" #: netbox/dcim/forms/mixins.py:126 msgid "Scope name" -msgstr "" +msgstr "Nome do escopo" #: netbox/dcim/forms/mixins.py:127 msgid "Name of the assigned scope object (if not using ID)" -msgstr "" +msgstr "Nome do objeto de escopo atribuído (se não estiver usando ID)" #: netbox/dcim/forms/mixins.py:139 msgid "scope_name and scope_id are mutually exclusive." -msgstr "" +msgstr "scope_name e scope_id são mutuamente exclusivos." #: netbox/dcim/forms/mixins.py:143 msgid "scope_type must be specified when using scope_name" -msgstr "" +msgstr "scope_type deve ser especificado ao usar scope_name" #: netbox/dcim/forms/mixins.py:145 msgid "scope_type must be specified when using scope_id" -msgstr "" +msgstr "scope_type deve ser especificado ao usar scope_id" #: netbox/dcim/forms/mixins.py:154 #, python-brace-format msgid "{scope_type} \"{name}\" not found." -msgstr "" +msgstr "{scope_type} “{name}“não encontrado." #: netbox/dcim/forms/mixins.py:162 #, python-brace-format @@ -5778,6 +5628,8 @@ msgid "" "Multiple {scope_type} objects match \"{name}\". Use scope_id to specify the " "intended object." msgstr "" +"Múltiplo {scope_type} objetos coincidem”{name}“. Use scope_id para " +"especificar o objeto pretendido." #: netbox/dcim/forms/mixins.py:180 netbox/dcim/tables/devices.py:260 msgid "Rear ports" @@ -5793,30 +5645,30 @@ msgstr "" "corresponder ao número selecionado de posições de portas traseiras " "({rearport_count})." -#: netbox/dcim/forms/model_forms.py:158 +#: netbox/dcim/forms/model_forms.py:169 msgid "Contact Info" msgstr "Informações de Contato" -#: netbox/dcim/forms/model_forms.py:211 +#: netbox/dcim/forms/model_forms.py:237 msgid "Rack Role" msgstr "Função do Rack" -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:380 -#: netbox/dcim/forms/model_forms.py:551 +#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:406 +#: netbox/dcim/forms/model_forms.py:577 #: netbox/utilities/forms/fields/fields.py:58 msgid "Slug" msgstr "Slug" -#: netbox/dcim/forms/model_forms.py:276 +#: netbox/dcim/forms/model_forms.py:302 msgid "Select a pre-defined rack type, or set physical characteristics below." msgstr "" "Selecione um tipo pré-definido de rack, ou ajuste as características abaixo." -#: netbox/dcim/forms/model_forms.py:284 +#: netbox/dcim/forms/model_forms.py:310 msgid "Inventory Control" msgstr "Controle de Inventário" -#: netbox/dcim/forms/model_forms.py:333 +#: netbox/dcim/forms/model_forms.py:359 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -5824,36 +5676,36 @@ msgstr "" "Lista separada por vírgulas de números de IDs. Um intervalo pode ser " "especificado usando hífen." -#: netbox/dcim/forms/model_forms.py:414 netbox/extras/forms/model_forms.py:603 +#: netbox/dcim/forms/model_forms.py:440 netbox/extras/forms/model_forms.py:603 msgid "Enter a valid JSON schema to define supported attributes." msgstr "Insira um esquema JSON válido para definir os atributos suportados." -#: netbox/dcim/forms/model_forms.py:445 +#: netbox/dcim/forms/model_forms.py:471 msgid "Profile & Attributes" msgstr "Perfis e Atributos" -#: netbox/dcim/forms/model_forms.py:597 netbox/dcim/models/devices.py:579 +#: netbox/dcim/forms/model_forms.py:623 netbox/dcim/models/devices.py:579 msgid "The lowest-numbered unit occupied by the device" msgstr "A unidade mais baixa ocupada pelo dispositivo" -#: netbox/dcim/forms/model_forms.py:662 +#: netbox/dcim/forms/model_forms.py:688 msgid "The position in the virtual chassis this device is identified by" msgstr "A posição no chassi virtual pela qual este dispositivo é identificado" -#: netbox/dcim/forms/model_forms.py:667 +#: netbox/dcim/forms/model_forms.py:693 msgid "The priority of the device in the virtual chassis" msgstr "A prioridade do dispositivo no chassi virtual" -#: netbox/dcim/forms/model_forms.py:776 +#: netbox/dcim/forms/model_forms.py:802 msgid "Automatically populate components associated with this module type" msgstr "" "Popular automaticamente os componentes associados a este tipo de módulo" -#: netbox/dcim/forms/model_forms.py:882 +#: netbox/dcim/forms/model_forms.py:908 msgid "Characteristics" msgstr "Características" -#: netbox/dcim/forms/model_forms.py:1038 +#: netbox/dcim/forms/model_forms.py:1064 #, python-brace-format msgid "" "Alphanumeric ranges are supported for bulk creation. Mixed cases and types " @@ -5868,107 +5720,95 @@ msgstr "" " será automaticamente substituído pelo valor da posição ao criar um novo " "módulo." -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "Modelo da porta de console" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "Modelo da porta do servidor de console" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "Modelo da porta frontal" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "Modelo da interface" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "Modelo da tomada elétrica" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "Modelo da porta de alimentação" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "Modelo da porta traseira" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "Porta de Console" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "Porta do Servidor de Console" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "Porta Frontal" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "Porta Traseira" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "Porta de Alimentação" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "Tomada Elétrica" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "Atribuição de Componentes" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "Um item de inventário só pode ser associado a um único componente." -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "Interface LAG" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "Filtre as VLANs disponíveis para atribuição por grupo." -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "Dispositivo Filho" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -5976,43 +5816,41 @@ msgstr "" "Os dispositivos filhos devem primeiro ser criados e atribuídos ao site e ao " "rack do dispositivo pai." -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "Porta de console" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "Porta do servidor de console" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "Porta frontal" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "Tomada elétrica" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "Porta traseira" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "Item de Inventário" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "Função do Item de Inventário" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "Interface de VM" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -6026,7 +5864,7 @@ msgstr "Interface de VM" msgid "Virtual Machine" msgstr "Máquina Virtual" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "Um endereço MAC só pode ser atribuído a um único objeto." @@ -6050,9 +5888,9 @@ msgstr "" " esperados." #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "Membros" @@ -6254,135 +6092,135 @@ msgstr "" "Um modelo de componente deve estar associado a um tipo de dispositivo ou a " "um tipo de módulo." -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "modelo de porta de console" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "modelos de porta de console" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "modelo de porta de servidor de console" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "modelos de porta de servidor de console" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "consumo máximo" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "consumo alocado" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "modelo de porta de alimentação" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "modelos de porta de alimentação" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "" "O consumo alocado não pode exceder o consumo máximo ({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "ramal de alimentação" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "Fase (para alimentação trifásica)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "modelo de tomada elétrica" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "modelos de tomadas elétricas" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Porta de alimentação principal ({power_port}) deve pertencer ao mesmo tipo " "de dispositivo" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Porta de alimentação principal ({power_port}) deve pertencer ao mesmo tipo " "de módulo" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "somente gerenciamento" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "interface bridge" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "função do wireless" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "modelo de interface" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "modelos de interface" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" "Interface bridge ({bridge}) deve pertencer ao mesmo tipo de dispositivo" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Interface bridge ({bridge}) deve pertencer ao mesmo tipo de módulo" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "" "Portas traseiras ({rear_port}) devem pertencer ao mesmo tipo de dispositivo" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "posições" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "modelo de porta frontal" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "modelos de porta frontal" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " @@ -6391,15 +6229,15 @@ msgstr "" "O número de posições não podem ser menor que o número de modelos de portas " "traseiras mapeadas ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "modelo de porta traseira" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "modelos de porta traseira" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " @@ -6408,33 +6246,33 @@ msgstr "" "O número de posições não pode ser menor que o número de modelos de portas " "frontais mapeadas ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "posição" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "Identificador a ser referenciado ao renomear componentes instalados" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "modelo de compartimento de módulo" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "modelos de compartimento de módulos" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "modelo de compartimento de dispositivos" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "modelos de compartimentos de dispositivos" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -6443,21 +6281,21 @@ msgstr "" "Função do subdispositivo do tipo {device_type} deve ser definido como “pai” " "para permitir compartimentos de dispositivos." -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "ID da peça" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "Identificador da peça, designado pelo fabricante" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "modelo de item de inventário" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "modelos de itens de inventário" @@ -6591,10 +6429,10 @@ msgid "tagged VLANs" msgstr "VLANs tagueadas" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "SVLAN Q-in-Q" @@ -7758,11 +7596,11 @@ msgstr "Adicionar Componentes" msgid "Disconnect Selected" msgstr "Desconexão Selecionada" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "Terminação A" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "Terminação B" @@ -7807,6 +7645,8 @@ msgstr "Nome da Cor" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "Acessível" @@ -7843,7 +7683,7 @@ msgstr "Altura em U" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "Endereço IP" @@ -7892,16 +7732,14 @@ msgid "Power outlets" msgstr "Tomadas elétricas" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7934,18 +7772,17 @@ msgid "Device Site" msgstr "Site do Dispositivo" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Compartimento de módulo" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "Itens de Inventário" @@ -7969,13 +7806,13 @@ msgstr "Consumo máximo (W)" msgid "Allocated draw (W)" msgstr "Consumo alocado (W)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "Endereços IP" @@ -7983,18 +7820,18 @@ msgstr "Endereços IP" msgid "Primary MAC" msgstr "MAC Primário" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "Endereços MAC" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Grupos FHRP" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -8003,7 +7840,6 @@ msgid "Tunnel" msgstr "Túnel" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Somente Gerenciamento" @@ -8011,7 +7847,7 @@ msgstr "Somente Gerenciamento" msgid "VDCs" msgstr "Contextos de Dispositivos Virtuais" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "Circuito Virtual" @@ -8020,7 +7856,7 @@ msgstr "Circuito Virtual" msgid "Mappings" msgstr "Mapeamentos" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "Dispositivo Instalado" @@ -8044,7 +7880,7 @@ msgstr "Serial Instalado" msgid "Installed Asset Tag" msgstr "Etiqueta de ativo instalada" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "Módulo Instalado" @@ -8061,7 +7897,6 @@ msgid "Module Status" msgstr "Status do Módulo" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "Componente" @@ -8079,7 +7914,7 @@ msgstr "Tipos de Racks" msgid "Device Types" msgstr "Tipos de Dispositivos" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "Tipos de Módulos" @@ -8102,8 +7937,8 @@ msgstr "Full-Depth" msgid "Device Count" msgstr "Contagem de Dispositivos" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -8113,8 +7948,8 @@ msgstr "Contagem de Dispositivos" msgid "Console Ports" msgstr "Portas de Console" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -8124,8 +7959,8 @@ msgstr "Portas de Console" msgid "Console Server Ports" msgstr "Portas de Servidor de Console" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -8135,8 +7970,8 @@ msgstr "Portas de Servidor de Console" msgid "Power Ports" msgstr "Portas de Alimentação" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -8146,8 +7981,8 @@ msgstr "Portas de Alimentação" msgid "Power Outlets" msgstr "Tomadas Elétricas" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -8156,8 +7991,8 @@ msgstr "Tomadas Elétricas" msgid "Front Ports" msgstr "Portas Frontais" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -8167,16 +8002,16 @@ msgstr "Portas Frontais" msgid "Rear Ports" msgstr "Portas Traseiras" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Compartimentos de Dispositivos" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8191,11 +8026,10 @@ msgid "Module Count" msgstr "Contagem de Módulos" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Fontes de Alimentação" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "Utilização Máxima" @@ -8210,7 +8044,7 @@ msgid "Racks" msgstr "Racks" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Altura" @@ -8258,85 +8092,123 @@ msgstr "Grupos de VLANs" msgid "Test case must set peer_termination_type" msgstr "O caso de teste deve definir peer_termination_type" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} milímetros" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "Número de série" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "Peso máximo" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "Gestão" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "IP Out-of-band" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "Pai/filho" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "Nome do modelo" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "Item principal" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "Part ID" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "Dispositivo conectado" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "Utilização (alocada)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "Características Elétricas" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{} V" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{} UM" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "Primário para interface" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "Membros do Chassi Virtual" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "Utilização de Energia" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "Tradução de VLAN" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "Desconectado {count} {type}" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "Regiões Filhas" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "Grupos Filhos" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "Dispositivos Não Montados em Rack" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "Locais Filhos" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "Reservas" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "Funções dos Dispositivos Filhos" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "Plataformas Filhas" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "Serviços de Aplicação" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8344,42 +8216,70 @@ msgstr "Serviços de Aplicação" msgid "Config Context" msgstr "Contexto de Configuração" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "Renderização de Configuração" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "Máquinas Virtuais" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "Contextos de Dispositivos Virtuais" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "VLANs" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "Membros do LAG" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "Tradução de VLAN" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "Interfaces em bridge" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "Interfaces Filhas" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Dispositivo instalado {device} no compartimento {device_bay}." -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Dispositivo {device} removido do compartimento {device_bay}." -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "Filhos" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "Membro {device} adicionado" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" "Não é possível remover o dispositivo principal {device} do chassi virtual." -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Removido {device} do chassi virtual {chassis}" @@ -8475,10 +8375,9 @@ msgstr "Sim" msgid "No" msgstr "Não" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "Link" @@ -8939,15 +8838,6 @@ msgstr "Um ou mais tipos de objetos associados" msgid "Field data type (e.g. text, integer, etc.)" msgstr "Tipo de campo de dados (por exemplo, texto, número inteiro etc.)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "Tipo de objeto" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "Tipo de objeto (para campos de objeto ou de multiobjetos)" @@ -9052,7 +8942,7 @@ msgstr "A classificação da entrada" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -9078,15 +8968,14 @@ msgstr "Nomes de usuários separados por vírgulas, envoltos por aspas duplas." #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "Grupos" @@ -9112,13 +9001,6 @@ msgstr "Tipo de campo" msgid "Choices" msgstr "Escolhas" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "Dados" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10424,17 +10306,6 @@ msgstr "Extensão do arquivo" msgid "As Attachment" msgstr "Como Anexo" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "Arquivo de Dados" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10450,9 +10321,8 @@ msgstr "Imagem" msgid "Filename" msgstr "Nome do Arquivo" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "Tamanho" @@ -10505,6 +10375,7 @@ msgid "Please try reconfiguring the widget, or remove it from your dashboard." msgstr "Tente reconfigurar o widget ou removê-lo do seu painel." #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10649,7 +10520,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "Texto sem formatação" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "Serviço" @@ -10712,7 +10583,6 @@ msgstr "Exportando L2VPN (identificador)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "Prefixo" @@ -10762,7 +10632,6 @@ msgstr "Número da VLAN (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "Endereço" @@ -10819,7 +10688,7 @@ msgstr "Grupo FHRP (ID)" msgid "IP address (ID)" msgstr "Endereço IP (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "Endereço IP" @@ -10886,8 +10755,8 @@ msgstr "É privado" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "RIR" @@ -10898,15 +10767,13 @@ msgstr "Data da adição" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Grupo de VLANs" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10921,7 +10788,7 @@ msgid "Prefix length" msgstr "Comprimento do prefixo" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "É um pool" @@ -10940,23 +10807,21 @@ msgstr "Atribuição de VLAN" msgid "Treat as populated" msgstr "Trate como populado" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "Nome DNS" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protocolo" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "ID do Grupo" @@ -10977,9 +10842,8 @@ msgid "Authentication key" msgstr "Chave de autenticação" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -11008,23 +10872,22 @@ msgstr "Site e Grupo" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "Política" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "Portas" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "Import route targets" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "Export route targets" @@ -11054,7 +10917,6 @@ msgstr "ID do Escopo" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "Grupo FHRP" @@ -11167,7 +11029,7 @@ msgid "Exported by VRF" msgstr "Exportado pela VRF" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "Privado" @@ -11176,7 +11038,7 @@ msgstr "Privado" msgid "Address family" msgstr "Família de endereços" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "Faixa" @@ -11204,18 +11066,10 @@ msgstr "Dispositivo/VM" msgid "Parent Prefix" msgstr "Prefixo Pai" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "Nome DNS" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLANs" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "Contém ID de VLAN" @@ -11233,26 +11087,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Q-in-Q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "ID da VLAN" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "Route Target" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "Agregado" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "Intervalo de ASN" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "Faixa de IP" @@ -11305,8 +11157,7 @@ msgstr "Endereço IP Virtual" msgid "Assignment already exists" msgstr "A atribuição já existe" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "IDs de VLAN" @@ -11325,7 +11176,6 @@ msgstr "" "essa finalidade." #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "Regra de Tradução de VLAN" @@ -11338,7 +11188,6 @@ msgstr "" "pode ser especificado usando hífen." #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "Modelo de Serviço de Aplicação" @@ -11514,7 +11363,7 @@ msgid "All IP addresses within this prefix are considered usable" msgstr "" "Todos os endereços IP dentro deste prefixo são considerados utilizáveis" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "marcar utilizado" @@ -11526,12 +11375,12 @@ msgstr "prefixos" msgid "Cannot create prefix with /0 mask." msgstr "Não é possível criar prefixo com a máscara /0." -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "tabela global" @@ -11540,129 +11389,129 @@ msgstr "tabela global" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Prefixo duplicado encontrado em {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "endereço inicial" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "Endereço IPv4 ou IPv6 (com máscara)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "endereço final" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "Status operacional desta faixa" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "A função principal desta faixa" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "marcar populado" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "Impedir a criação de endereços IP dentro desse intervalo" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "Reportar espaço como totalmente utilizado" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "Faixa de IP" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "Faixas de IP" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "Endereços IP inicial e final devem ter a mesma versão" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "Máscaras de endereço IP inicial e final precisam ser iguais" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" "O endereço final deve ser maior que o endereço inicial ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Endereços definidos se sobrepõem com a faixa {overlapping_range} em VRF " "{vrf}" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "Faixa definida excede o tamanho máximo suportado ({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "endereço" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "O status operacional deste IP" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "O papel funcional deste IP" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (interno)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "O IP para o qual este endereço é o IP “externo”" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Hostname ou FQDN (não diferencia maiúsculas de minúsculas)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "Endereços IP" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "Não é possível criar endereço IP com máscara /0." -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip} é um ID de rede, que não pode ser atribuído a uma interface." -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "" "{ip} é um endereço de broadcast, que não pode ser atribuído a uma interface." -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Endereço IP duplicado encontrado em {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "Não é possível criar o endereço IP {ip} dentro do intervalo {range}." -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -11670,7 +11519,7 @@ msgstr "" "Não é possível reatribuir o endereço IP enquanto ele estiver designado como " "o IP primário do objeto pai" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" @@ -11678,7 +11527,7 @@ msgstr "" "Não é possível reatribuir o endereço IP enquanto ele estiver designado como " "IP Out-of-band para o objeto pai" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Somente endereços IPv6 podem receber o status SLAAC" @@ -11873,17 +11722,17 @@ msgid "Added" msgstr "Adicionado" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "Prefixos" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "Utilização" @@ -11910,7 +11759,7 @@ msgid "Pool" msgstr "Pool" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "Marcado como Utilizado" @@ -11918,7 +11767,7 @@ msgstr "Marcado como Utilizado" msgid "Start address" msgstr "Endereço inicial" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "Marcado como Populado" @@ -11948,17 +11797,14 @@ msgid "VID" msgstr "VLAN ID" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "Regras" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "VID Local" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "VID Remoto" @@ -11978,16 +11824,71 @@ msgstr "Import Targets" msgid "Export Targets" msgstr "Export Targets" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "Criar Grupo" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Atribuir Grupo" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "Route Distinguisher" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "Espaço de IP exclusivo" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "Número do AS" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Família" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "Data Adicionada" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "Endereço Inicial" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "Endereço Final" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (externo)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "IP primário" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "LÁBIO DE PEITOS" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "Tipo de Autenticação" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "Chave de Autenticação" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Função Q-in-Q" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "VLANs do Cliente" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "Adicionar uma VLAN" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -12025,26 +11926,79 @@ msgstr "" "Somente caracteres alfanuméricos, asteriscos, hífens, pontos e sublinhados " "são permitidos em nomes DNS" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "Interfaces de dispositivos" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "Interfaces de Máquina Virtual" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "Importando VRFs" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "Exportando VRFs" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "Importando L2VPNs" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "Exportando L2VPNs" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "Prefixos duplicados" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "Prefixos parentais" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "Prefixos Filhos" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "Intervalos Filhos" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "IPs duplicados" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "Serviços de aplicativos" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "IPs relacionados" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "Regras de tradução de VLAN" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "Adicionar Regra" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "Endereços IP virtuais" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "Adicionar Endereço IP" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "Adicionar um Prefixo" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "Este campo pode não estar em branco." @@ -12552,7 +12506,6 @@ msgid "Contact Groups" msgstr "Grupos de Contatos" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Funções dos Contatos" @@ -12572,11 +12525,6 @@ msgstr "Elevações" msgid "Modules" msgstr "Módulos" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "Contextos de Dispositivos Virtuais" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "Perfis de Tipos de Módulos" @@ -12590,12 +12538,11 @@ msgid "Device Components" msgstr "Componentes de Dispositivos" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Funções dos Itens de Inventário" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "Conexões" @@ -12636,7 +12583,6 @@ msgid "VLAN Translation Policies" msgstr "Políticas de Tradução de VLAN" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "Regras de Tradução de VLAN" @@ -12715,7 +12661,6 @@ msgid "Circuit Terminations" msgstr "Terminações de Circuitos" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "Circuitos Virtuais" @@ -12731,18 +12676,11 @@ msgstr "Terminações de Circuito Virtual" msgid "Circuit Groups" msgstr "Grupos de Circuitos" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "Atribuições do Grupo" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "Provedores" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Contas de Provedores" @@ -12838,7 +12776,7 @@ msgid "Journal Entries" msgstr "Registros de Eventos" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Changelog" @@ -12891,6 +12829,7 @@ msgstr "Tarefas em Background" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12909,8 +12848,9 @@ msgstr "Clonar" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -12922,8 +12862,9 @@ msgstr "Editar" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -13196,7 +13137,7 @@ msgstr "Plugin Dummy" msgid "Copy" msgstr "Copiar" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -13204,11 +13145,19 @@ msgstr "" "Opção de decodificação inválida: {decoding}! Escolha entre uma das opções " "{image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" +"Valor inválido de max_items: {max_items}! Deve ser um número inteiro " +"positivo ou Nenhum." + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "Coordenadas GPS" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "Objetos Relacionados" @@ -13483,8 +13432,7 @@ msgid "Account Details" msgstr "Detalhes da Conta" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "E-mail" @@ -13506,16 +13454,15 @@ msgid "Assigned Groups" msgstr "Grupos Associados" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13590,55 +13537,21 @@ msgstr "Código-Fonte" msgid "Community" msgstr "Comunidade" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "Data de Ativação" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "Data de Desativação" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "Troca das Terminações dos Circuitos" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "Trocar as terminações do circuito %(circuit)s?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "Lado A" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Lado Z" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "Atribuir Circuito" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "Atribuição do Grupo de Circuitos" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "Adicionar Circuito" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "Tipo de circuito" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "Ponto de terminação" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "Marcado como conectado" @@ -13648,13 +13561,14 @@ msgstr "para" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "Rastrear" @@ -13668,37 +13582,30 @@ msgstr "Remover cabo" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "Desconectar" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "Conectar" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "Downstream" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "Upstream" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "Conexão Cruzada" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "Patch Panel/Porta" @@ -13706,39 +13613,10 @@ msgstr "Patch Panel/Porta" msgid "Add circuit" msgstr "Adicionar circuito" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "Conta de Provedor" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "Adicionar um Circuito Virtual" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "Adicionar Terminação" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "Terminação de Circuito Virtual" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "Adicionar Circuito Virtual" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "Tipo de Circuito Virtual" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "Dados de Configuração" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "Comentário" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13761,31 +13639,11 @@ msgstr "Novo Valor" msgid "Changed" msgstr "Alterado" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "bytes" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "Hash SHA256" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "Conteúdo" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "Última sincronização" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "Backend" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "Nenhum parâmetro definido" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "Elevações de rack" @@ -13844,71 +13702,11 @@ msgstr "O arquivo de dados associado a este objeto foi excluído" msgid "Data Synced" msgstr "Dados Sincronizados" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "Tarefa" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "Criado Por" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "Agendamento" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "a cada %(interval)s minuto(s)" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "Alteração" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "Diferença" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "Anterior" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "Próximo" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "Objeto Criado" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "Objeto Excluído" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "Sem Alterações" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "Dados Pré-Alteração" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Aviso: Comparando alteração não atômica com o registro de alteração anterior" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "Dados Pós-Alteração" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Visualizar %(count)s Alterações" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -13924,6 +13722,60 @@ msgstr "dias" msgid "Indefinite" msgstr "Indefinido" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "Comentário" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "Dados de Configuração" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "Nenhum parâmetro definido" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "Diferença" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "Anterior" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "Próximo" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "Objeto Criado" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "Objeto Excluído" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "Sem Alterações" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "Dados Pós-Alteração" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "Dados Pré-Alteração" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Aviso: Comparando alteração não atômica com o registro de alteração anterior" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Visualizar %(count)s Alterações" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "Não instalado" @@ -14212,22 +14064,13 @@ msgstr "Segmentos" msgid "Incomplete" msgstr "Incompleto" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "Não Conectado" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT para" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "NAT" @@ -14235,7 +14078,7 @@ msgstr "NAT" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "Copiar para área de transferência" @@ -14285,10 +14128,6 @@ msgstr "Remover" msgid "Local Config Context Data" msgstr "Dados de Contexto de Configuração Local" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "Compartimento de Dispositivos" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -14316,34 +14155,6 @@ msgstr "Compartimento" msgid "Add Device" msgstr "Adicionar Dispositivo" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "Posições" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "Marcado como Conectado" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "Status da Conexão" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "Mapeamentos de Portas" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "Nenhum mapeamento definido" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "Lado A" @@ -14369,6 +14180,8 @@ msgid "Path Status" msgstr "Status do Caminho" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "Não Acessível" @@ -14377,8 +14190,6 @@ msgid "Path Endpoints" msgstr "Endpoints do Caminho" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "Não conectado" @@ -14424,94 +14235,10 @@ msgstr "Elevação de rack" msgid "Loading..." msgstr "Carregando..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "Adicionar Interface Filha" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "Velocidade/Duplex" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "Modo do PoE" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "Tipo de PoE" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "Interfaces em bridge" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "Tradução de VLAN" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "Link Wireless" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "Canal" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "Frequência do Canal" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "MHz" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "Largura do Canal" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "Adicionar Endereço IP" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "Adicionar Endereço MAC" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "Item Pai" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "Part ID" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "Etiqueta de Ativo" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "Primário para interface" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "Adicionar Tipo de Dispositivo" @@ -14520,6 +14247,64 @@ msgstr "Adicionar Tipo de Dispositivo" msgid "Add Module Type" msgstr "Adicionar Tipo de Módulo" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "Status do caminho" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "Pontos finais do caminho" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "Não Conectado" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "Mapeamentos de Portas" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "Nenhum mapeamento definido" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "Link Wireless" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "Canal" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "Frequência do canal" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "MHz" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "Largura do canal" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "Nenhum perfil atribuído" @@ -14539,7 +14324,7 @@ msgstr "Alocado" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "VA" @@ -14563,44 +14348,6 @@ msgstr "Somente imagens" msgid "Labels only" msgstr "Somente rótulos" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "Dispositivo Conectado" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "Utilização (Alocada)" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "Características Elétricas" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "A" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "Ramal de Alimentação" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "Adicionar Fontes de Alimentação" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "Consumo Máximo" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "Consumo Alocado" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "Adicionar reserva" @@ -14640,10 +14387,6 @@ msgstr "Adicionar Site" msgid "Attachment" msgstr "Anexo" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "Adicionar Membro" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14695,10 +14438,6 @@ msgstr "" "Tem certeza de que deseja remover %(device)s do chassi " "virtual %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "Identificador" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -15038,6 +14777,10 @@ msgstr "" msgid "Journal Entry" msgstr "Registro de Evento" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "Criado Por" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "Grupo de Notificação" @@ -15533,37 +15276,15 @@ msgstr "Logout" msgid "Log In" msgstr "Login" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Família" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "Data Adicionada" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "Adicionar Prefixo" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "Número do AS" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "Tipo de Autenticação" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "Chave de Autenticação" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "Endereços IP Virtuais" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "Global" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15598,15 +15319,6 @@ msgstr "Mostrar Disponível" msgid "Show All" msgstr "Mostrar Tudo" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "Global" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (externo)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "Atribuir um Endereço IP" @@ -15623,51 +15335,43 @@ msgstr "Resultados da Pesquisa" msgid "Bulk Add IP Addresses" msgstr "Adicionar Endereços IP em Massa" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "Endereço Inicial" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "Endereço Final" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "Detalhes do Endereçamento" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "Marcado como totalmente utilizado" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "IPs Filhos" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "IPs Disponíveis" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "Primeiro IP disponível" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "Detalhes do Prefixo" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "Endereço de Rede" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "Máscara de Rede" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "Máscara Curinga" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "Endereço de Broadcast" @@ -15679,58 +15383,14 @@ msgstr "Adicionar Faixa de IP" msgid "Hide Depth Indicators" msgstr "Ocultar Indicadores de Profundidade" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "Adicionar Agregado" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "Importando VRFs" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "Exportando VRFs" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "Importando L2VPNs" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "Exportando L2VPNs" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Função Q-in-Q" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "Adicionar um Prefixo" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "VLANs do Cliente" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "Adicionar uma VLAN" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "Adicionar VLAN" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "Adicionar Regra" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "Route Distinguisher" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "Espaço de IP exclusivo" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15799,61 +15459,14 @@ msgstr "" "Clique aqui para tentar carregar o NetBox " "novamente." -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "Contato" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "Título" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "Telefone" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "Grupo de Contatos" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "Adicionar Grupo de Contato" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "Função dos Contatos" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "Adicionar um contato" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "Adicionar Inquilino" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "Grupo de Inquilinos" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "Adicionar Grupo de Inquilinos" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -15964,16 +15577,28 @@ msgstr "Política de IPsec" msgid "PFS Group" msgstr "Grupo PFS" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "Adicionar Terminação" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "Adicionar Túnel" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "Frequência do Canal" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "MHz" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "Largura do Canal" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "Adicionar Rede Wireless" @@ -16008,6 +15633,20 @@ msgstr "Função do contato (ID)" msgid "Contact role (slug)" msgstr "Função do contato (slug)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "Contato" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "Função dos Contatos" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "Grupo de contatos" @@ -16040,6 +15679,15 @@ msgstr "Adicionar grupos" msgid "Remove groups" msgstr "Remover grupos" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "Título" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "Telefone" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -16052,6 +15700,17 @@ msgstr "" msgid "Assigned contact" msgstr "Contato atribuído" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "Grupo de Inquilinos" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "Grupo de Contatos" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "grupo de contatos" @@ -16153,6 +15812,14 @@ msgstr "Link de Contato" msgid "Contact Description" msgstr "Descrição do Contato" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "Adicionar Grupo de Inquilinos" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "Adicionar Grupo de Contato" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -17440,10 +17107,6 @@ msgstr "Adicionado(s) {count} dispositivo(s) para agrupar {cluster}" msgid "Assigned VLANs" msgstr "VLANs Atribuídas" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "Interfaces Filhas" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPsec - Transporte" diff --git a/netbox/translations/ru/LC_MESSAGES/django.mo b/netbox/translations/ru/LC_MESSAGES/django.mo index b61b82f0124c4166a1784ccc61ca901cfba28067..f9a56d948f549f798642b63c877e66bc6294480f 100644 GIT binary patch delta 76290 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 diff --git a/netbox/translations/ru/LC_MESSAGES/django.po b/netbox/translations/ru/LC_MESSAGES/django.po index 26f86c9e5..dd9670725 100644 --- a/netbox/translations/ru/LC_MESSAGES/django.po +++ b/netbox/translations/ru/LC_MESSAGES/django.po @@ -12,10 +12,10 @@ # Alexander Ryazanov (alryaz) , 2024 # Vladyslav V. Prodan, 2024 # dropclient, 2025 -# Artem Kotik, 2025 # Elena Mishina, 2025 # Michael Tatarinov, 2025 # Alevtina Karashokova, 2025 +# Artem Kotik, 2026 # Jeremy Stretch, 2026 # #, fuzzy @@ -23,7 +23,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-14 05:18+0000\n" +"POT-Creation-Date: 2026-03-31 05:31+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2026\n" "Language-Team: Russian (https://app.transifex.com/netbox-community/teams/178115/ru/)\n" @@ -58,9 +58,9 @@ msgstr "Ваш пароль успешно изменен." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 #: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204 -#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1933 -#: netbox/dcim/choices.py:1991 netbox/dcim/choices.py:2058 -#: netbox/dcim/choices.py:2080 netbox/virtualization/choices.py:20 +#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1954 +#: netbox/dcim/choices.py:2012 netbox/dcim/choices.py:2079 +#: netbox/dcim/choices.py:2101 netbox/virtualization/choices.py:20 #: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18 #: netbox/vpn/choices.py:281 msgid "Planned" @@ -74,8 +74,8 @@ msgstr "Выделение ресурсов" #: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22 #: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155 #: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256 -#: netbox/dcim/choices.py:1990 netbox/dcim/choices.py:2057 -#: netbox/dcim/choices.py:2079 netbox/extras/tables/tables.py:642 +#: netbox/dcim/choices.py:2011 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:2100 netbox/extras/tables/tables.py:642 #: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49 #: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154 #: netbox/templates/extras/configcontext.html:29 @@ -87,8 +87,8 @@ msgid "Active" msgstr "Активный" #: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202 -#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:1989 -#: netbox/dcim/choices.py:2059 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:2010 +#: netbox/dcim/choices.py:2080 netbox/dcim/choices.py:2099 #: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44 msgid "Offline" msgstr "Не в сети" @@ -101,8 +101,9 @@ msgstr "Выделение резервов" msgid "Decommissioned" msgstr "Списан" -#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2002 -#: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:153 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2023 +#: netbox/dcim/tables/devices.py:1208 +#: netbox/templates/dcim/interface/attrs/mac_address.html:3 #: netbox/tenancy/choices.py:17 msgid "Primary" msgstr "Начальное" @@ -121,7 +122,8 @@ msgid "Inactive" msgstr "Неактивный" #: netbox/circuits/choices.py:107 netbox/dcim/tables/devices.py:714 -#: netbox/templates/dcim/interface.html:293 netbox/vpn/choices.py:63 +#: netbox/templates/dcim/panels/interface_wireless.html:12 +#: netbox/vpn/choices.py:63 msgid "Peer" msgstr "Peer" @@ -197,9 +199,9 @@ msgstr "Группа площадок (подстрока)" #: netbox/dcim/forms/filtersets.py:1172 netbox/dcim/forms/filtersets.py:1268 #: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:2024 #: netbox/dcim/forms/filtersets.py:2048 netbox/dcim/forms/filtersets.py:2072 -#: netbox/dcim/forms/model_forms.py:155 netbox/dcim/forms/model_forms.py:183 -#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:570 -#: netbox/dcim/forms/model_forms.py:839 netbox/dcim/forms/object_create.py:294 +#: netbox/dcim/forms/model_forms.py:166 netbox/dcim/forms/model_forms.py:209 +#: netbox/dcim/forms/model_forms.py:280 netbox/dcim/forms/model_forms.py:596 +#: netbox/dcim/forms/model_forms.py:865 netbox/dcim/forms/object_create.py:294 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:26 #: netbox/dcim/tables/power.py:90 netbox/dcim/tables/racks.py:111 #: netbox/dcim/tables/racks.py:194 netbox/dcim/tables/sites.py:102 @@ -210,7 +212,6 @@ msgstr "Группа площадок (подстрока)" #: netbox/ipam/tables/vlans.py:90 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:36 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/ipam/vlan.html:23 #: netbox/templates/ipam/vlan_edit.html:52 #: netbox/virtualization/forms/bulk_edit.py:95 #: netbox/virtualization/forms/bulk_import.py:60 @@ -242,7 +243,6 @@ msgstr "ASN (ID)" #: netbox/circuits/filtersets.py:85 netbox/circuits/forms/filtersets.py:42 #: netbox/ipam/forms/model_forms.py:162 netbox/ipam/models/asns.py:137 #: netbox/ipam/models/asns.py:154 netbox/ipam/tables/asn.py:51 -#: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" @@ -339,14 +339,12 @@ msgstr "Поиск" #: netbox/circuits/forms/filtersets.py:232 #: netbox/circuits/forms/filtersets.py:259 #: netbox/circuits/forms/filtersets.py:306 -#: netbox/circuits/forms/model_forms.py:139 -#: netbox/circuits/forms/model_forms.py:162 -#: netbox/circuits/forms/model_forms.py:260 +#: netbox/circuits/forms/model_forms.py:168 +#: netbox/circuits/forms/model_forms.py:191 +#: netbox/circuits/forms/model_forms.py:289 #: netbox/circuits/tables/circuits.py:103 #: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 -#: netbox/templates/circuits/circuit.html:15 -#: netbox/templates/circuits/circuitgroupassignment.html:30 -#: netbox/templates/circuits/circuittermination.html:19 +#: netbox/templates/circuits/panels/circuit_termination.html:7 #: netbox/templates/dcim/inc/cable_termination.html:62 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -404,11 +402,9 @@ msgstr "Тип виртуального канала (slug)" #: netbox/circuits/forms/bulk_import.py:248 #: netbox/circuits/forms/filtersets.py:384 #: netbox/circuits/forms/filtersets.py:390 -#: netbox/circuits/forms/model_forms.py:338 -#: netbox/circuits/forms/model_forms.py:353 +#: netbox/circuits/forms/model_forms.py:367 +#: netbox/circuits/forms/model_forms.py:382 #: netbox/circuits/tables/virtual_circuits.py:84 -#: netbox/templates/circuits/virtualcircuit.html:20 -#: netbox/templates/circuits/virtualcircuittermination.html:38 msgid "Virtual circuit" msgstr "Виртуальный канал" @@ -421,12 +417,12 @@ msgstr "Интерфейс (ID)" #: netbox/circuits/forms/bulk_edit.py:48 #: netbox/circuits/forms/filtersets.py:68 #: netbox/circuits/forms/model_forms.py:48 -#: netbox/circuits/tables/providers.py:32 netbox/dcim/forms/bulk_edit.py:134 -#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/model_forms.py:142 -#: netbox/dcim/tables/sites.py:74 netbox/ipam/models/asns.py:155 -#: netbox/ipam/tables/asn.py:37 netbox/ipam/views.py:270 -#: netbox/netbox/navigation/menu.py:182 netbox/netbox/navigation/menu.py:185 -#: netbox/templates/circuits/provider.html:23 +#: netbox/circuits/tables/providers.py:32 netbox/circuits/ui/panels.py:92 +#: netbox/dcim/forms/bulk_edit.py:134 netbox/dcim/forms/filtersets.py:225 +#: netbox/dcim/forms/model_forms.py:142 netbox/dcim/tables/sites.py:74 +#: netbox/ipam/models/asns.py:155 netbox/ipam/tables/asn.py:37 +#: netbox/ipam/views.py:365 netbox/netbox/navigation/menu.py:182 +#: netbox/netbox/navigation/menu.py:185 msgid "ASNs" msgstr "ASN" @@ -446,9 +442,9 @@ msgstr "ASN" #: netbox/circuits/forms/filtersets.py:349 #: netbox/circuits/forms/filtersets.py:385 #: netbox/circuits/forms/filtersets.py:408 -#: netbox/circuits/forms/model_forms.py:65 -#: netbox/circuits/forms/model_forms.py:80 -#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:90 +#: netbox/circuits/forms/model_forms.py:109 +#: netbox/circuits/forms/model_forms.py:140 #: netbox/circuits/tables/circuits.py:56 #: netbox/circuits/tables/circuits.py:107 #: netbox/circuits/tables/circuits.py:192 @@ -456,22 +452,14 @@ msgstr "ASN" #: netbox/circuits/tables/providers.py:95 #: netbox/circuits/tables/virtual_circuits.py:46 #: netbox/circuits/tables/virtual_circuits.py:89 -#: netbox/templates/circuits/circuit.html:18 -#: netbox/templates/circuits/circuitgroupassignment.html:26 -#: netbox/templates/circuits/circuittermination.html:25 -#: netbox/templates/circuits/provider.html:20 -#: netbox/templates/circuits/provideraccount.html:20 -#: netbox/templates/circuits/providernetwork.html:20 -#: netbox/templates/circuits/virtualcircuit.html:23 -#: netbox/templates/circuits/virtualcircuittermination.html:26 +#: netbox/templates/circuits/panels/circuit_termination.html:11 #: netbox/templates/dcim/inc/cable_termination.html:58 -#: netbox/templates/dcim/interface.html:184 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:7 msgid "Provider" msgstr "Провайдер" #: netbox/circuits/forms/bulk_edit.py:86 -#: netbox/circuits/forms/filtersets.py:106 -#: netbox/templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/filtersets.py:106 netbox/circuits/ui/panels.py:106 msgid "Service ID" msgstr "Идентификатор Службы" @@ -490,12 +478,7 @@ msgstr "Идентификатор Службы" #: netbox/dcim/tables/devicetypes.py:214 netbox/dcim/tables/devicetypes.py:255 #: netbox/dcim/tables/devicetypes.py:274 netbox/dcim/tables/racks.py:30 #: netbox/extras/forms/bulk_edit.py:306 netbox/extras/tables/tables.py:552 -#: netbox/netbox/ui/attrs.py:194 netbox/templates/circuits/circuittype.html:30 -#: netbox/templates/circuits/virtualcircuittype.html:30 -#: netbox/templates/dcim/cable.html:44 netbox/templates/dcim/frontport.html:40 -#: netbox/templates/dcim/inventoryitemrole.html:26 -#: netbox/templates/dcim/poweroutlet.html:48 -#: netbox/templates/dcim/rearport.html:40 netbox/templates/extras/tag.html:26 +#: netbox/netbox/ui/attrs.py:213 netbox/templates/extras/tag.html:26 msgid "Color" msgstr "Цвет" @@ -529,27 +512,14 @@ msgstr "Цвет" #: netbox/dcim/forms/filtersets.py:1602 netbox/dcim/forms/filtersets.py:1707 #: netbox/dcim/forms/filtersets.py:1756 netbox/dcim/forms/filtersets.py:1775 #: netbox/dcim/forms/filtersets.py:1799 netbox/dcim/forms/filtersets.py:1818 -#: netbox/dcim/forms/model_forms.py:820 netbox/dcim/forms/model_forms.py:826 +#: netbox/dcim/forms/model_forms.py:846 netbox/dcim/forms/model_forms.py:852 #: netbox/dcim/forms/object_import.py:85 #: netbox/dcim/forms/object_import.py:114 #: netbox/dcim/forms/object_import.py:127 netbox/dcim/tables/devices.py:182 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 #: netbox/extras/forms/bulk_import.py:48 netbox/extras/tables/tables.py:510 #: netbox/extras/tables/tables.py:578 netbox/netbox/tables/tables.py:339 -#: netbox/templates/circuits/circuit.html:30 -#: netbox/templates/circuits/virtualcircuit.html:39 -#: netbox/templates/circuits/virtualcircuittermination.html:64 -#: netbox/templates/core/datasource.html:38 -#: netbox/templates/dcim/cable.html:15 -#: netbox/templates/dcim/consoleport.html:36 -#: netbox/templates/dcim/consoleserverport.html:36 -#: netbox/templates/dcim/frontport.html:36 -#: netbox/templates/dcim/interface.html:46 -#: netbox/templates/dcim/interface.html:244 -#: netbox/templates/dcim/powerfeed.html:32 -#: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 -#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/dcim/panels/interface_connection.html:68 #: netbox/templates/extras/eventrule.html:74 #: netbox/templates/wireless/panels/wirelesslink_interface.html:16 #: netbox/virtualization/forms/bulk_edit.py:50 @@ -570,10 +540,8 @@ msgstr "Тип" #: netbox/circuits/forms/bulk_import.py:213 #: netbox/circuits/forms/filtersets.py:159 #: netbox/circuits/forms/filtersets.py:357 -#: netbox/circuits/forms/model_forms.py:117 -#: netbox/circuits/forms/model_forms.py:326 -#: netbox/templates/circuits/virtualcircuit.html:31 -#: netbox/templates/circuits/virtualcircuittermination.html:34 +#: netbox/circuits/forms/model_forms.py:146 +#: netbox/circuits/forms/model_forms.py:355 msgid "Provider account" msgstr "Аккаунт провайдера" @@ -615,19 +583,10 @@ msgstr "Аккаунт провайдера" #: netbox/ipam/forms/model_forms.py:503 netbox/ipam/tables/ip.py:182 #: netbox/ipam/tables/ip.py:261 netbox/ipam/tables/ip.py:314 #: netbox/ipam/tables/ip.py:389 netbox/ipam/tables/ip.py:416 -#: netbox/ipam/tables/vlans.py:98 netbox/templates/circuits/circuit.html:34 -#: netbox/templates/circuits/virtualcircuit.html:43 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:21 -#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:19 -#: netbox/templates/dcim/cable.html:19 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/powerfeed.html:36 -#: netbox/templates/dcim/poweroutlet.html:40 +#: netbox/ipam/tables/vlans.py:98 netbox/templates/core/rq_task.html:81 +#: netbox/templates/core/system.html:19 #: netbox/templates/extras/inc/script_list_content.html:35 -#: netbox/templates/ipam/ipaddress.html:37 -#: netbox/templates/ipam/iprange.html:61 netbox/templates/ipam/prefix.html:69 -#: netbox/templates/ipam/vlan.html:48 netbox/users/forms/filtersets.py:36 -#: netbox/users/forms/model_forms.py:223 +#: netbox/users/forms/filtersets.py:36 netbox/users/forms/model_forms.py:223 #: netbox/virtualization/forms/bulk_edit.py:60 #: netbox/virtualization/forms/bulk_edit.py:83 #: netbox/virtualization/forms/bulk_import.py:55 @@ -688,21 +647,9 @@ msgstr "Статус" #: netbox/ipam/forms/filtersets.py:155 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:297 netbox/ipam/forms/filtersets.py:350 #: netbox/ipam/forms/filtersets.py:459 netbox/ipam/forms/filtersets.py:552 -#: netbox/ipam/tables/ip.py:419 netbox/templates/circuits/circuit.html:48 -#: netbox/templates/circuits/circuitgroup.html:36 -#: netbox/templates/circuits/virtualcircuit.html:47 -#: netbox/templates/dcim/cable.html:27 netbox/templates/dcim/powerfeed.html:44 -#: netbox/templates/dcim/virtualdevicecontext.html:52 -#: netbox/templates/ipam/aggregate.html:30 netbox/templates/ipam/asn.html:33 -#: netbox/templates/ipam/asnrange.html:29 -#: netbox/templates/ipam/ipaddress.html:28 -#: netbox/templates/ipam/iprange.html:65 netbox/templates/ipam/prefix.html:29 -#: netbox/templates/ipam/routetarget.html:17 -#: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vlangroup.html:50 -#: netbox/templates/ipam/vrf.html:20 netbox/templates/tenancy/tenant.html:17 -#: netbox/tenancy/forms/filtersets.py:55 netbox/tenancy/forms/forms.py:26 -#: netbox/tenancy/forms/forms.py:50 netbox/tenancy/forms/model_forms.py:51 -#: netbox/tenancy/tables/columns.py:50 +#: netbox/ipam/tables/ip.py:419 netbox/tenancy/forms/filtersets.py:55 +#: netbox/tenancy/forms/forms.py:26 netbox/tenancy/forms/forms.py:50 +#: netbox/tenancy/forms/model_forms.py:51 netbox/tenancy/tables/columns.py:50 #: netbox/virtualization/forms/bulk_edit.py:66 #: netbox/virtualization/forms/bulk_edit.py:126 #: netbox/virtualization/forms/bulk_import.py:67 @@ -737,8 +684,7 @@ msgstr "Гарантированная скорость (Кбит/с)" #: netbox/circuits/forms/bulk_edit.py:159 #: netbox/circuits/forms/filtersets.py:217 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/templates/circuits/circuit.html:38 +#: netbox/circuits/forms/model_forms.py:165 #: netbox/wireless/forms/bulk_edit.py:121 #: netbox/wireless/forms/filtersets.py:137 #: netbox/wireless/forms/model_forms.py:166 @@ -757,7 +703,7 @@ msgid "Distance unit" msgstr "Единица измерения расстояний" #: netbox/circuits/forms/bulk_edit.py:173 -#: netbox/circuits/forms/model_forms.py:141 +#: netbox/circuits/forms/model_forms.py:170 msgid "Service Parameters" msgstr "Параметры Службы" @@ -783,7 +729,7 @@ msgstr "Параметры Службы" #: netbox/dcim/forms/filtersets.py:1864 netbox/dcim/forms/filtersets.py:1879 #: netbox/dcim/forms/filtersets.py:1890 netbox/dcim/forms/filtersets.py:1936 #: netbox/dcim/forms/filtersets.py:1972 netbox/dcim/tables/modules.py:25 -#: netbox/dcim/views.py:1679 netbox/extras/forms/bulk_edit.py:94 +#: netbox/dcim/views.py:1681 netbox/extras/forms/bulk_edit.py:94 #: netbox/extras/forms/filtersets.py:48 netbox/extras/forms/filtersets.py:147 #: netbox/extras/forms/filtersets.py:226 netbox/extras/forms/filtersets.py:243 #: netbox/extras/forms/filtersets.py:275 netbox/extras/forms/filtersets.py:306 @@ -806,12 +752,12 @@ msgstr "Атрибуты" #: netbox/circuits/forms/bulk_edit.py:175 #: netbox/circuits/forms/bulk_edit.py:317 -#: netbox/circuits/forms/model_forms.py:142 -#: netbox/circuits/forms/model_forms.py:238 -#: netbox/circuits/forms/model_forms.py:340 -#: netbox/dcim/forms/model_forms.py:157 netbox/dcim/forms/model_forms.py:198 -#: netbox/dcim/forms/model_forms.py:285 netbox/dcim/forms/model_forms.py:342 -#: netbox/dcim/forms/model_forms.py:883 netbox/dcim/forms/model_forms.py:1897 +#: netbox/circuits/forms/model_forms.py:171 +#: netbox/circuits/forms/model_forms.py:267 +#: netbox/circuits/forms/model_forms.py:369 +#: netbox/dcim/forms/model_forms.py:168 netbox/dcim/forms/model_forms.py:224 +#: netbox/dcim/forms/model_forms.py:311 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/forms/model_forms.py:909 netbox/dcim/forms/model_forms.py:1923 #: netbox/ipam/forms/bulk_edit.py:383 netbox/ipam/forms/model_forms.py:70 #: netbox/ipam/forms/model_forms.py:87 netbox/ipam/forms/model_forms.py:118 #: netbox/ipam/forms/model_forms.py:139 netbox/ipam/forms/model_forms.py:163 @@ -846,34 +792,9 @@ msgstr "Аренда" #: netbox/extras/tables/tables.py:97 netbox/ipam/tables/vlans.py:214 #: netbox/ipam/tables/vlans.py:241 netbox/netbox/forms/bulk_edit.py:79 #: netbox/netbox/forms/bulk_edit.py:91 netbox/netbox/forms/bulk_edit.py:103 -#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 -#: netbox/templates/circuits/circuit.html:69 -#: netbox/templates/circuits/circuitgroup.html:32 -#: netbox/templates/circuits/circuittype.html:26 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:83 -#: netbox/templates/circuits/provider.html:33 -#: netbox/templates/circuits/provideraccount.html:32 -#: netbox/templates/circuits/providernetwork.html:32 -#: netbox/templates/circuits/virtualcircuit.html:56 -#: netbox/templates/circuits/virtualcircuittermination.html:68 -#: netbox/templates/circuits/virtualcircuittype.html:26 -#: netbox/templates/core/datasource.html:58 -#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:40 -#: netbox/templates/dcim/consoleport.html:44 -#: netbox/templates/dcim/consoleserverport.html:44 -#: netbox/templates/dcim/devicebay.html:32 -#: netbox/templates/dcim/frontport.html:54 -#: netbox/templates/dcim/interface.html:69 -#: netbox/templates/dcim/inventoryitem.html:64 -#: netbox/templates/dcim/inventoryitemrole.html:22 -#: netbox/templates/dcim/macaddress.html:21 -#: netbox/templates/dcim/modulebay.html:42 -#: netbox/templates/dcim/powerfeed.html:40 -#: netbox/templates/dcim/poweroutlet.html:44 -#: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 -#: netbox/templates/dcim/rearport.html:54 -#: netbox/templates/dcim/virtualchassis.html:21 +#: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:85 +#: netbox/templates/core/plugin.html:80 #: netbox/templates/extras/configcontext.html:25 #: netbox/templates/extras/configcontextprofile.html:17 #: netbox/templates/extras/configtemplate.html:17 @@ -888,23 +809,6 @@ msgstr "Аренда" #: netbox/templates/extras/tableconfig.html:17 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:151 -#: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 -#: netbox/templates/ipam/asnrange.html:38 -#: netbox/templates/ipam/fhrpgroup.html:34 -#: netbox/templates/ipam/ipaddress.html:55 -#: netbox/templates/ipam/iprange.html:74 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/rir.html:26 netbox/templates/ipam/role.html:26 -#: netbox/templates/ipam/routetarget.html:21 -#: netbox/templates/ipam/service.html:52 -#: netbox/templates/ipam/servicetemplate.html:27 -#: netbox/templates/ipam/vlan.html:62 netbox/templates/ipam/vlangroup.html:34 -#: netbox/templates/ipam/vlantranslationpolicy.html:18 -#: netbox/templates/ipam/vlantranslationrule.html:26 -#: netbox/templates/ipam/vrf.html:33 netbox/templates/tenancy/contact.html:77 -#: netbox/templates/tenancy/contactgroup.html:25 -#: netbox/templates/tenancy/contactrole.html:22 -#: netbox/templates/tenancy/tenant.html:24 -#: netbox/templates/tenancy/tenantgroup.html:33 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:12 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:12 #: netbox/users/forms/bulk_edit.py:62 netbox/users/forms/bulk_edit.py:80 @@ -916,7 +820,7 @@ msgid "Description" msgstr "Описание" #: netbox/circuits/forms/bulk_edit.py:192 -#: netbox/circuits/forms/model_forms.py:170 +#: netbox/circuits/forms/model_forms.py:199 #: netbox/dcim/forms/bulk_import.py:1419 netbox/dcim/forms/bulk_import.py:1444 msgid "Termination type" msgstr "Тип точки подключения" @@ -924,9 +828,9 @@ msgstr "Тип точки подключения" #: netbox/circuits/forms/bulk_edit.py:195 #: netbox/circuits/forms/bulk_import.py:133 #: netbox/circuits/forms/filtersets.py:234 -#: netbox/circuits/forms/model_forms.py:173 +#: netbox/circuits/forms/model_forms.py:202 netbox/circuits/ui/panels.py:14 #: netbox/templates/circuits/inc/circuit_termination.html:6 -#: netbox/templates/dcim/cable.html:72 netbox/templates/dcim/cable.html:76 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:6 #: netbox/vpn/forms/bulk_import.py:99 netbox/vpn/forms/filtersets.py:87 msgid "Termination" msgstr "Прекращение" @@ -948,26 +852,23 @@ msgid "Mark connected" msgstr "Пометить подключенным" #: netbox/circuits/forms/bulk_edit.py:220 -#: netbox/circuits/forms/model_forms.py:184 +#: netbox/circuits/forms/model_forms.py:213 netbox/circuits/views.py:513 +#: netbox/dcim/views.py:3465 netbox/dcim/views.py:3566 #: netbox/templates/circuits/inc/circuit_termination_fields.html:55 -#: netbox/templates/dcim/frontport.html:118 -#: netbox/templates/dcim/interface.html:268 -#: netbox/templates/dcim/rearport.html:112 +#: netbox/templates/dcim/panels/interface_connection.html:92 msgid "Circuit Termination" msgstr "Точка подключения канала связи" #: netbox/circuits/forms/bulk_edit.py:222 -#: netbox/circuits/forms/model_forms.py:186 +#: netbox/circuits/forms/model_forms.py:215 msgid "Termination Details" msgstr "Сведения об точке подключения" #: netbox/circuits/forms/bulk_edit.py:261 #: netbox/circuits/forms/bulk_import.py:188 #: netbox/circuits/forms/filtersets.py:314 -#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:666 -#: netbox/templates/circuits/circuitgroupassignment.html:34 +#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:692 #: netbox/templates/dcim/panels/virtual_chassis_members.html:11 -#: netbox/templates/dcim/virtualchassis.html:58 #: netbox/templates/dcim/virtualchassis_edit.html:68 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 #: netbox/templates/ipam/panels/fhrp_groups.html:12 @@ -982,7 +883,7 @@ msgstr "Приоритет" #: netbox/circuits/forms/filtersets.py:272 #: netbox/circuits/forms/filtersets.py:365 #: netbox/circuits/forms/filtersets.py:403 -#: netbox/circuits/forms/model_forms.py:321 +#: netbox/circuits/forms/model_forms.py:350 #: netbox/circuits/tables/virtual_circuits.py:51 #: netbox/circuits/tables/virtual_circuits.py:95 msgid "Provider network" @@ -991,13 +892,13 @@ msgstr "Сеть провайдера" #: netbox/circuits/forms/bulk_edit.py:326 #: netbox/circuits/forms/bulk_import.py:253 #: netbox/circuits/forms/filtersets.py:393 -#: netbox/circuits/forms/model_forms.py:360 netbox/dcim/forms/bulk_edit.py:351 +#: netbox/circuits/forms/model_forms.py:389 netbox/dcim/forms/bulk_edit.py:351 #: netbox/dcim/forms/bulk_edit.py:1245 netbox/dcim/forms/bulk_edit.py:1681 #: netbox/dcim/forms/bulk_import.py:270 netbox/dcim/forms/bulk_import.py:1199 #: netbox/dcim/forms/filtersets.py:404 netbox/dcim/forms/filtersets.py:879 #: netbox/dcim/forms/filtersets.py:1902 netbox/dcim/forms/filtersets.py:1942 -#: netbox/dcim/forms/model_forms.py:267 netbox/dcim/forms/model_forms.py:1234 -#: netbox/dcim/forms/model_forms.py:1717 +#: netbox/dcim/forms/model_forms.py:293 netbox/dcim/forms/model_forms.py:1260 +#: netbox/dcim/forms/model_forms.py:1743 #: netbox/dcim/forms/object_import.py:182 netbox/dcim/tables/devices.py:173 #: netbox/dcim/tables/devices.py:1032 netbox/dcim/tables/devicetypes.py:318 #: netbox/dcim/tables/racks.py:118 netbox/extras/filtersets.py:734 @@ -1011,14 +912,10 @@ msgstr "Сеть провайдера" #: netbox/ipam/forms/model_forms.py:253 netbox/ipam/forms/model_forms.py:678 #: netbox/ipam/tables/ip.py:208 netbox/ipam/tables/ip.py:265 #: netbox/ipam/tables/ip.py:318 netbox/ipam/tables/vlans.py:102 -#: netbox/templates/circuits/virtualcircuittermination.html:42 #: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:196 -#: netbox/templates/dcim/interface.html:298 -#: netbox/templates/dcim/inventoryitem.html:40 -#: netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:57 netbox/templates/ipam/prefix.html:73 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/dcim/panels/component_inventory_items.html:10 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:19 +#: netbox/templates/dcim/panels/interface_wireless.html:17 #: netbox/templates/wireless/panels/wirelesslink_interface.html:20 #: netbox/tenancy/forms/bulk_edit.py:136 #: netbox/tenancy/forms/filtersets.py:136 @@ -1114,22 +1011,19 @@ msgid "Operational role" msgstr "Операционная роль" #: netbox/circuits/forms/bulk_import.py:258 -#: netbox/circuits/forms/model_forms.py:363 +#: netbox/circuits/forms/model_forms.py:392 #: netbox/circuits/tables/virtual_circuits.py:108 -#: netbox/dcim/forms/bulk_import.py:1330 netbox/dcim/forms/model_forms.py:1308 -#: netbox/dcim/forms/model_forms.py:1577 netbox/dcim/forms/model_forms.py:1758 -#: netbox/dcim/forms/model_forms.py:1793 netbox/dcim/forms/model_forms.py:1918 -#: netbox/dcim/tables/connections.py:66 netbox/dcim/tables/devices.py:1199 -#: netbox/ipam/forms/bulk_import.py:323 netbox/ipam/forms/model_forms.py:283 -#: netbox/ipam/forms/model_forms.py:292 netbox/ipam/tables/fhrp.py:61 -#: netbox/ipam/tables/ip.py:323 netbox/ipam/tables/vlans.py:145 +#: netbox/circuits/ui/panels.py:134 netbox/dcim/forms/bulk_import.py:1330 +#: netbox/dcim/forms/model_forms.py:1334 netbox/dcim/forms/model_forms.py:1603 +#: netbox/dcim/forms/model_forms.py:1784 netbox/dcim/forms/model_forms.py:1819 +#: netbox/dcim/forms/model_forms.py:1944 netbox/dcim/tables/connections.py:66 +#: netbox/dcim/tables/devices.py:1199 netbox/dcim/views.py:3457 +#: netbox/dcim/views.py:3560 netbox/ipam/forms/bulk_import.py:323 +#: netbox/ipam/forms/model_forms.py:283 netbox/ipam/forms/model_forms.py:292 +#: netbox/ipam/tables/fhrp.py:61 netbox/ipam/tables/ip.py:323 +#: netbox/ipam/tables/vlans.py:145 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 -#: netbox/templates/circuits/virtualcircuittermination.html:53 -#: netbox/templates/circuits/virtualcircuittermination.html:60 -#: netbox/templates/dcim/frontport.html:103 -#: netbox/templates/dcim/interface.html:27 -#: netbox/templates/dcim/interface.html:259 -#: netbox/templates/dcim/rearport.html:103 +#: netbox/templates/dcim/panels/interface_connection.html:83 #: netbox/templates/wireless/panels/wirelesslink_interface.html:12 #: netbox/virtualization/forms/model_forms.py:368 #: netbox/vpn/forms/bulk_import.py:302 netbox/vpn/forms/model_forms.py:434 @@ -1161,8 +1055,8 @@ msgstr "Интерфейс" #: netbox/dcim/forms/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1746 #: netbox/dcim/forms/filtersets.py:1790 netbox/dcim/forms/filtersets.py:1833 #: netbox/dcim/forms/filtersets.py:1865 netbox/dcim/forms/filtersets.py:1892 -#: netbox/dcim/forms/model_forms.py:197 netbox/dcim/forms/model_forms.py:259 -#: netbox/dcim/forms/model_forms.py:575 netbox/dcim/forms/model_forms.py:844 +#: netbox/dcim/forms/model_forms.py:223 netbox/dcim/forms/model_forms.py:285 +#: netbox/dcim/forms/model_forms.py:601 netbox/dcim/forms/model_forms.py:870 #: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:30 #: netbox/dcim/tables/racks.py:107 netbox/dcim/tables/racks.py:199 #: netbox/extras/filtersets.py:718 netbox/extras/forms/filtersets.py:404 @@ -1170,7 +1064,6 @@ msgstr "Интерфейс" #: netbox/ipam/forms/filtersets.py:481 netbox/ipam/forms/filtersets.py:549 #: netbox/templates/dcim/device_edit.html:32 #: netbox/templates/dcim/inc/cable_termination.html:12 -#: netbox/templates/dcim/powerpanel.html:26 #: netbox/virtualization/forms/filtersets.py:87 #: netbox/virtualization/forms/filtersets.py:113 #: netbox/wireless/forms/filtersets.py:99 @@ -1281,7 +1174,7 @@ msgstr "Контакты" #: netbox/dcim/tables/devices.py:147 netbox/dcim/tables/sites.py:65 #: netbox/extras/filtersets.py:685 netbox/ipam/forms/bulk_edit.py:404 #: netbox/ipam/forms/filtersets.py:241 netbox/ipam/forms/filtersets.py:466 -#: netbox/ipam/forms/filtersets.py:559 netbox/templates/ipam/vlan.html:16 +#: netbox/ipam/forms/filtersets.py:559 netbox/ipam/ui/panels.py:195 #: netbox/virtualization/forms/filtersets.py:67 #: netbox/virtualization/forms/filtersets.py:147 #: netbox/virtualization/forms/model_forms.py:86 @@ -1313,8 +1206,6 @@ msgstr "Группа площадок" #: netbox/circuits/tables/providers.py:61 #: netbox/circuits/tables/virtual_circuits.py:55 #: netbox/circuits/tables/virtual_circuits.py:99 -#: netbox/templates/circuits/circuit.html:22 -#: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Аккаунт" @@ -1325,9 +1216,7 @@ msgstr "Терминология" #: netbox/circuits/forms/filtersets.py:296 netbox/dcim/forms/bulk_edit.py:1540 #: netbox/extras/forms/model_forms.py:706 netbox/ipam/forms/filtersets.py:154 #: netbox/ipam/forms/filtersets.py:642 netbox/ipam/forms/model_forms.py:329 -#: netbox/templates/dcim/macaddress.html:25 -#: netbox/templates/extras/configcontext.html:36 -#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/ipam/ui/panels.py:121 netbox/templates/extras/configcontext.html:36 #: netbox/templates/ipam/vlan_edit.html:42 #: netbox/tenancy/forms/filtersets.py:116 #: netbox/users/forms/model_forms.py:375 @@ -1335,18 +1224,16 @@ msgid "Assignment" msgstr "Задание" #: netbox/circuits/forms/filtersets.py:311 -#: netbox/circuits/forms/model_forms.py:250 +#: netbox/circuits/forms/model_forms.py:279 #: netbox/circuits/tables/circuits.py:187 netbox/dcim/forms/bulk_edit.py:118 #: netbox/dcim/forms/bulk_import.py:115 netbox/dcim/forms/model_forms.py:135 #: netbox/dcim/tables/sites.py:69 netbox/extras/forms/filtersets.py:600 #: netbox/ipam/filtersets.py:1034 netbox/ipam/forms/bulk_edit.py:423 #: netbox/ipam/forms/bulk_import.py:515 netbox/ipam/forms/model_forms.py:561 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/vlans.py:94 -#: netbox/templates/circuits/circuitgroupassignment.html:22 -#: netbox/templates/dcim/interface.html:359 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:8 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 #: netbox/templates/ipam/panels/fhrp_groups.html:9 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/tenant.html:20 #: netbox/tenancy/forms/bulk_edit.py:44 netbox/tenancy/forms/bulk_import.py:46 #: netbox/tenancy/forms/filtersets.py:63 #: netbox/tenancy/forms/filtersets.py:126 @@ -1372,23 +1259,38 @@ msgstr "Задание" msgid "Group" msgstr "Группа" -#: netbox/circuits/forms/model_forms.py:237 -#: netbox/templates/circuits/circuitgroup.html:25 +#: netbox/circuits/forms/model_forms.py:53 +#: netbox/dcim/forms/model_forms.py:147 +msgid "Add ASNs" +msgstr "Добавить ASN" + +#: netbox/circuits/forms/model_forms.py:58 +#: netbox/dcim/forms/model_forms.py:152 +msgid "Remove ASNs" +msgstr "Удалить ASN" + +#: netbox/circuits/forms/model_forms.py:79 +#: netbox/dcim/forms/model_forms.py:198 +#, python-brace-format +msgid "{count} ASNs currently assigned" +msgstr "{count} В настоящее время назначены ASN" + +#: netbox/circuits/forms/model_forms.py:266 msgid "Circuit Group" msgstr "Группа каналов связи" -#: netbox/circuits/forms/model_forms.py:257 +#: netbox/circuits/forms/model_forms.py:286 msgid "Circuit type" msgstr "Тип цепи" -#: netbox/circuits/forms/model_forms.py:268 +#: netbox/circuits/forms/model_forms.py:297 msgid "Group Assignment" msgstr "Групповое задание" #: netbox/circuits/models/base.py:18 netbox/dcim/models/cables.py:81 -#: netbox/dcim/models/device_component_templates.py:353 -#: netbox/dcim/models/device_component_templates.py:588 -#: netbox/dcim/models/device_component_templates.py:661 +#: netbox/dcim/models/device_component_templates.py:343 +#: netbox/dcim/models/device_component_templates.py:578 +#: netbox/dcim/models/device_component_templates.py:651 #: netbox/dcim/models/device_components.py:573 #: netbox/dcim/models/device_components.py:1156 #: netbox/dcim/models/device_components.py:1204 @@ -1425,8 +1327,8 @@ msgstr "Уникальный ID канала связи" #: netbox/dcim/models/modules.py:219 netbox/dcim/models/power.py:95 #: netbox/dcim/models/racks.py:301 netbox/dcim/models/racks.py:685 #: netbox/dcim/models/sites.py:163 netbox/dcim/models/sites.py:287 -#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:528 -#: netbox/ipam/models/ip.py:757 netbox/ipam/models/vlans.py:228 +#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:538 +#: netbox/ipam/models/ip.py:767 netbox/ipam/models/vlans.py:228 #: netbox/virtualization/models/clusters.py:70 #: netbox/virtualization/models/virtualmachines.py:80 #: netbox/vpn/models/l2vpn.py:36 netbox/vpn/models/tunnels.py:38 @@ -1546,7 +1448,7 @@ msgstr "точка подключения канала связи" msgid "circuit terminations" msgstr "точки подключения канала связи" -#: netbox/circuits/models/circuits.py:360 +#: netbox/circuits/models/circuits.py:367 msgid "A circuit termination must attach to a terminating object." msgstr "Конец цепи должен быть прикреплен к конечному объекту." @@ -1650,7 +1552,7 @@ msgid "virtual circuits" msgstr "виртуальные каналы" #: netbox/circuits/models/virtual_circuits.py:135 netbox/ipam/models/ip.py:201 -#: netbox/ipam/models/ip.py:764 netbox/vpn/models/tunnels.py:109 +#: netbox/ipam/models/ip.py:774 netbox/vpn/models/tunnels.py:109 msgid "role" msgstr "роль" @@ -1698,30 +1600,13 @@ msgstr "точки подключения виртуальных каналов" #: netbox/ipam/tables/vlans.py:33 netbox/ipam/tables/vlans.py:86 #: netbox/ipam/tables/vlans.py:205 netbox/ipam/tables/vrfs.py:26 #: netbox/ipam/tables/vrfs.py:65 netbox/netbox/tables/tables.py:325 -#: netbox/netbox/ui/panels.py:198 netbox/netbox/ui/panels.py:207 -#: netbox/templates/circuits/circuitgroup.html:28 -#: netbox/templates/circuits/circuittype.html:22 -#: netbox/templates/circuits/provideraccount.html:28 -#: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/circuits/virtualcircuittype.html:22 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:17 +#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 #: netbox/templates/core/plugin.html:54 #: netbox/templates/core/rq_worker.html:43 -#: netbox/templates/dcim/consoleport.html:28 -#: netbox/templates/dcim/consoleserverport.html:28 -#: netbox/templates/dcim/devicebay.html:24 -#: netbox/templates/dcim/frontport.html:28 #: netbox/templates/dcim/inc/interface_vlans_table.html:5 #: netbox/templates/dcim/inc/panels/inventory_items.html:18 -#: netbox/templates/dcim/interface.html:38 -#: netbox/templates/dcim/interface.html:240 -#: netbox/templates/dcim/inventoryitem.html:28 -#: netbox/templates/dcim/inventoryitemrole.html:18 -#: netbox/templates/dcim/modulebay.html:30 -#: netbox/templates/dcim/poweroutlet.html:28 -#: netbox/templates/dcim/powerport.html:28 -#: netbox/templates/dcim/rearport.html:28 -#: netbox/templates/dcim/virtualdevicecontext.html:18 +#: netbox/templates/dcim/panels/component_inventory_items.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:64 #: netbox/templates/extras/configcontext.html:13 #: netbox/templates/extras/configcontextprofile.html:13 #: netbox/templates/extras/configtemplate.html:13 @@ -1735,18 +1620,6 @@ msgstr "точки подключения виртуальных каналов" #: netbox/templates/extras/savedfilter.html:13 #: netbox/templates/extras/tableconfig.html:13 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 -#: netbox/templates/ipam/asnrange.html:15 -#: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 -#: netbox/templates/ipam/role.html:22 -#: netbox/templates/ipam/routetarget.html:13 -#: netbox/templates/ipam/service.html:26 -#: netbox/templates/ipam/servicetemplate.html:15 -#: netbox/templates/ipam/vlan.html:35 netbox/templates/ipam/vlangroup.html:30 -#: netbox/templates/ipam/vlantranslationpolicy.html:14 -#: netbox/templates/tenancy/contact.html:35 -#: netbox/templates/tenancy/contactgroup.html:21 -#: netbox/templates/tenancy/contactrole.html:18 -#: netbox/templates/tenancy/tenantgroup.html:29 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:8 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:8 #: netbox/tenancy/tables/contacts.py:38 netbox/tenancy/tables/contacts.py:53 @@ -1776,17 +1649,13 @@ msgstr "Имя" #: netbox/circuits/tables/virtual_circuits.py:27 #: netbox/netbox/navigation/menu.py:278 netbox/netbox/navigation/menu.py:282 #: netbox/netbox/navigation/menu.py:284 -#: netbox/templates/circuits/provider.html:57 -#: netbox/templates/circuits/provideraccount.html:48 -#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Каналы связи" #: netbox/circuits/tables/circuits.py:53 #: netbox/circuits/tables/virtual_circuits.py:42 -#: netbox/templates/circuits/circuit.html:26 -#: netbox/templates/circuits/virtualcircuit.html:35 -#: netbox/templates/dcim/interface.html:192 +#: netbox/circuits/ui/panels.py:75 netbox/circuits/ui/panels.py:118 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:15 msgid "Circuit ID" msgstr "Идентификатор канала связи" @@ -1800,13 +1669,11 @@ msgid "Side Z" msgstr "Сторона Z" #: netbox/circuits/tables/circuits.py:78 -#: netbox/templates/circuits/circuit.html:65 msgid "Commit Rate" msgstr "Гарантированная скорость" #: netbox/circuits/tables/circuits.py:85 netbox/dcim/forms/filtersets.py:1973 -#: netbox/templates/tenancy/contact.html:94 -#: netbox/tenancy/tables/contacts.py:67 +#: netbox/tenancy/tables/contacts.py:67 netbox/tenancy/views.py:416 msgid "Assignments" msgstr "Задания" @@ -1828,10 +1695,7 @@ msgid "Site Group" msgstr "Группа площадок" #: netbox/circuits/tables/circuits.py:145 -#: netbox/templates/circuits/providernetwork.html:17 -#: netbox/templates/circuits/virtualcircuit.html:27 -#: netbox/templates/circuits/virtualcircuittermination.html:30 -#: netbox/templates/dcim/interface.html:188 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:11 msgid "Provider Network" msgstr "Сеть провайдера" @@ -1847,8 +1711,7 @@ msgstr "Количество аккаунтов" msgid "ASN Count" msgstr "Количество ASN" -#: netbox/circuits/tables/virtual_circuits.py:64 -#: netbox/templates/circuits/virtualcircuit.html:87 +#: netbox/circuits/tables/virtual_circuits.py:64 netbox/circuits/views.py:802 #: netbox/vpn/tables/tunnels.py:59 netbox/vpn/views.py:139 #: netbox/vpn/views.py:685 msgid "Terminations" @@ -1877,9 +1740,9 @@ msgstr "Соединения" #: netbox/dcim/forms/filtersets.py:1868 netbox/dcim/forms/filtersets.py:1880 #: netbox/dcim/forms/filtersets.py:1895 netbox/dcim/forms/filtersets.py:1937 #: netbox/dcim/forms/filtersets.py:2032 netbox/dcim/forms/filtersets.py:2056 -#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:748 -#: netbox/dcim/forms/model_forms.py:963 netbox/dcim/forms/model_forms.py:1375 -#: netbox/dcim/forms/model_forms.py:1869 netbox/dcim/forms/model_forms.py:1942 +#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:774 +#: netbox/dcim/forms/model_forms.py:989 netbox/dcim/forms/model_forms.py:1401 +#: netbox/dcim/forms/model_forms.py:1895 netbox/dcim/forms/model_forms.py:1968 #: netbox/dcim/forms/object_create.py:207 netbox/dcim/tables/connections.py:23 #: netbox/dcim/tables/connections.py:42 netbox/dcim/tables/connections.py:61 #: netbox/dcim/tables/devices.py:293 netbox/dcim/tables/devices.py:388 @@ -1891,24 +1754,11 @@ msgstr "Соединения" #: netbox/dcim/tables/modules.py:82 netbox/extras/forms/filtersets.py:405 #: netbox/ipam/forms/bulk_import.py:309 netbox/ipam/forms/filtersets.py:649 #: netbox/ipam/forms/model_forms.py:325 netbox/ipam/tables/vlans.py:156 -#: netbox/templates/circuits/virtualcircuittermination.html:56 -#: netbox/templates/dcim/consoleport.html:20 -#: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device_edit.html:12 -#: netbox/templates/dcim/devicebay.html:20 -#: netbox/templates/dcim/devicebay.html:48 -#: netbox/templates/dcim/frontport.html:20 -#: netbox/templates/dcim/interface.html:30 -#: netbox/templates/dcim/interface.html:236 -#: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/modulebay.html:20 +#: netbox/templates/dcim/panels/installed_device.html:9 +#: netbox/templates/dcim/panels/interface_connection.html:60 #: netbox/templates/dcim/panels/virtual_chassis_members.html:8 -#: netbox/templates/dcim/poweroutlet.html:20 -#: netbox/templates/dcim/powerport.html:20 -#: netbox/templates/dcim/rearport.html:20 -#: netbox/templates/dcim/virtualchassis.html:55 #: netbox/templates/dcim/virtualchassis_edit.html:63 -#: netbox/templates/dcim/virtualdevicecontext.html:22 #: netbox/templates/wireless/panels/wirelesslink_interface.html:8 #: netbox/virtualization/filtersets.py:160 #: netbox/virtualization/forms/bulk_edit.py:108 @@ -1926,6 +1776,15 @@ msgstr "Соединения" msgid "Device" msgstr "Устройство" +#: netbox/circuits/ui/panels.py:37 netbox/netbox/navigation/menu.py:301 +msgid "Group Assignments" +msgstr "Групповые задания" + +#: netbox/circuits/ui/panels.py:46 netbox/ipam/ui/panels.py:36 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Назначить группу" + #: netbox/core/api/views.py:51 msgid "This user does not have permission to synchronize this data source." msgstr "" @@ -1973,14 +1832,14 @@ msgid "Syncing" msgstr "Синхронизируется" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:43 netbox/templates/core/job.html:59 +#: netbox/core/tables/jobs.py:43 msgid "Completed" msgstr "Завершено" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35 #: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259 -#: netbox/dcim/choices.py:1992 netbox/dcim/choices.py:2082 +#: netbox/dcim/choices.py:2013 netbox/dcim/choices.py:2103 #: netbox/virtualization/choices.py:48 msgid "Failed" msgstr "Неисправно" @@ -2004,7 +1863,6 @@ msgstr "В ожидании" #: netbox/core/choices.py:55 netbox/core/constants.py:24 #: netbox/core/tables/jobs.py:34 netbox/core/tables/tasks.py:39 -#: netbox/templates/core/job.html:46 msgid "Scheduled" msgstr "Запланировано" @@ -2043,10 +1901,9 @@ msgstr "30 дней" #: netbox/core/choices.py:102 netbox/core/tables/jobs.py:31 #: netbox/core/tables/tasks.py:80 netbox/extras/tables/tables.py:436 #: netbox/extras/tables/tables.py:742 -#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision.html:23 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:42 netbox/templates/core/rq_task.html:16 -#: netbox/templates/core/rq_task.html:73 +#: netbox/templates/core/rq_task.html:16 netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 #: netbox/templates/extras/journalentry.html:22 @@ -2068,7 +1925,6 @@ msgid "Finished" msgstr "Закончено" #: netbox/core/constants.py:22 netbox/core/tables/jobs.py:40 -#: netbox/templates/core/job.html:55 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Запущено" @@ -2100,13 +1956,12 @@ msgid "Warning" msgstr "Предупреждение" #: netbox/core/constants.py:33 netbox/netbox/tables/columns.py:589 -#: netbox/templates/core/job.html:26 msgid "Error" msgstr "Ошибка" #: netbox/core/data_backends.py:46 netbox/core/tables/plugins.py:54 #: netbox/templates/core/plugin.html:88 -#: netbox/templates/dcim/interface.html:291 +#: netbox/templates/dcim/panels/interface_wireless.html:10 msgid "Local" msgstr "Локальный" @@ -2165,7 +2020,7 @@ msgid "User name" msgstr "Имя пользователя" #: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47 -#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2040 +#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2061 #: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386 #: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712 #: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233 @@ -2176,8 +2031,6 @@ msgstr "Имя пользователя" #: netbox/extras/tables/tables.py:188 netbox/extras/tables/tables.py:319 #: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:520 #: netbox/netbox/preferences.py:46 netbox/netbox/preferences.py:71 -#: netbox/templates/core/datasource.html:42 -#: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 #: netbox/templates/extras/eventrule.html:17 #: netbox/templates/extras/savedfilter.html:25 @@ -2191,7 +2044,7 @@ msgid "Enabled" msgstr "Включено" #: netbox/core/forms/bulk_edit.py:30 netbox/core/forms/filtersets.py:54 -#: netbox/core/tables/data.py:31 netbox/templates/core/datasource.html:50 +#: netbox/core/tables/data.py:31 netbox/core/ui/panels.py:12 msgid "Sync interval" msgstr "Интервал синхронизации" @@ -2205,17 +2058,17 @@ msgstr "Интервал синхронизации" msgid "Parameters" msgstr "Параметры" -#: netbox/core/forms/bulk_edit.py:37 netbox/templates/core/datasource.html:72 +#: netbox/core/forms/bulk_edit.py:37 netbox/core/ui/panels.py:22 msgid "Ignore rules" msgstr "Правила исключения" #: netbox/core/forms/filtersets.py:33 netbox/core/forms/model_forms.py:100 -#: netbox/extras/forms/model_forms.py:280 +#: netbox/core/ui/panels.py:7 netbox/extras/forms/model_forms.py:280 #: netbox/extras/forms/model_forms.py:613 #: netbox/extras/forms/model_forms.py:702 #: netbox/extras/forms/model_forms.py:755 netbox/extras/tables/tables.py:230 #: netbox/extras/tables/tables.py:600 netbox/extras/tables/tables.py:630 -#: netbox/extras/tables/tables.py:672 netbox/templates/core/datasource.html:31 +#: netbox/extras/tables/tables.py:672 #: netbox/templates/core/inc/datafile_panel.html:7 #: netbox/templates/extras/configtemplate.html:37 #: netbox/templates/extras/object_render_config.html:19 @@ -2242,15 +2095,14 @@ msgstr "Создание" #: netbox/extras/forms/filtersets.py:580 netbox/extras/tables/tables.py:283 #: netbox/extras/tables/tables.py:350 netbox/extras/tables/tables.py:376 #: netbox/extras/tables/tables.py:395 netbox/extras/tables/tables.py:427 -#: netbox/extras/tables/tables.py:747 netbox/templates/core/job.html:11 -#: netbox/templates/core/objectchange.html:52 +#: netbox/extras/tables/tables.py:747 #: netbox/templates/extras/tableconfig.html:21 #: netbox/tenancy/tables/contacts.py:84 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Тип объекта" #: netbox/core/forms/filtersets.py:95 netbox/core/tables/jobs.py:46 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:61 +#: netbox/core/ui/panels.py:65 netbox/templates/core/rq_task.html:61 msgid "Queue" msgstr "Очередь" @@ -2287,11 +2139,10 @@ msgid "Completed before" msgstr "Завершено до" #: netbox/core/forms/filtersets.py:141 netbox/core/forms/filtersets.py:170 -#: netbox/dcim/forms/bulk_edit.py:458 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/model_forms.py:336 netbox/extras/forms/filtersets.py:575 -#: netbox/extras/forms/filtersets.py:595 netbox/extras/tables/tables.py:403 -#: netbox/extras/tables/tables.py:443 -#: netbox/templates/core/objectchange.html:36 +#: netbox/core/ui/panels.py:73 netbox/dcim/forms/bulk_edit.py:458 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:362 +#: netbox/extras/forms/filtersets.py:575 netbox/extras/forms/filtersets.py:595 +#: netbox/extras/tables/tables.py:403 netbox/extras/tables/tables.py:443 #: netbox/templates/extras/savedfilter.html:21 #: netbox/templates/extras/tableconfig.html:29 #: netbox/templates/inc/user_menu.html:31 netbox/users/filtersets.py:135 @@ -2304,7 +2155,6 @@ msgstr "Пользователь" #: netbox/core/forms/filtersets.py:149 netbox/core/tables/change_logging.py:16 #: netbox/core/tables/jobs.py:72 netbox/extras/tables/tables.py:785 #: netbox/extras/tables/tables.py:840 -#: netbox/templates/core/objectchange.html:32 msgid "Time" msgstr "Время" @@ -2318,21 +2168,19 @@ msgstr "До" #: netbox/core/forms/filtersets.py:163 netbox/core/tables/change_logging.py:30 #: netbox/extras/forms/model_forms.py:490 -#: netbox/templates/core/objectchange.html:46 #: netbox/templates/extras/eventrule.html:71 msgid "Action" msgstr "Действие" #: netbox/core/forms/model_forms.py:55 netbox/core/tables/data.py:57 -#: netbox/templates/core/datafile.html:21 #: netbox/templates/extras/report/base.html:33 #: netbox/templates/extras/script/base.html:32 msgid "Source" msgstr "Источник" #: netbox/core/forms/model_forms.py:57 -#: netbox/templates/core/datasource.html:14 -#: netbox/templates/core/datasource.html:20 +#: netbox/templates/core/datasource.html:10 +#: netbox/templates/core/datasource.html:16 #: netbox/utilities/templatetags/buttons.py:156 msgid "Sync" msgstr "Синхронизация" @@ -2359,7 +2207,7 @@ msgstr "Необходимо загрузить файл или выбрать msgid "Rack Elevations" msgstr "Фасады стоек" -#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1911 +#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1932 #: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340 #: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144 #: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320 @@ -2504,13 +2352,13 @@ msgid "Config revision #{id}" msgstr "Ревизия конфигурации #{id}" #: netbox/core/models/data.py:45 netbox/dcim/models/cables.py:50 -#: netbox/dcim/models/device_component_templates.py:210 -#: netbox/dcim/models/device_component_templates.py:245 -#: netbox/dcim/models/device_component_templates.py:281 -#: netbox/dcim/models/device_component_templates.py:346 -#: netbox/dcim/models/device_component_templates.py:437 -#: netbox/dcim/models/device_component_templates.py:583 -#: netbox/dcim/models/device_component_templates.py:656 +#: netbox/dcim/models/device_component_templates.py:200 +#: netbox/dcim/models/device_component_templates.py:235 +#: netbox/dcim/models/device_component_templates.py:271 +#: netbox/dcim/models/device_component_templates.py:336 +#: netbox/dcim/models/device_component_templates.py:427 +#: netbox/dcim/models/device_component_templates.py:573 +#: netbox/dcim/models/device_component_templates.py:646 #: netbox/dcim/models/device_components.py:370 #: netbox/dcim/models/device_components.py:397 #: netbox/dcim/models/device_components.py:428 @@ -2524,15 +2372,14 @@ msgstr "Ревизия конфигурации #{id}" msgid "type" msgstr "тип" -#: netbox/core/models/data.py:50 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:183 netbox/extras/tables/tables.py:850 -#: netbox/templates/core/datasource.html:62 -#: netbox/templates/core/plugin.html:66 +#: netbox/core/models/data.py:50 netbox/core/ui/panels.py:17 +#: netbox/extras/choices.py:37 netbox/extras/models/models.py:183 +#: netbox/extras/tables/tables.py:850 netbox/templates/core/plugin.html:66 msgid "URL" msgstr "URL" #: netbox/core/models/data.py:60 -#: netbox/dcim/models/device_component_templates.py:442 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:605 #: netbox/extras/models/models.py:81 netbox/extras/models/models.py:319 #: netbox/extras/models/models.py:507 netbox/extras/models/models.py:586 @@ -2607,7 +2454,7 @@ msgstr "путь" msgid "File path relative to the data source's root" msgstr "Путь к файлу относительно корня источника данных" -#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:509 +#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:519 msgid "size" msgstr "размер" @@ -2756,27 +2603,24 @@ msgid "Full Name" msgstr "Полное имя" #: netbox/core/tables/change_logging.py:38 netbox/core/tables/jobs.py:23 -#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:286 -#: netbox/extras/tables/tables.py:379 netbox/extras/tables/tables.py:398 -#: netbox/extras/tables/tables.py:430 netbox/extras/tables/tables.py:514 -#: netbox/extras/tables/tables.py:583 netbox/extras/tables/tables.py:752 -#: netbox/extras/tables/tables.py:793 netbox/extras/tables/tables.py:847 -#: netbox/netbox/tables/tables.py:343 -#: netbox/templates/core/objectchange.html:58 +#: netbox/core/ui/panels.py:83 netbox/extras/choices.py:41 +#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:379 +#: netbox/extras/tables/tables.py:398 netbox/extras/tables/tables.py:430 +#: netbox/extras/tables/tables.py:514 netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:752 netbox/extras/tables/tables.py:793 +#: netbox/extras/tables/tables.py:847 netbox/netbox/tables/tables.py:343 #: netbox/templates/extras/eventrule.html:78 #: netbox/templates/extras/journalentry.html:18 #: netbox/tenancy/tables/contacts.py:87 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "Объект" -#: netbox/core/tables/change_logging.py:43 -#: netbox/templates/core/objectchange.html:74 +#: netbox/core/tables/change_logging.py:43 netbox/core/ui/panels.py:89 msgid "Request ID" msgstr "Идентификатор запроса" #: netbox/core/tables/change_logging.py:46 netbox/core/tables/jobs.py:79 #: netbox/extras/tables/tables.py:796 netbox/extras/tables/tables.py:853 -#: netbox/templates/core/objectchange.html:68 msgid "Message" msgstr "Сообщение" @@ -2789,11 +2633,11 @@ msgstr "Активен" msgid "Last Synced" msgstr "Последняя синхронизация" -#: netbox/core/tables/data.py:37 netbox/templates/core/datasource.html:118 +#: netbox/core/tables/data.py:37 msgid "Files" msgstr "файлы" -#: netbox/core/tables/data.py:61 netbox/templates/core/datafile.html:25 +#: netbox/core/tables/data.py:61 msgid "Path" msgstr "Путь" @@ -2817,7 +2661,7 @@ msgstr "ID" msgid "Interval" msgstr "Интервал" -#: netbox/core/tables/jobs.py:49 +#: netbox/core/tables/jobs.py:49 netbox/core/views.py:255 msgid "Log Entries" msgstr "Записи в журнале" @@ -2837,7 +2681,7 @@ msgstr "Нет записей в журнале" msgid "Version" msgstr "Версия" -#: netbox/core/tables/plugins.py:21 netbox/templates/core/datafile.html:32 +#: netbox/core/tables/plugins.py:21 msgid "Last Updated" msgstr "Последнее обновление" @@ -2933,7 +2777,61 @@ msgstr "PID" msgid "No workers found" msgstr "Рабочие процессы не найдены" -#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:447 +#: netbox/core/ui/panels.py:13 +msgid "Last synced" +msgstr "Последняя синхронизация" + +#: netbox/core/ui/panels.py:29 +msgid "Backend" +msgstr "Серверная часть" + +#: netbox/core/ui/panels.py:33 netbox/extras/tables/tables.py:234 +#: netbox/extras/tables/tables.py:604 netbox/extras/tables/tables.py:634 +#: netbox/extras/tables/tables.py:676 +#: netbox/templates/core/inc/datafile_panel.html:4 +#: netbox/templates/core/inc/datafile_panel.html:17 +#: netbox/templates/extras/configtemplate.html:47 +#: netbox/templates/extras/object_render_config.html:23 +#: netbox/templates/generic/bulk_import.html:35 +msgid "Data File" +msgstr "Файл данных" + +#: netbox/core/ui/panels.py:38 +msgid "SHA256 hash" +msgstr "SHA256 хэш" + +#: netbox/core/ui/panels.py:43 +msgid "Content" +msgstr "Контент" + +#: netbox/core/ui/panels.py:47 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 +msgid "Job" +msgstr "Задача" + +#: netbox/core/ui/panels.py:50 netbox/core/ui/panels.py:79 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 +#: netbox/extras/forms/filtersets.py:335 +#: netbox/extras/forms/model_forms.py:338 +#: netbox/extras/forms/model_forms.py:398 +#: netbox/extras/forms/model_forms.py:435 +#: netbox/tenancy/forms/filtersets.py:121 +msgid "Object type" +msgstr "Тип объекта" + +#: netbox/core/ui/panels.py:56 +msgid "Created by" +msgstr "Cоздан" + +#: netbox/core/ui/panels.py:60 +msgid "Scheduling" +msgstr "Планирование" + +#: netbox/core/ui/panels.py:69 netbox/users/ui/panels.py:53 +msgid "Change" +msgstr "Изменить" + +#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Задача {job_id} не найдена" @@ -2943,55 +2841,63 @@ msgstr "Задача {job_id} не найдена" msgid "Job {id} not found." msgstr "Задача {id} не найдена." -#: netbox/core/views.py:95 +#: netbox/core/views.py:125 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Задача #{id} для синхронизации {datasource} добавлена в очередь" -#: netbox/core/views.py:199 netbox/templates/extras/htmx/script_result.html:43 +#: netbox/core/views.py:237 netbox/extras/forms/filtersets.py:179 +#: netbox/extras/forms/filtersets.py:380 netbox/extras/forms/filtersets.py:403 +#: netbox/extras/forms/filtersets.py:499 +#: netbox/extras/forms/model_forms.py:696 +#: netbox/templates/extras/eventrule.html:84 +msgid "Data" +msgstr "Данные" + +#: netbox/core/views.py:248 netbox/templates/extras/htmx/script_result.html:43 msgid "Log" msgstr "Журнал" -#: netbox/core/views.py:383 +#: netbox/core/views.py:467 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Ревизия конфигурации #{id} восстановлена" -#: netbox/core/views.py:486 +#: netbox/core/views.py:570 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Задача {id} была удалена." -#: netbox/core/views.py:488 +#: netbox/core/views.py:572 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Ошибка при удалении задачи {id}: {error}" -#: netbox/core/views.py:497 +#: netbox/core/views.py:581 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Задача {id} была повторно добавлена в очередь." -#: netbox/core/views.py:506 +#: netbox/core/views.py:590 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Задача {id} добавлена в очередь." -#: netbox/core/views.py:515 +#: netbox/core/views.py:599 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Задача {id} остановлена." -#: netbox/core/views.py:517 +#: netbox/core/views.py:601 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Не удалось остановить задачу {id}" -#: netbox/core/views.py:671 +#: netbox/core/views.py:755 msgid "Plugins catalog could not be loaded" msgstr "Не удалось загрузить каталог плагинов" -#: netbox/core/views.py:707 +#: netbox/core/views.py:791 #, python-brace-format msgid "Plugin {name} not found" msgstr "Плагин {name} не найден" @@ -3014,7 +2920,7 @@ msgstr "Режим интерфейса не поддерживает помеч msgid "Position (U)" msgstr "Позиция (U)" -#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:47 +#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:49 msgid "Facility ID" msgstr "Идентификатор объекта" @@ -3041,8 +2947,8 @@ msgid "Staging" msgstr "Подготовка к развертыванию" #: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208 -#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1934 -#: netbox/dcim/choices.py:2083 netbox/virtualization/choices.py:23 +#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1955 +#: netbox/dcim/choices.py:2104 netbox/virtualization/choices.py:23 #: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282 msgid "Decommissioning" msgstr "Вывод из эксплуатации" @@ -3108,7 +3014,7 @@ msgstr "Выведенный(-ая) из использования" msgid "Millimeters" msgstr "Миллиметры" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1956 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1977 msgid "Inches" msgstr "Дюймы" @@ -3136,21 +3042,17 @@ msgstr "Несвежий" #: netbox/dcim/forms/bulk_import.py:1211 netbox/dcim/forms/filtersets.py:265 #: netbox/dcim/forms/filtersets.py:780 netbox/dcim/forms/filtersets.py:796 #: netbox/dcim/forms/model_forms.py:93 netbox/dcim/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:188 netbox/dcim/forms/model_forms.py:514 -#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1709 +#: netbox/dcim/forms/model_forms.py:214 netbox/dcim/forms/model_forms.py:540 +#: netbox/dcim/forms/model_forms.py:561 netbox/dcim/forms/model_forms.py:1252 +#: netbox/dcim/forms/model_forms.py:1735 #: netbox/dcim/forms/object_import.py:177 netbox/dcim/tables/devices.py:702 #: netbox/dcim/tables/devices.py:737 netbox/dcim/tables/devices.py:965 #: netbox/dcim/tables/devices.py:1052 netbox/dcim/tables/devices.py:1205 #: netbox/ipam/forms/bulk_import.py:601 netbox/ipam/forms/model_forms.py:758 #: netbox/ipam/tables/fhrp.py:56 netbox/ipam/tables/ip.py:329 #: netbox/ipam/tables/services.py:42 netbox/netbox/tables/tables.py:329 -#: netbox/netbox/ui/panels.py:206 netbox/templates/dcim/interface.html:113 -#: netbox/templates/ipam/service.html:30 -#: netbox/templates/tenancy/contactgroup.html:29 -#: netbox/templates/tenancy/tenantgroup.html:37 -#: netbox/tenancy/forms/bulk_edit.py:33 netbox/tenancy/forms/bulk_edit.py:62 -#: netbox/tenancy/forms/bulk_import.py:31 +#: netbox/netbox/ui/panels.py:207 netbox/tenancy/forms/bulk_edit.py:33 +#: netbox/tenancy/forms/bulk_edit.py:62 netbox/tenancy/forms/bulk_import.py:31 #: netbox/tenancy/forms/bulk_import.py:64 #: netbox/tenancy/forms/model_forms.py:26 #: netbox/tenancy/forms/model_forms.py:67 @@ -3184,7 +3086,7 @@ msgid "Rear" msgstr "Вид сзади" #: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258 -#: netbox/dcim/choices.py:2081 netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:2102 netbox/virtualization/choices.py:47 msgid "Staged" msgstr "Подготовлен" @@ -3217,7 +3119,7 @@ msgid "Top to bottom" msgstr "Сверху вниз" #: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280 -#: netbox/dcim/choices.py:1566 +#: netbox/dcim/choices.py:1587 msgid "Passive" msgstr "Пассивный" @@ -3246,8 +3148,8 @@ msgid "Proprietary" msgstr "Проприетарный" #: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853 -#: netbox/dcim/choices.py:1478 netbox/dcim/choices.py:1480 -#: netbox/dcim/choices.py:1716 netbox/dcim/choices.py:1718 +#: netbox/dcim/choices.py:1499 netbox/dcim/choices.py:1501 +#: netbox/dcim/choices.py:1737 netbox/dcim/choices.py:1739 #: netbox/netbox/navigation/menu.py:212 msgid "Other" msgstr "Другой" @@ -3260,348 +3162,350 @@ msgstr "ITA/Международный" msgid "Physical" msgstr "Физический" -#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1153 +#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1162 msgid "Virtual" msgstr "Виртуальный" -#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1355 +#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 -#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125 -#: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150 -#: netbox/netbox/navigation/menu.py:154 -#: netbox/templates/dcim/interface.html:285 +#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1151 +#: netbox/dcim/forms/model_forms.py:1615 netbox/dcim/ui/panels.py:546 +#: netbox/netbox/navigation/menu.py:150 netbox/netbox/navigation/menu.py:154 msgid "Wireless" msgstr "Беспроводной" -#: netbox/dcim/choices.py:1151 +#: netbox/dcim/choices.py:1160 msgid "Virtual interfaces" msgstr "Виртуальные интерфейсы" -#: netbox/dcim/choices.py:1154 netbox/dcim/forms/bulk_edit.py:1399 -#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107 -#: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:117 +#: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 +#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1133 +#: netbox/dcim/tables/devices.py:741 #: netbox/virtualization/forms/bulk_edit.py:177 #: netbox/virtualization/forms/bulk_import.py:171 #: netbox/virtualization/tables/virtualmachines.py:137 msgid "Bridge" msgstr "Мост" -#: netbox/dcim/choices.py:1155 +#: netbox/dcim/choices.py:1164 msgid "Link Aggregation Group (LAG)" msgstr "Группа агрегации линков (LAG)" -#: netbox/dcim/choices.py:1159 +#: netbox/dcim/choices.py:1168 msgid "FastEthernet (100 Mbps)" msgstr "Быстрый Ethernet (100 Мбит/с)" -#: netbox/dcim/choices.py:1168 +#: netbox/dcim/choices.py:1177 msgid "GigabitEthernet (1 Gbps)" msgstr "Гигабитный Ethernet (1 Гбит/с)" -#: netbox/dcim/choices.py:1186 +#: netbox/dcim/choices.py:1195 msgid "2.5/5 Gbps Ethernet" msgstr "Ethernet 2,5/5 Гбит/с" -#: netbox/dcim/choices.py:1193 +#: netbox/dcim/choices.py:1202 msgid "10 Gbps Ethernet" msgstr "Ethernet 10 Гбит/с" -#: netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1218 msgid "25 Gbps Ethernet" msgstr "Ethernet 25 Гбит/с" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1228 msgid "40 Gbps Ethernet" msgstr "Ethernet 40 Гбит/с" -#: netbox/dcim/choices.py:1230 +#: netbox/dcim/choices.py:1239 msgid "50 Gbps Ethernet" msgstr "Ethernet 50 Гбит/с" -#: netbox/dcim/choices.py:1240 +#: netbox/dcim/choices.py:1249 msgid "100 Gbps Ethernet" msgstr "Ethernet 100 Гбит/с" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1270 msgid "200 Gbps Ethernet" msgstr "Ethernet 200 Гбит/с" -#: netbox/dcim/choices.py:1275 +#: netbox/dcim/choices.py:1284 msgid "400 Gbps Ethernet" msgstr "Ethernet 400 Гбит/с" -#: netbox/dcim/choices.py:1293 +#: netbox/dcim/choices.py:1302 msgid "800 Gbps Ethernet" msgstr "Ethernet 800 Гбит/с" -#: netbox/dcim/choices.py:1302 +#: netbox/dcim/choices.py:1311 +msgid "1.6 Tbps Ethernet" +msgstr "Ethernet 1,6 Тбит/с" + +#: netbox/dcim/choices.py:1319 msgid "Pluggable transceivers" msgstr "Подключаемые трансиверы" -#: netbox/dcim/choices.py:1339 +#: netbox/dcim/choices.py:1359 msgid "Backplane Ethernet" msgstr "Ethernet объединительной платы" -#: netbox/dcim/choices.py:1371 +#: netbox/dcim/choices.py:1392 msgid "Cellular" msgstr "Сотовая связь" -#: netbox/dcim/choices.py:1423 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/choices.py:1444 netbox/dcim/forms/filtersets.py:425 #: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112 #: netbox/dcim/forms/filtersets.py:1910 -#: netbox/templates/dcim/inventoryitem.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:66 msgid "Serial" msgstr "Серийный" -#: netbox/dcim/choices.py:1438 +#: netbox/dcim/choices.py:1459 msgid "Coaxial" msgstr "Коаксиальный" -#: netbox/dcim/choices.py:1459 +#: netbox/dcim/choices.py:1480 msgid "Stacking" msgstr "Стекирование" -#: netbox/dcim/choices.py:1511 +#: netbox/dcim/choices.py:1532 msgid "Half" msgstr "Полу" -#: netbox/dcim/choices.py:1512 +#: netbox/dcim/choices.py:1533 msgid "Full" msgstr "Полный" -#: netbox/dcim/choices.py:1513 netbox/netbox/preferences.py:32 +#: netbox/dcim/choices.py:1534 netbox/netbox/preferences.py:32 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Авто" -#: netbox/dcim/choices.py:1525 +#: netbox/dcim/choices.py:1546 msgid "Access" msgstr "Доступ" -#: netbox/dcim/choices.py:1526 netbox/ipam/tables/vlans.py:148 +#: netbox/dcim/choices.py:1547 netbox/ipam/tables/vlans.py:148 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Тегированный" -#: netbox/dcim/choices.py:1527 +#: netbox/dcim/choices.py:1548 msgid "Tagged (All)" msgstr "Тегированный (все)" -#: netbox/dcim/choices.py:1528 netbox/templates/ipam/vlan_edit.html:26 +#: netbox/dcim/choices.py:1549 netbox/templates/ipam/vlan_edit.html:26 msgid "Q-in-Q (802.1ad)" msgstr "Q-in-Q (802.1ad)" -#: netbox/dcim/choices.py:1557 +#: netbox/dcim/choices.py:1578 msgid "IEEE Standard" msgstr "Стандарт IEEE" -#: netbox/dcim/choices.py:1568 +#: netbox/dcim/choices.py:1589 msgid "Passive 24V (2-pair)" msgstr "Пассивный режим 24 В (2 пары)" -#: netbox/dcim/choices.py:1569 +#: netbox/dcim/choices.py:1590 msgid "Passive 24V (4-pair)" msgstr "Пассивное напряжение 24 В (4 пары)" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1591 msgid "Passive 48V (2-pair)" msgstr "Пассивное напряжение 48 В (2 пары)" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1592 msgid "Passive 48V (4-pair)" msgstr "Пассивное напряжение 48 В (4 пары)" -#: netbox/dcim/choices.py:1644 +#: netbox/dcim/choices.py:1665 msgid "Copper" msgstr "Медь" -#: netbox/dcim/choices.py:1667 +#: netbox/dcim/choices.py:1688 msgid "Fiber Optic" msgstr "Оптоволокно" -#: netbox/dcim/choices.py:1703 netbox/dcim/choices.py:1917 +#: netbox/dcim/choices.py:1724 netbox/dcim/choices.py:1938 msgid "USB" msgstr "USB" -#: netbox/dcim/choices.py:1759 +#: netbox/dcim/choices.py:1780 msgid "Single" msgstr "Одинокий" -#: netbox/dcim/choices.py:1761 +#: netbox/dcim/choices.py:1782 msgid "1C1P" msgstr "1 ШТУКА" -#: netbox/dcim/choices.py:1762 +#: netbox/dcim/choices.py:1783 msgid "1C2P" msgstr "1С2П" -#: netbox/dcim/choices.py:1763 +#: netbox/dcim/choices.py:1784 msgid "1C4P" msgstr "1С4П" -#: netbox/dcim/choices.py:1764 +#: netbox/dcim/choices.py:1785 msgid "1C6P" msgstr "16XP" -#: netbox/dcim/choices.py:1765 +#: netbox/dcim/choices.py:1786 msgid "1C8P" msgstr "18CP" -#: netbox/dcim/choices.py:1766 +#: netbox/dcim/choices.py:1787 msgid "1C12P" msgstr "1X12P" -#: netbox/dcim/choices.py:1767 +#: netbox/dcim/choices.py:1788 msgid "1C16P" msgstr "1X16P" -#: netbox/dcim/choices.py:1771 +#: netbox/dcim/choices.py:1792 msgid "Trunk" msgstr "багажник" -#: netbox/dcim/choices.py:1773 +#: netbox/dcim/choices.py:1794 msgid "2C1P trunk" msgstr "Багажник 2C1P" -#: netbox/dcim/choices.py:1774 +#: netbox/dcim/choices.py:1795 msgid "2C2P trunk" msgstr "Багажник 2C2P" -#: netbox/dcim/choices.py:1775 +#: netbox/dcim/choices.py:1796 msgid "2C4P trunk" msgstr "Багажник 2C4P" -#: netbox/dcim/choices.py:1776 +#: netbox/dcim/choices.py:1797 msgid "2C4P trunk (shuffle)" msgstr "Багажник 2C4P (шаффл)" -#: netbox/dcim/choices.py:1777 +#: netbox/dcim/choices.py:1798 msgid "2C6P trunk" msgstr "Багажник 2C6P" -#: netbox/dcim/choices.py:1778 +#: netbox/dcim/choices.py:1799 msgid "2C8P trunk" msgstr "Багажник 2C8P" -#: netbox/dcim/choices.py:1779 +#: netbox/dcim/choices.py:1800 msgid "2C12P trunk" msgstr "Багажник 2C12P" -#: netbox/dcim/choices.py:1780 +#: netbox/dcim/choices.py:1801 msgid "4C1P trunk" msgstr "Багажник 4C1P" -#: netbox/dcim/choices.py:1781 +#: netbox/dcim/choices.py:1802 msgid "4C2P trunk" msgstr "Багажник 4C2P" -#: netbox/dcim/choices.py:1782 +#: netbox/dcim/choices.py:1803 msgid "4C4P trunk" msgstr "Багажник 4C4P" -#: netbox/dcim/choices.py:1783 +#: netbox/dcim/choices.py:1804 msgid "4C4P trunk (shuffle)" msgstr "Багажник 4C4P (шаффл)" -#: netbox/dcim/choices.py:1784 +#: netbox/dcim/choices.py:1805 msgid "4C6P trunk" msgstr "Багажник 4C6P" -#: netbox/dcim/choices.py:1785 +#: netbox/dcim/choices.py:1806 msgid "4C8P trunk" msgstr "Багажник 4C8P" -#: netbox/dcim/choices.py:1786 +#: netbox/dcim/choices.py:1807 msgid "8C4P trunk" msgstr "Багажник 8C4P" -#: netbox/dcim/choices.py:1790 +#: netbox/dcim/choices.py:1811 msgid "Breakout" msgstr "Прорыв" -#: netbox/dcim/choices.py:1792 +#: netbox/dcim/choices.py:1813 msgid "1C4P:4C1P breakout" msgstr "прорыв 1C4P: 4C1P" -#: netbox/dcim/choices.py:1793 +#: netbox/dcim/choices.py:1814 msgid "1C6P:6C1P breakout" msgstr "прорыв 1С6П:6К1П" -#: netbox/dcim/choices.py:1794 +#: netbox/dcim/choices.py:1815 msgid "2C4P:8C1P breakout (shuffle)" msgstr "Прорыв 2C4P: 8C1P (перемешивание)" -#: netbox/dcim/choices.py:1852 +#: netbox/dcim/choices.py:1873 msgid "Copper - Twisted Pair (UTP/STP)" msgstr "Медь — витая пара (UTP/STP)" -#: netbox/dcim/choices.py:1866 +#: netbox/dcim/choices.py:1887 msgid "Copper - Twinax (DAC)" msgstr "Медь — Twinax (ЦАП)" -#: netbox/dcim/choices.py:1873 +#: netbox/dcim/choices.py:1894 msgid "Copper - Coaxial" msgstr "Медь — коаксиальная" -#: netbox/dcim/choices.py:1888 +#: netbox/dcim/choices.py:1909 msgid "Fiber - Multimode" msgstr "Оптоволокно — многомодовое" -#: netbox/dcim/choices.py:1899 +#: netbox/dcim/choices.py:1920 msgid "Fiber - Single-mode" msgstr "Оптоволокно — одномодовое" -#: netbox/dcim/choices.py:1907 +#: netbox/dcim/choices.py:1928 msgid "Fiber - Other" msgstr "Прочее волокно" -#: netbox/dcim/choices.py:1932 netbox/dcim/forms/filtersets.py:1402 +#: netbox/dcim/choices.py:1953 netbox/dcim/forms/filtersets.py:1402 msgid "Connected" msgstr "Подключено" -#: netbox/dcim/choices.py:1951 netbox/netbox/choices.py:177 +#: netbox/dcim/choices.py:1972 netbox/netbox/choices.py:177 msgid "Kilometers" msgstr "Километры" -#: netbox/dcim/choices.py:1952 netbox/netbox/choices.py:178 +#: netbox/dcim/choices.py:1973 netbox/netbox/choices.py:178 #: netbox/templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Метры" -#: netbox/dcim/choices.py:1953 +#: netbox/dcim/choices.py:1974 msgid "Centimeters" msgstr "Сантиметры" -#: netbox/dcim/choices.py:1954 netbox/netbox/choices.py:179 +#: netbox/dcim/choices.py:1975 netbox/netbox/choices.py:179 msgid "Miles" msgstr "Мили" -#: netbox/dcim/choices.py:1955 netbox/netbox/choices.py:180 +#: netbox/dcim/choices.py:1976 netbox/netbox/choices.py:180 #: netbox/templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Футы" -#: netbox/dcim/choices.py:2003 +#: netbox/dcim/choices.py:2024 msgid "Redundant" msgstr "Резервный" -#: netbox/dcim/choices.py:2024 +#: netbox/dcim/choices.py:2045 msgid "Single phase" msgstr "Однофазный" -#: netbox/dcim/choices.py:2025 +#: netbox/dcim/choices.py:2046 msgid "Three-phase" msgstr "Трехфазный" -#: netbox/dcim/choices.py:2041 netbox/extras/choices.py:53 +#: netbox/dcim/choices.py:2062 netbox/extras/choices.py:53 #: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70 #: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Инвалид" -#: netbox/dcim/choices.py:2042 +#: netbox/dcim/choices.py:2063 msgid "Faulty" msgstr "Неисправен" @@ -3883,8 +3787,9 @@ msgstr "Полная глубина" #: netbox/dcim/filtersets.py:1323 netbox/dcim/forms/filtersets.py:920 #: netbox/dcim/forms/filtersets.py:1634 netbox/dcim/forms/filtersets.py:1979 -#: netbox/dcim/forms/model_forms.py:1915 netbox/dcim/models/devices.py:1313 -#: netbox/dcim/models/devices.py:1336 netbox/virtualization/filtersets.py:230 +#: netbox/dcim/forms/model_forms.py:1941 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1336 netbox/dcim/ui/panels.py:366 +#: netbox/dcim/ui/panels.py:504 netbox/virtualization/filtersets.py:230 #: netbox/virtualization/filtersets.py:318 #: netbox/virtualization/forms/filtersets.py:191 #: netbox/virtualization/forms/filtersets.py:245 @@ -3972,7 +3877,6 @@ msgstr "Виртуальное шасси (ID)" #: netbox/dcim/forms/object_create.py:329 netbox/dcim/tables/devices.py:215 #: netbox/netbox/navigation/menu.py:82 #: netbox/templates/dcim/device_edit.html:95 -#: netbox/templates/dcim/virtualchassis.html:10 #: netbox/templates/dcim/virtualchassis_edit.html:28 msgid "Virtual Chassis" msgstr "Виртуальное шасси" @@ -4032,7 +3936,7 @@ msgstr "Назначено" msgid "Is primary" msgstr "Является основным" -#: netbox/dcim/filtersets.py:2060 netbox/templates/dcim/interface.html:81 +#: netbox/dcim/filtersets.py:2060 #: netbox/virtualization/forms/model_forms.py:386 #: netbox/virtualization/ui/panels.py:62 msgid "802.1Q Mode" @@ -4049,27 +3953,25 @@ msgstr "Назначенный VID" #: netbox/dcim/filtersets.py:2074 netbox/dcim/forms/bulk_edit.py:1512 #: netbox/dcim/forms/bulk_import.py:1034 netbox/dcim/forms/filtersets.py:1687 -#: netbox/dcim/forms/model_forms.py:1555 +#: netbox/dcim/forms/model_forms.py:1581 #: netbox/dcim/models/device_components.py:867 -#: netbox/dcim/tables/devices.py:667 netbox/ipam/filtersets.py:360 -#: netbox/ipam/filtersets.py:372 netbox/ipam/filtersets.py:511 -#: netbox/ipam/filtersets.py:618 netbox/ipam/filtersets.py:630 -#: netbox/ipam/forms/bulk_edit.py:190 netbox/ipam/forms/bulk_edit.py:240 -#: netbox/ipam/forms/bulk_edit.py:281 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:248 netbox/ipam/forms/bulk_import.py:284 -#: netbox/ipam/forms/filtersets.py:70 netbox/ipam/forms/filtersets.py:194 -#: netbox/ipam/forms/filtersets.py:348 netbox/ipam/forms/model_forms.py:68 -#: netbox/ipam/forms/model_forms.py:203 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:303 netbox/ipam/forms/model_forms.py:466 -#: netbox/ipam/forms/model_forms.py:480 netbox/ipam/forms/model_forms.py:494 -#: netbox/ipam/models/ip.py:224 netbox/ipam/models/ip.py:518 -#: netbox/ipam/models/ip.py:747 netbox/ipam/models/vrfs.py:61 -#: netbox/ipam/tables/ip.py:187 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:311 netbox/ipam/tables/ip.py:413 -#: netbox/templates/dcim/interface.html:170 -#: netbox/templates/ipam/ipaddress.html:18 -#: netbox/templates/ipam/iprange.html:47 netbox/templates/ipam/prefix.html:19 -#: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 +#: netbox/dcim/tables/devices.py:667 netbox/dcim/ui/panels.py:507 +#: netbox/ipam/filtersets.py:360 netbox/ipam/filtersets.py:372 +#: netbox/ipam/filtersets.py:511 netbox/ipam/filtersets.py:618 +#: netbox/ipam/filtersets.py:630 netbox/ipam/forms/bulk_edit.py:190 +#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:281 +#: netbox/ipam/forms/bulk_import.py:163 netbox/ipam/forms/bulk_import.py:248 +#: netbox/ipam/forms/bulk_import.py:284 netbox/ipam/forms/filtersets.py:70 +#: netbox/ipam/forms/filtersets.py:194 netbox/ipam/forms/filtersets.py:348 +#: netbox/ipam/forms/model_forms.py:68 netbox/ipam/forms/model_forms.py:203 +#: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:303 +#: netbox/ipam/forms/model_forms.py:466 netbox/ipam/forms/model_forms.py:480 +#: netbox/ipam/forms/model_forms.py:494 netbox/ipam/models/ip.py:224 +#: netbox/ipam/models/ip.py:528 netbox/ipam/models/ip.py:757 +#: netbox/ipam/models/vrfs.py:61 netbox/ipam/tables/ip.py:187 +#: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:311 +#: netbox/ipam/tables/ip.py:413 netbox/ipam/ui/panels.py:102 +#: netbox/ipam/ui/panels.py:111 netbox/ipam/ui/panels.py:139 #: netbox/virtualization/forms/bulk_edit.py:226 #: netbox/virtualization/forms/bulk_import.py:218 #: netbox/virtualization/forms/filtersets.py:250 @@ -4092,9 +3994,9 @@ msgid "L2VPN (ID)" msgstr "L2VPN (ID)" #: netbox/dcim/filtersets.py:2092 netbox/dcim/forms/filtersets.py:1692 -#: netbox/dcim/tables/devices.py:607 netbox/ipam/filtersets.py:1087 -#: netbox/ipam/forms/filtersets.py:613 netbox/ipam/tables/vlans.py:116 -#: netbox/templates/dcim/interface.html:104 netbox/templates/ipam/vlan.html:82 +#: netbox/dcim/tables/devices.py:607 netbox/dcim/ui/panels.py:487 +#: netbox/ipam/filtersets.py:1087 netbox/ipam/forms/filtersets.py:613 +#: netbox/ipam/tables/vlans.py:116 netbox/ipam/ui/panels.py:206 #: netbox/virtualization/forms/filtersets.py:255 #: netbox/vpn/forms/bulk_import.py:285 netbox/vpn/forms/filtersets.py:268 #: netbox/vpn/forms/model_forms.py:407 netbox/vpn/forms/model_forms.py:425 @@ -4108,10 +4010,9 @@ msgid "VLAN Translation Policy (ID)" msgstr "Политика трансляции VLAN (ID)" #: netbox/dcim/filtersets.py:2105 netbox/dcim/forms/filtersets.py:1658 -#: netbox/dcim/forms/model_forms.py:1572 +#: netbox/dcim/forms/model_forms.py:1598 #: netbox/dcim/models/device_components.py:668 #: netbox/ipam/forms/filtersets.py:531 netbox/ipam/forms/model_forms.py:703 -#: netbox/templates/ipam/vlantranslationpolicy.html:11 #: netbox/virtualization/forms/bulk_edit.py:231 #: netbox/virtualization/forms/filtersets.py:265 #: netbox/virtualization/forms/model_forms.py:364 @@ -4155,9 +4056,6 @@ msgid "LAG interface (ID)" msgstr "Интерфейс LAG (ID)" #: netbox/dcim/filtersets.py:2185 netbox/dcim/tables/devices.py:1194 -#: netbox/templates/dcim/interface.html:149 -#: netbox/templates/dcim/macaddress.html:11 -#: netbox/templates/dcim/macaddress.html:14 #: netbox/virtualization/ui/panels.py:71 msgid "MAC Address" msgstr "MAC-адрес" @@ -4166,15 +4064,14 @@ msgstr "MAC-адрес" msgid "Primary MAC address (ID)" msgstr "Основной MAC-адрес (ID)" -#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1559 +#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1585 #: netbox/virtualization/filtersets.py:331 #: netbox/virtualization/forms/model_forms.py:302 msgid "Primary MAC address" msgstr "Основной MAC-адрес" #: netbox/dcim/filtersets.py:2225 netbox/dcim/filtersets.py:2237 -#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1895 -#: netbox/templates/dcim/virtualdevicecontext.html:15 +#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1921 msgid "Virtual Device Context" msgstr "Виртуальный контекст" @@ -4233,6 +4130,7 @@ msgstr "Распределительный щит (ID)" #: netbox/netbox/forms/bulk_import.py:27 netbox/netbox/forms/mixins.py:131 #: netbox/netbox/tables/columns.py:495 #: netbox/templates/circuits/inc/circuit_termination.html:29 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:29 #: netbox/templates/generic/bulk_edit.html:78 #: netbox/templates/inc/panels/tags.html:5 #: netbox/utilities/forms/fields/fields.py:101 @@ -4240,14 +4138,12 @@ msgid "Tags" msgstr "Теги" #: netbox/dcim/forms/bulk_create.py:116 netbox/dcim/forms/filtersets.py:1842 -#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:595 -#: netbox/dcim/forms/model_forms.py:661 netbox/dcim/forms/object_create.py:155 +#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:621 +#: netbox/dcim/forms/model_forms.py:687 netbox/dcim/forms/object_create.py:155 #: netbox/dcim/forms/object_create.py:256 netbox/dcim/tables/devices.py:169 -#: netbox/templates/dcim/frontport.html:132 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/panels/front_port_mappings.html:9 +#: netbox/templates/dcim/panels/rear_port_mappings.html:9 #: netbox/templates/dcim/panels/virtual_chassis_members.html:9 -#: netbox/templates/dcim/rearport.html:126 -#: netbox/templates/dcim/virtualchassis.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:67 msgid "Position" msgstr "Позиция" @@ -4278,7 +4174,7 @@ msgid "Contact E-mail" msgstr "Контактный адрес электронной почты" #: netbox/dcim/forms/bulk_edit.py:152 netbox/dcim/forms/bulk_import.py:138 -#: netbox/dcim/forms/model_forms.py:147 +#: netbox/dcim/forms/model_forms.py:157 msgid "Time zone" msgstr "Часовой пояс" @@ -4293,17 +4189,16 @@ msgstr "Часовой пояс" #: netbox/dcim/forms/filtersets.py:546 netbox/dcim/forms/filtersets.py:695 #: netbox/dcim/forms/filtersets.py:801 netbox/dcim/forms/filtersets.py:884 #: netbox/dcim/forms/filtersets.py:1096 netbox/dcim/forms/filtersets.py:1907 -#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:223 -#: netbox/dcim/forms/model_forms.py:354 netbox/dcim/forms/model_forms.py:366 -#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:540 -#: netbox/dcim/forms/model_forms.py:1239 netbox/dcim/forms/model_forms.py:1722 +#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:249 +#: netbox/dcim/forms/model_forms.py:380 netbox/dcim/forms/model_forms.py:392 +#: netbox/dcim/forms/model_forms.py:462 netbox/dcim/forms/model_forms.py:566 +#: netbox/dcim/forms/model_forms.py:1265 netbox/dcim/forms/model_forms.py:1748 #: netbox/dcim/forms/object_import.py:188 netbox/dcim/tables/devices.py:101 #: netbox/dcim/tables/devices.py:176 netbox/dcim/tables/devices.py:1035 #: netbox/dcim/tables/devicetypes.py:87 netbox/dcim/tables/devicetypes.py:322 #: netbox/dcim/tables/modules.py:47 netbox/dcim/tables/modules.py:90 #: netbox/dcim/tables/racks.py:51 netbox/dcim/tables/racks.py:121 -#: netbox/templates/dcim/inventoryitem.html:48 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/panels/installed_module.html:13 #: netbox/templates/dcim/panels/module_type.html:7 msgid "Manufacturer" msgstr "Производитель" @@ -4328,7 +4223,7 @@ msgid "Height (U)" msgstr "Высота (U)" #: netbox/dcim/forms/bulk_edit.py:244 netbox/dcim/forms/bulk_edit.py:387 -#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:39 +#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:41 msgid "Descending units" msgstr "Единицы по убыванию" @@ -4362,10 +4257,10 @@ msgstr "Глубина крепления" #: netbox/dcim/forms/filtersets.py:362 netbox/dcim/forms/filtersets.py:441 #: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:651 #: netbox/dcim/forms/filtersets.py:683 netbox/dcim/forms/filtersets.py:755 -#: netbox/dcim/forms/model_forms.py:237 netbox/dcim/forms/model_forms.py:318 +#: netbox/dcim/forms/model_forms.py:263 netbox/dcim/forms/model_forms.py:344 #: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:55 #: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:162 -#: netbox/dcim/views.py:891 netbox/dcim/views.py:1019 +#: netbox/dcim/views.py:893 netbox/dcim/views.py:1021 #: netbox/extras/forms/bulk_edit.py:57 netbox/extras/forms/bulk_edit.py:137 #: netbox/extras/forms/bulk_edit.py:191 netbox/extras/forms/bulk_edit.py:219 #: netbox/extras/forms/bulk_edit.py:315 netbox/extras/forms/bulk_edit.py:341 @@ -4376,7 +4271,7 @@ msgstr "Глубина крепления" #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 #: netbox/templates/extras/tableconfig.html:41 -#: netbox/templates/extras/tag.html:32 netbox/templates/ipam/role.html:30 +#: netbox/templates/extras/tag.html:32 msgid "Weight" msgstr "Вес" @@ -4395,18 +4290,18 @@ msgid "Weight unit" msgstr "Единица веса" #: netbox/dcim/forms/bulk_edit.py:290 netbox/dcim/forms/filtersets.py:335 -#: netbox/dcim/forms/model_forms.py:233 netbox/dcim/forms/model_forms.py:272 +#: netbox/dcim/forms/model_forms.py:259 netbox/dcim/forms/model_forms.py:298 msgid "Rack Type" msgstr "Тип стойки" #: netbox/dcim/forms/bulk_edit.py:292 netbox/dcim/forms/bulk_edit.py:440 -#: netbox/dcim/forms/model_forms.py:236 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/model_forms.py:262 netbox/dcim/forms/model_forms.py:343 msgid "Outer Dimensions" msgstr "Внешние размеры" -#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:238 -#: netbox/dcim/forms/model_forms.py:319 netbox/dcim/ui/panels.py:135 -#: netbox/dcim/views.py:885 netbox/dcim/views.py:1017 +#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:345 netbox/dcim/ui/panels.py:137 +#: netbox/dcim/views.py:887 netbox/dcim/views.py:1019 #: netbox/extras/tables/tables.py:278 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 #: netbox/templates/extras/imageattachment.html:40 @@ -4414,8 +4309,8 @@ msgid "Dimensions" msgstr "Габариты" #: netbox/dcim/forms/bulk_edit.py:297 netbox/dcim/forms/filtersets.py:336 -#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:240 -#: netbox/dcim/views.py:890 netbox/dcim/views.py:1018 +#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:266 +#: netbox/dcim/views.py:892 netbox/dcim/views.py:1020 #: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "Нумерация" @@ -4426,13 +4321,14 @@ msgid "Rack type" msgstr "Тип стойки" #: netbox/dcim/forms/bulk_edit.py:363 netbox/dcim/forms/bulk_edit.py:708 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/templates/dcim/modulebay.html:70 +#: netbox/dcim/forms/bulk_edit.py:763 msgid "Serial Number" msgstr "Серийный номер" #: netbox/dcim/forms/bulk_edit.py:366 netbox/dcim/forms/filtersets.py:429 #: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1116 #: netbox/dcim/forms/filtersets.py:1914 +#: netbox/templates/dcim/panels/installed_module.html:25 msgid "Asset tag" msgstr "Инвентарный номер" @@ -4453,13 +4349,12 @@ msgstr "Воздушный поток" #: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/filtersets.py:501 #: netbox/dcim/forms/filtersets.py:874 netbox/dcim/forms/filtersets.py:1086 #: netbox/dcim/forms/filtersets.py:1186 netbox/dcim/forms/filtersets.py:1325 -#: netbox/dcim/forms/model_forms.py:282 netbox/dcim/forms/model_forms.py:326 -#: netbox/dcim/forms/model_forms.py:586 netbox/dcim/forms/model_forms.py:871 +#: netbox/dcim/forms/model_forms.py:308 netbox/dcim/forms/model_forms.py:352 +#: netbox/dcim/forms/model_forms.py:612 netbox/dcim/forms/model_forms.py:897 #: netbox/dcim/forms/object_create.py:303 netbox/dcim/tables/devices.py:165 #: netbox/dcim/tables/power.py:67 netbox/dcim/tables/racks.py:204 #: netbox/ipam/forms/filtersets.py:486 #: netbox/templates/dcim/inc/cable_termination.html:16 -#: netbox/templates/dcim/powerfeed.html:28 #: netbox/templates/dcim/rack/base.html:4 #: netbox/virtualization/forms/model_forms.py:107 msgid "Rack" @@ -4469,14 +4364,14 @@ msgstr "Стойка" #: netbox/dcim/forms/filtersets.py:360 netbox/dcim/forms/filtersets.py:440 #: netbox/dcim/forms/filtersets.py:532 netbox/dcim/forms/filtersets.py:677 #: netbox/dcim/forms/filtersets.py:822 netbox/dcim/forms/filtersets.py:1043 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:787 -#: netbox/dcim/forms/model_forms.py:1790 +#: netbox/dcim/forms/model_forms.py:470 netbox/dcim/forms/model_forms.py:813 +#: netbox/dcim/forms/model_forms.py:1816 #: netbox/templates/dcim/device_edit.html:22 msgid "Hardware" msgstr "Аппаратное обеспечение" #: netbox/dcim/forms/bulk_edit.py:490 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:397 msgid "Default platform" msgstr "Платформа по умолчанию" @@ -4493,29 +4388,29 @@ msgstr "Высота U" msgid "Exclude from utilization" msgstr "Исключить из использования" -#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:385 -#: netbox/dcim/forms/model_forms.py:1022 netbox/dcim/forms/model_forms.py:1064 -#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1119 -#: netbox/dcim/forms/model_forms.py:1140 netbox/dcim/forms/model_forms.py:1180 -#: netbox/dcim/forms/model_forms.py:1198 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:411 +#: netbox/dcim/forms/model_forms.py:1048 netbox/dcim/forms/model_forms.py:1090 +#: netbox/dcim/forms/model_forms.py:1117 netbox/dcim/forms/model_forms.py:1145 +#: netbox/dcim/forms/model_forms.py:1166 netbox/dcim/forms/model_forms.py:1206 +#: netbox/dcim/forms/model_forms.py:1224 #: netbox/dcim/forms/object_create.py:119 netbox/dcim/tables/devicetypes.py:84 -#: netbox/dcim/ui/panels.py:125 netbox/templates/dcim/devicebay.html:52 +#: netbox/dcim/ui/panels.py:127 msgid "Device Type" msgstr "Тип устройства" -#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:412 -#: netbox/dcim/views.py:1590 netbox/extras/forms/model_forms.py:601 +#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:438 +#: netbox/dcim/views.py:1592 netbox/extras/forms/model_forms.py:601 msgid "Schema" msgstr "Схема" #: netbox/dcim/forms/bulk_edit.py:549 netbox/dcim/forms/bulk_edit.py:556 #: netbox/dcim/forms/bulk_edit.py:787 netbox/dcim/forms/bulk_import.py:460 #: netbox/dcim/forms/bulk_import.py:1459 netbox/dcim/forms/filtersets.py:690 -#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:418 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/tables/modules.py:43 +#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:444 +#: netbox/dcim/forms/model_forms.py:457 netbox/dcim/tables/modules.py:43 #: netbox/extras/forms/filtersets.py:413 #: netbox/extras/forms/model_forms.py:626 netbox/extras/tables/tables.py:627 -#: netbox/templates/account/base.html:7 netbox/templates/dcim/cable.html:23 +#: netbox/templates/account/base.html:7 #: netbox/templates/extras/configcontext.html:21 #: netbox/templates/inc/user_menu.html:38 netbox/vpn/forms/bulk_edit.py:213 #: netbox/vpn/forms/filtersets.py:203 netbox/vpn/forms/model_forms.py:378 @@ -4523,22 +4418,21 @@ msgid "Profile" msgstr "Профиль" #: netbox/dcim/forms/bulk_edit.py:588 netbox/dcim/forms/filtersets.py:1379 -#: netbox/dcim/forms/model_forms.py:443 netbox/dcim/forms/model_forms.py:1023 -#: netbox/dcim/forms/model_forms.py:1065 netbox/dcim/forms/model_forms.py:1092 -#: netbox/dcim/forms/model_forms.py:1120 netbox/dcim/forms/model_forms.py:1141 -#: netbox/dcim/forms/model_forms.py:1181 netbox/dcim/forms/model_forms.py:1199 +#: netbox/dcim/forms/model_forms.py:469 netbox/dcim/forms/model_forms.py:1049 +#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1118 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1167 +#: netbox/dcim/forms/model_forms.py:1207 netbox/dcim/forms/model_forms.py:1225 #: netbox/dcim/forms/object_create.py:120 netbox/dcim/tables/modules.py:52 -#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2848 -#: netbox/templates/dcim/modulebay.html:66 +#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2851 msgid "Module Type" msgstr "Тип модуля" -#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:388 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:414 msgid "Chassis" msgstr "Шасси" #: netbox/dcim/forms/bulk_edit.py:611 netbox/dcim/models/devices.py:390 -#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:142 +#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:144 msgid "VM role" msgstr "Роль виртуальной машины" @@ -4548,8 +4442,8 @@ msgstr "Роль виртуальной машины" #: netbox/dcim/forms/bulk_import.py:561 netbox/dcim/forms/bulk_import.py:686 #: netbox/dcim/forms/bulk_import.py:690 netbox/dcim/forms/filtersets.py:775 #: netbox/dcim/forms/filtersets.py:806 netbox/dcim/forms/filtersets.py:925 -#: netbox/dcim/forms/model_forms.py:509 netbox/dcim/forms/model_forms.py:546 -#: netbox/dcim/forms/model_forms.py:670 +#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:572 +#: netbox/dcim/forms/model_forms.py:696 #: netbox/virtualization/forms/bulk_import.py:145 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/filtersets.py:207 @@ -4559,20 +4453,21 @@ msgstr "Шаблон конфигурации" #: netbox/dcim/forms/bulk_edit.py:657 netbox/dcim/forms/bulk_edit.py:1040 #: netbox/dcim/forms/bulk_import.py:592 netbox/dcim/forms/filtersets.py:133 -#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:616 -#: netbox/dcim/forms/model_forms.py:986 netbox/dcim/forms/model_forms.py:1003 +#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:642 +#: netbox/dcim/forms/model_forms.py:1012 netbox/dcim/forms/model_forms.py:1029 #: netbox/extras/filtersets.py:729 +#: netbox/templates/dcim/panels/installed_device.html:13 msgid "Device type" msgstr "Тип устройства" #: netbox/dcim/forms/bulk_edit.py:668 netbox/dcim/forms/bulk_import.py:573 -#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:624 +#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:650 msgid "Device role" msgstr "Роль устройства" #: netbox/dcim/forms/bulk_edit.py:691 netbox/dcim/forms/bulk_import.py:598 #: netbox/dcim/forms/filtersets.py:789 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/model_forms.py:557 netbox/dcim/forms/model_forms.py:629 +#: netbox/dcim/forms/model_forms.py:583 netbox/dcim/forms/model_forms.py:655 #: netbox/dcim/tables/devices.py:191 netbox/extras/filtersets.py:745 #: netbox/virtualization/forms/bulk_edit.py:131 #: netbox/virtualization/forms/bulk_import.py:135 @@ -4584,7 +4479,7 @@ msgstr "Платформа" #: netbox/dcim/forms/bulk_edit.py:716 netbox/dcim/forms/bulk_import.py:617 #: netbox/dcim/forms/filtersets.py:830 netbox/dcim/forms/filtersets.py:1000 -#: netbox/dcim/forms/model_forms.py:638 netbox/dcim/tables/devices.py:211 +#: netbox/dcim/forms/model_forms.py:664 netbox/dcim/tables/devices.py:211 #: netbox/extras/filtersets.py:778 netbox/extras/forms/filtersets.py:406 #: netbox/ipam/forms/filtersets.py:457 netbox/ipam/forms/filtersets.py:491 #: netbox/virtualization/filtersets.py:148 @@ -4613,7 +4508,8 @@ msgid "Virtualization" msgstr "Виртуализация" #: netbox/dcim/forms/bulk_edit.py:744 netbox/dcim/forms/bulk_import.py:759 -#: netbox/dcim/forms/model_forms.py:765 netbox/dcim/forms/model_forms.py:1011 +#: netbox/dcim/forms/model_forms.py:791 netbox/dcim/forms/model_forms.py:1037 +#: netbox/templates/dcim/panels/installed_module.html:17 msgid "Module type" msgstr "Тип модуля" @@ -4623,25 +4519,15 @@ msgstr "Тип модуля" #: netbox/dcim/forms/bulk_edit.py:1146 netbox/dcim/forms/bulk_edit.py:1173 #: netbox/dcim/forms/bulk_edit.py:1200 netbox/dcim/forms/bulk_edit.py:1218 #: netbox/dcim/forms/bulk_edit.py:1236 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/object_create.py:48 netbox/templates/dcim/cable.html:36 -#: netbox/templates/dcim/consoleport.html:32 -#: netbox/templates/dcim/consoleserverport.html:32 -#: netbox/templates/dcim/devicebay.html:28 -#: netbox/templates/dcim/frontport.html:32 +#: netbox/dcim/forms/object_create.py:48 #: netbox/templates/dcim/inc/panels/inventory_items.html:19 -#: netbox/templates/dcim/interface.html:42 -#: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:34 -#: netbox/templates/dcim/poweroutlet.html:32 -#: netbox/templates/dcim/powerport.html:32 -#: netbox/templates/dcim/rearport.html:32 +#: netbox/templates/dcim/panels/component_inventory_items.html:9 #: netbox/templates/extras/customfield.html:26 #: netbox/templates/generic/bulk_import.html:193 msgid "Label" msgstr "Лейбл" #: netbox/dcim/forms/bulk_edit.py:807 netbox/dcim/forms/filtersets.py:1224 -#: netbox/templates/dcim/cable.html:54 msgid "Length" msgstr "Длина" @@ -4651,34 +4537,29 @@ msgid "Length unit" msgstr "Единица длины" #: netbox/dcim/forms/bulk_edit.py:830 -#: netbox/templates/dcim/virtualchassis.html:13 msgid "Domain" msgstr "Домен" #: netbox/dcim/forms/bulk_edit.py:886 netbox/dcim/forms/bulk_import.py:1646 -#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:865 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:891 msgid "Power panel" msgstr "Распределительный щит" #: netbox/dcim/forms/bulk_edit.py:908 netbox/dcim/forms/bulk_import.py:1682 #: netbox/dcim/forms/filtersets.py:1338 -#: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Снабжение" #: netbox/dcim/forms/bulk_edit.py:914 netbox/dcim/forms/bulk_import.py:1687 #: netbox/dcim/forms/filtersets.py:1343 -#: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Фаза" #: netbox/dcim/forms/bulk_edit.py:920 netbox/dcim/forms/filtersets.py:1348 -#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Напряжение" #: netbox/dcim/forms/bulk_edit.py:924 netbox/dcim/forms/filtersets.py:1352 -#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Сила тока" @@ -4691,7 +4572,7 @@ msgid "Maximum draw" msgstr "Максимальное потребление" #: netbox/dcim/forms/bulk_edit.py:1018 -#: netbox/dcim/models/device_component_templates.py:292 +#: netbox/dcim/models/device_component_templates.py:282 #: netbox/dcim/models/device_components.py:440 msgid "Maximum power draw (watts)" msgstr "Максимальная потребляемая мощность (Вт)" @@ -4701,14 +4582,14 @@ msgid "Allocated draw" msgstr "Выделенная мощность" #: netbox/dcim/forms/bulk_edit.py:1024 -#: netbox/dcim/models/device_component_templates.py:299 +#: netbox/dcim/models/device_component_templates.py:289 #: netbox/dcim/models/device_components.py:447 msgid "Allocated power draw (watts)" msgstr "Распределенная потребляемая мощность (Вт)" #: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_import.py:892 -#: netbox/dcim/forms/model_forms.py:1080 netbox/dcim/forms/model_forms.py:1445 -#: netbox/dcim/forms/model_forms.py:1774 netbox/dcim/forms/object_import.py:56 +#: netbox/dcim/forms/model_forms.py:1106 netbox/dcim/forms/model_forms.py:1471 +#: netbox/dcim/forms/model_forms.py:1800 netbox/dcim/forms/object_import.py:56 msgid "Power port" msgstr "Порт питания" @@ -4717,23 +4598,23 @@ msgid "Feed leg" msgstr "Фаза электропитания" #: netbox/dcim/forms/bulk_edit.py:1112 netbox/dcim/forms/bulk_edit.py:1433 -#: netbox/dcim/forms/filtersets.py:1719 +#: netbox/dcim/forms/filtersets.py:1719 netbox/dcim/ui/panels.py:478 msgid "Management only" msgstr "Только управление" #: netbox/dcim/forms/bulk_edit.py:1122 netbox/dcim/forms/bulk_edit.py:1439 #: netbox/dcim/forms/bulk_import.py:985 netbox/dcim/forms/filtersets.py:1643 #: netbox/dcim/forms/filtersets.py:1728 netbox/dcim/forms/object_import.py:91 -#: netbox/dcim/models/device_component_templates.py:462 -#: netbox/dcim/models/device_components.py:839 +#: netbox/dcim/models/device_component_templates.py:452 +#: netbox/dcim/models/device_components.py:839 netbox/dcim/ui/panels.py:480 msgid "PoE mode" msgstr "Режим PoE" #: netbox/dcim/forms/bulk_edit.py:1128 netbox/dcim/forms/bulk_edit.py:1445 #: netbox/dcim/forms/bulk_import.py:991 netbox/dcim/forms/filtersets.py:1648 #: netbox/dcim/forms/filtersets.py:1733 netbox/dcim/forms/object_import.py:96 -#: netbox/dcim/models/device_component_templates.py:469 -#: netbox/dcim/models/device_components.py:846 +#: netbox/dcim/models/device_component_templates.py:459 +#: netbox/dcim/models/device_components.py:846 netbox/dcim/ui/panels.py:481 msgid "PoE type" msgstr "Тип PoE" @@ -4742,36 +4623,26 @@ msgstr "Тип PoE" msgid "Wireless role" msgstr "Роль беспроводной связи" -#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:786 -#: netbox/dcim/forms/model_forms.py:1390 netbox/dcim/tables/devices.py:330 -#: netbox/templates/dcim/consoleport.html:24 -#: netbox/templates/dcim/consoleserverport.html:24 -#: netbox/templates/dcim/frontport.html:24 -#: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/modulebay.html:26 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/poweroutlet.html:24 -#: netbox/templates/dcim/powerport.html:24 -#: netbox/templates/dcim/rearport.html:24 +#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:812 +#: netbox/dcim/forms/model_forms.py:1416 netbox/dcim/tables/devices.py:330 +#: netbox/templates/dcim/panels/installed_module.html:9 msgid "Module" msgstr "Модуль" #: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/tables/devices.py:746 -#: netbox/templates/dcim/interface.html:134 +#: netbox/dcim/ui/panels.py:495 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1472 +#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1498 msgid "Virtual device contexts" msgstr "Виртуальные контексты" #: netbox/dcim/forms/bulk_edit.py:1424 netbox/dcim/forms/bulk_import.py:819 #: netbox/dcim/forms/bulk_import.py:845 netbox/dcim/forms/filtersets.py:1429 #: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1607 -#: netbox/dcim/tables/devices.py:651 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 -#: netbox/templates/dcim/consoleport.html:40 -#: netbox/templates/dcim/consoleserverport.html:40 +#: netbox/dcim/tables/devices.py:651 netbox/dcim/ui/panels.py:474 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:64 msgid "Speed" msgstr "Скорость" @@ -4788,7 +4659,7 @@ msgid "Mode" msgstr "Режим" #: netbox/dcim/forms/bulk_edit.py:1461 netbox/dcim/forms/bulk_import.py:1000 -#: netbox/dcim/forms/model_forms.py:1521 netbox/ipam/forms/bulk_import.py:177 +#: netbox/dcim/forms/model_forms.py:1547 netbox/ipam/forms/bulk_import.py:177 #: netbox/ipam/forms/filtersets.py:582 netbox/ipam/models/vlans.py:93 #: netbox/virtualization/forms/bulk_edit.py:205 #: netbox/virtualization/forms/bulk_import.py:184 @@ -4797,16 +4668,15 @@ msgid "VLAN group" msgstr "Группа VLAN" #: netbox/dcim/forms/bulk_edit.py:1470 netbox/dcim/forms/bulk_import.py:1007 -#: netbox/dcim/forms/model_forms.py:1527 netbox/dcim/tables/devices.py:616 -#: netbox/templates/dcim/interface.html:91 -#: netbox/virtualization/forms/bulk_edit.py:213 +#: netbox/dcim/forms/model_forms.py:1553 netbox/dcim/tables/devices.py:616 +#: netbox/dcim/ui/panels.py:484 netbox/virtualization/forms/bulk_edit.py:213 #: netbox/virtualization/forms/bulk_import.py:191 #: netbox/virtualization/forms/model_forms.py:331 msgid "Untagged VLAN" msgstr "VLAN без тегов" #: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/bulk_import.py:1014 -#: netbox/dcim/forms/model_forms.py:1536 netbox/dcim/tables/devices.py:622 +#: netbox/dcim/forms/model_forms.py:1562 netbox/dcim/tables/devices.py:622 #: netbox/virtualization/forms/bulk_edit.py:221 #: netbox/virtualization/forms/bulk_import.py:198 #: netbox/virtualization/forms/model_forms.py:340 @@ -4822,30 +4692,29 @@ msgid "Remove tagged VLANs" msgstr "Удалить тегированные VLAN-ы" #: netbox/dcim/forms/bulk_edit.py:1502 netbox/dcim/forms/bulk_import.py:1027 -#: netbox/dcim/forms/model_forms.py:1545 +#: netbox/dcim/forms/model_forms.py:1571 #: netbox/virtualization/forms/bulk_import.py:211 #: netbox/virtualization/forms/model_forms.py:349 msgid "Q-in-Q Service VLAN" msgstr "Сервисная VLAN «Q-in-Q»" -#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1508 +#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1534 #: netbox/wireless/forms/filtersets.py:26 msgid "Wireless LAN group" msgstr "Беспроводная группа LAN" -#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1513 -#: netbox/dcim/tables/devices.py:660 netbox/netbox/navigation/menu.py:156 -#: netbox/templates/dcim/interface.html:355 +#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1539 +#: netbox/dcim/tables/devices.py:660 netbox/dcim/ui/panels.py:561 +#: netbox/netbox/navigation/menu.py:156 #: netbox/wireless/tables/wirelesslan.py:20 msgid "Wireless LANs" msgstr "Беспроводные LANы" #: netbox/dcim/forms/bulk_edit.py:1531 netbox/dcim/forms/filtersets.py:1574 -#: netbox/dcim/forms/model_forms.py:1579 netbox/ipam/forms/bulk_edit.py:227 -#: netbox/ipam/forms/bulk_edit.py:313 netbox/ipam/forms/filtersets.py:191 -#: netbox/netbox/navigation/menu.py:112 -#: netbox/templates/dcim/interface.html:146 -#: netbox/templates/ipam/prefix.html:91 +#: netbox/dcim/forms/model_forms.py:1605 netbox/dcim/ui/panels.py:499 +#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:313 +#: netbox/ipam/forms/filtersets.py:191 netbox/netbox/navigation/menu.py:112 +#: netbox/templates/ipam/panels/prefix_addressing.html:4 #: netbox/virtualization/forms/filtersets.py:218 #: netbox/virtualization/forms/model_forms.py:369 #: netbox/virtualization/ui/panels.py:68 @@ -4853,26 +4722,25 @@ msgid "Addressing" msgstr "Адресация" #: netbox/dcim/forms/bulk_edit.py:1532 netbox/dcim/forms/filtersets.py:821 -#: netbox/dcim/forms/model_forms.py:1580 +#: netbox/dcim/forms/model_forms.py:1606 #: netbox/virtualization/forms/model_forms.py:370 msgid "Operation" msgstr "Операция" #: netbox/dcim/forms/bulk_edit.py:1533 netbox/dcim/forms/filtersets.py:1575 -#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1124 -#: netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1150 +#: netbox/dcim/forms/model_forms.py:1608 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1581 -#: netbox/templates/dcim/interface.html:110 -#: netbox/virtualization/forms/bulk_edit.py:237 +#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1607 +#: netbox/dcim/ui/panels.py:491 netbox/virtualization/forms/bulk_edit.py:237 #: netbox/virtualization/forms/model_forms.py:371 msgid "Related Interfaces" msgstr "Связанные интерфейсы" #: netbox/dcim/forms/bulk_edit.py:1536 netbox/dcim/forms/filtersets.py:1576 -#: netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1611 #: netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/filtersets.py:219 #: netbox/virtualization/forms/model_forms.py:374 @@ -4980,7 +4848,7 @@ msgstr "Родительская площадка" msgid "Rack's location (if any)" msgstr "Локация стойки (если есть)" -#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:331 +#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:357 #: netbox/dcim/tables/racks.py:209 #: netbox/templates/dcim/rackreservation.html:7 msgid "Units" @@ -5062,7 +4930,7 @@ msgid "Assigned platform" msgstr "Назначенная платформа" #: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/bulk_import.py:614 -#: netbox/dcim/forms/model_forms.py:651 +#: netbox/dcim/forms/model_forms.py:677 msgid "Virtual chassis" msgstr "Виртуальное шасси" @@ -5078,7 +4946,7 @@ msgstr "Назначенная локация (если есть)" msgid "Assigned rack (if any)" msgstr "Назначенная стойка (если есть)" -#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:634 msgid "Face" msgstr "Лицевая сторона" @@ -5104,7 +4972,7 @@ msgstr "" msgid "The device in which this module is installed" msgstr "Устройство, в котором установлен данный модуль" -#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:755 +#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:781 msgid "Module bay" msgstr "Отсек для модулей" @@ -5116,7 +4984,7 @@ msgstr "Отсек для модулей, в котором установлен msgid "The type of module" msgstr "Тип модуля" -#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:773 +#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:799 msgid "Replicate components" msgstr "Репликация компонентов" @@ -5128,11 +4996,11 @@ msgstr "" "Автоматическое заполнение компонентов, связанных с этим типом модуля " "(включено по умолчанию)" -#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:779 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:805 msgid "Adopt components" msgstr "Принять компоненты" -#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:782 +#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:808 msgid "Adopt already existing components" msgstr "Используйте уже существующие компоненты" @@ -5157,13 +5025,13 @@ msgstr "Локальный порт питания, питающий эту ро msgid "Electrical phase (for three-phase circuits)" msgstr "Электрическая фаза (для трехфазных цепей)" -#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1483 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1509 #: netbox/virtualization/forms/bulk_import.py:168 #: netbox/virtualization/forms/model_forms.py:310 msgid "Parent interface" msgstr "Родительский интерфейс" -#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1491 +#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1517 #: netbox/virtualization/forms/bulk_import.py:175 #: netbox/virtualization/forms/model_forms.py:318 msgid "Bridged interface" @@ -5392,6 +5260,7 @@ msgid "Side B name" msgstr "Название стороны B" #: netbox/dcim/forms/bulk_import.py:1456 +#: netbox/templates/dcim/panels/connection.html:60 #: netbox/wireless/forms/bulk_import.py:133 msgid "Connection status" msgstr "Состояние подключения" @@ -5425,11 +5294,9 @@ msgstr "" "{color} не совпадало ни с одним из используемых названий цветов и содержало " "более шести символов: неправильный шестнадцатеричный код." -#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:900 +#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:926 #: netbox/dcim/tables/devices.py:1124 #: netbox/templates/dcim/panels/virtual_chassis_members.html:10 -#: netbox/templates/dcim/virtualchassis.html:17 -#: netbox/templates/dcim/virtualchassis.html:57 msgid "Master" msgstr "Мастер" @@ -5457,9 +5324,8 @@ msgstr "Тип питания (AC/DC)" msgid "Single or three-phase" msgstr "Однофазный или трехфазный" -#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1875 -#: netbox/dcim/ui/panels.py:108 -#: netbox/templates/dcim/virtualdevicecontext.html:30 +#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1901 +#: netbox/dcim/ui/panels.py:110 netbox/dcim/ui/panels.py:354 #: netbox/virtualization/ui/panels.py:28 msgid "Primary IPv4" msgstr "Основной IPv4" @@ -5468,9 +5334,8 @@ msgstr "Основной IPv4" msgid "IPv4 address with mask, e.g. 1.2.3.4/24" msgstr "Адрес IPv4 с маской, напр. 1.2.3.4/24" -#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1884 -#: netbox/dcim/ui/panels.py:113 -#: netbox/templates/dcim/virtualdevicecontext.html:41 +#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1910 +#: netbox/dcim/ui/panels.py:115 netbox/dcim/ui/panels.py:359 #: netbox/virtualization/ui/panels.py:33 msgid "Primary IPv6" msgstr "Основной IPv6" @@ -5480,8 +5345,7 @@ msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64" msgstr "Адрес IPv6 с длиной префикса, напр. 2001:db8::1/64" #: netbox/dcim/forms/common.py:19 netbox/dcim/models/device_components.py:615 -#: netbox/templates/dcim/interface.html:57 -#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/dcim/ui/panels.py:476 netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/ui/panels.py:61 msgid "MTU" msgstr "MTU" @@ -5524,18 +5388,15 @@ msgstr "" msgid "A {model} named {name} already exists" msgstr "A {model} названный {name} уже существует" -#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:853 +#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:879 #: netbox/dcim/tables/power.py:63 #: netbox/templates/dcim/inc/cable_termination.html:40 -#: netbox/templates/dcim/powerfeed.html:24 -#: netbox/templates/dcim/powerpanel.html:19 #: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "Распределительный щит" -#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:880 -#: netbox/templates/dcim/powerfeed.html:21 -#: netbox/templates/dcim/powerport.html:80 +#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:906 +#: netbox/dcim/views.py:3106 msgid "Power Feed" msgstr "Кабель питания" @@ -5563,12 +5424,12 @@ msgstr "Количество стоек" msgid "Function" msgstr "Функция" -#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:341 -#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1164 +#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:367 +#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1166 msgid "Reservation" msgstr "Резервирование" -#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:390 +#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:416 #: netbox/netbox/views/generic/feature_views.py:97 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" @@ -5591,7 +5452,7 @@ msgstr "Роль подустройства" msgid "Module count" msgstr "Количество модулей" -#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:548 msgid "Device Role" msgstr "Роль устройства" @@ -5629,16 +5490,9 @@ msgstr "Занятый" #: netbox/dcim/forms/filtersets.py:1420 netbox/dcim/forms/filtersets.py:1460 #: netbox/dcim/forms/filtersets.py:1500 netbox/dcim/forms/filtersets.py:1535 #: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/tables/devices.py:381 -#: netbox/dcim/tables/devices.py:682 netbox/ipam/tables/vlans.py:174 +#: netbox/dcim/tables/devices.py:682 netbox/dcim/ui/panels.py:377 +#: netbox/dcim/ui/panels.py:516 netbox/ipam/tables/vlans.py:174 #: netbox/templates/circuits/inc/circuit_termination_fields.html:16 -#: netbox/templates/dcim/consoleport.html:55 -#: netbox/templates/dcim/consoleserverport.html:55 -#: netbox/templates/dcim/frontport.html:66 -#: netbox/templates/dcim/interface.html:215 -#: netbox/templates/dcim/powerfeed.html:110 -#: netbox/templates/dcim/poweroutlet.html:73 -#: netbox/templates/dcim/powerport.html:59 -#: netbox/templates/dcim/rearport.html:66 msgid "Connection" msgstr "Подключение" @@ -5654,13 +5508,12 @@ msgstr "Вид" msgid "Mgmt only" msgstr "Только менеджмент" -#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1567 -#: netbox/dcim/models/device_components.py:792 -#: netbox/templates/dcim/interface.html:160 +#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1593 +#: netbox/dcim/models/device_components.py:792 netbox/dcim/ui/panels.py:506 msgid "WWN" msgstr "Глобальное уникальное имя (WWN)" -#: netbox/dcim/forms/filtersets.py:1653 +#: netbox/dcim/forms/filtersets.py:1653 netbox/dcim/ui/panels.py:482 #: netbox/virtualization/forms/filtersets.py:260 msgid "802.1Q mode" msgstr "Режим 802.1Q" @@ -5677,18 +5530,17 @@ msgstr "Частота канала (МГц)" msgid "Channel width (MHz)" msgstr "Ширина канала (МГц)" -#: netbox/dcim/forms/filtersets.py:1680 -#: netbox/templates/dcim/interface.html:96 +#: netbox/dcim/forms/filtersets.py:1680 netbox/dcim/ui/panels.py:485 msgid "Transmit power (dBm)" msgstr "Мощность передачи (дБм)" #: netbox/dcim/forms/filtersets.py:1751 netbox/dcim/forms/filtersets.py:1795 -#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable.html:12 -#: netbox/templates/dcim/cable_trace.html:46 -#: netbox/templates/dcim/frontport.html:74 +#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/htmx/cable_edit.html:53 #: netbox/templates/dcim/inc/connection_endpoints.html:4 -#: netbox/templates/dcim/rearport.html:74 +#: netbox/templates/dcim/panels/connection.html:14 +#: netbox/templates/dcim/panels/connection.html:51 +#: netbox/templates/dcim/panels/interface_connection.html:13 #: netbox/templates/dcim/trace/cable.html:7 msgid "Cable" msgstr "Кабель" @@ -5728,9 +5580,7 @@ msgstr "Тип прицела" #: netbox/ipam/forms/bulk_edit.py:382 netbox/ipam/forms/filtersets.py:195 #: netbox/ipam/forms/model_forms.py:225 netbox/ipam/forms/model_forms.py:603 #: netbox/ipam/forms/model_forms.py:613 netbox/ipam/tables/ip.py:193 -#: netbox/ipam/tables/vlans.py:40 netbox/templates/ipam/prefix.html:48 -#: netbox/templates/ipam/vlangroup.html:38 -#: netbox/virtualization/forms/bulk_edit.py:74 +#: netbox/ipam/tables/vlans.py:40 netbox/virtualization/forms/bulk_edit.py:74 #: netbox/virtualization/forms/filtersets.py:53 #: netbox/virtualization/forms/model_forms.py:73 #: netbox/virtualization/tables/clusters.py:81 @@ -5753,28 +5603,28 @@ msgstr "Тип прицела (приложение и модель)" #: netbox/dcim/forms/mixins.py:126 msgid "Scope name" -msgstr "" +msgstr "Название области" #: netbox/dcim/forms/mixins.py:127 msgid "Name of the assigned scope object (if not using ID)" -msgstr "" +msgstr "Имя назначенного объекта области (если не используется идентификатор)" #: netbox/dcim/forms/mixins.py:139 msgid "scope_name and scope_id are mutually exclusive." -msgstr "" +msgstr "scope_name и scope_id исключают друг друга." #: netbox/dcim/forms/mixins.py:143 msgid "scope_type must be specified when using scope_name" -msgstr "" +msgstr "При использовании scope_name необходимо указать scope_type" #: netbox/dcim/forms/mixins.py:145 msgid "scope_type must be specified when using scope_id" -msgstr "" +msgstr "При использовании scope_id необходимо указать scope_type" #: netbox/dcim/forms/mixins.py:154 #, python-brace-format msgid "{scope_type} \"{name}\" not found." -msgstr "" +msgstr "{scope_type} »{name}\"не найден." #: netbox/dcim/forms/mixins.py:162 #, python-brace-format @@ -5782,6 +5632,8 @@ msgid "" "Multiple {scope_type} objects match \"{name}\". Use scope_id to specify the " "intended object." msgstr "" +"Несколько {scope_type} объекты совпадают»{name}». Используйте scope_id для " +"указания предполагаемого объекта." #: netbox/dcim/forms/mixins.py:180 netbox/dcim/tables/devices.py:260 msgid "Rear ports" @@ -5797,31 +5649,31 @@ msgstr "" "соответствовать выбранному количеству положений задних портов " "({rearport_count})." -#: netbox/dcim/forms/model_forms.py:158 +#: netbox/dcim/forms/model_forms.py:169 msgid "Contact Info" msgstr "Контактная информация" -#: netbox/dcim/forms/model_forms.py:211 +#: netbox/dcim/forms/model_forms.py:237 msgid "Rack Role" msgstr "Роль стойки" -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:380 -#: netbox/dcim/forms/model_forms.py:551 +#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:406 +#: netbox/dcim/forms/model_forms.py:577 #: netbox/utilities/forms/fields/fields.py:58 msgid "Slug" msgstr "Подстрока" -#: netbox/dcim/forms/model_forms.py:276 +#: netbox/dcim/forms/model_forms.py:302 msgid "Select a pre-defined rack type, or set physical characteristics below." msgstr "" "Выберите заранее определенный тип стойки или задайте физические " "характеристики ниже." -#: netbox/dcim/forms/model_forms.py:284 +#: netbox/dcim/forms/model_forms.py:310 msgid "Inventory Control" msgstr "Управление запасами" -#: netbox/dcim/forms/model_forms.py:333 +#: netbox/dcim/forms/model_forms.py:359 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -5829,36 +5681,36 @@ msgstr "" "Список числовых идентификаторов, разделенных запятыми. Диапазон можно " "указать с помощью дефиса." -#: netbox/dcim/forms/model_forms.py:414 netbox/extras/forms/model_forms.py:603 +#: netbox/dcim/forms/model_forms.py:440 netbox/extras/forms/model_forms.py:603 msgid "Enter a valid JSON schema to define supported attributes." msgstr "" "Введите действительную схему JSON для определения поддерживаемых атрибутов." -#: netbox/dcim/forms/model_forms.py:445 +#: netbox/dcim/forms/model_forms.py:471 msgid "Profile & Attributes" msgstr "Профиль и атрибуты" -#: netbox/dcim/forms/model_forms.py:597 netbox/dcim/models/devices.py:579 +#: netbox/dcim/forms/model_forms.py:623 netbox/dcim/models/devices.py:579 msgid "The lowest-numbered unit occupied by the device" msgstr "Устройство с наименьшим номером, занимаемое устройством" -#: netbox/dcim/forms/model_forms.py:662 +#: netbox/dcim/forms/model_forms.py:688 msgid "The position in the virtual chassis this device is identified by" msgstr "Положение в виртуальном корпусе этого устройства определяется по" -#: netbox/dcim/forms/model_forms.py:667 +#: netbox/dcim/forms/model_forms.py:693 msgid "The priority of the device in the virtual chassis" msgstr "Приоритет устройства в виртуальном шасси" -#: netbox/dcim/forms/model_forms.py:776 +#: netbox/dcim/forms/model_forms.py:802 msgid "Automatically populate components associated with this module type" msgstr "Автоматическое заполнение компонентов, связанных с этим типом модуля" -#: netbox/dcim/forms/model_forms.py:882 +#: netbox/dcim/forms/model_forms.py:908 msgid "Characteristics" msgstr "Характеристики" -#: netbox/dcim/forms/model_forms.py:1038 +#: netbox/dcim/forms/model_forms.py:1064 #, python-brace-format msgid "" "Alphanumeric ranges are supported for bulk creation. Mixed cases and types " @@ -5872,107 +5724,95 @@ msgstr "" "[ge, xe]-0/0/[0-9]). Переменная {module} будет " "автоматически заменена значением позиции при создании нового модуля." -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "Шаблон консольного порта" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "Шаблон порта консольного сервера" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "Шаблон переднего порта" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "Шаблон интерфейса" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "Шаблон розетки питания" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "Шаблон порта питания" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "Шаблон заднего порта" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "Консольный порт" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "Порт консольного сервера" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "Передний порт" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "Задний порт" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "Порт питания" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "Розетка питания" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "Назначение компонентов" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "Инвентарный номер можно присвоить только одному компоненту." -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "Интерфейс LAG" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "Фильтровать доступные к назначению VLAN-ы по группе." -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "Дочернее устройство" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -5980,43 +5820,41 @@ msgstr "" "Сначала необходимо создать дочерние устройства и назначить их площадке и " "стойке родительского устройства." -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "Консольный порт" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "Порт консольного сервера" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "Передний порт" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "Розетка питания" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "Задний порт" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "Комплектующие" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "Роли комплектующих" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "Интерфейс виртуальной машины" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -6030,7 +5868,7 @@ msgstr "Интерфейс виртуальной машины" msgid "Virtual Machine" msgstr "Виртуальная машина" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "MAC-адрес можно присвоить только одному объекту." @@ -6054,9 +5892,9 @@ msgstr "" " ожидаются." #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "Участники" @@ -6256,135 +6094,135 @@ msgid "" msgstr "" "Шаблон компонента должен быть связан с типом устройства или типом модуля." -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "шаблон консольного порта" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "шаблоны консольных портов" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "шаблон порта консольного сервера" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "шаблоны портов консольного сервера" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "максимальное потребление" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "выделенное потребление" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "шаблон порта питания" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "шаблоны портов питания" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "" "Выделенная мощность не может превышать максимальную ({maximum_draw}Вт)." -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "фаза электропитания" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "Фаза (для трехфазных)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "шаблон розетки питания" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "шаблоны розеток питания" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Родительский порт питания ({power_port}) должен принадлежать тому же типу " "устройства" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Родительский порт питания ({power_port}) должен принадлежать тому же типу " "модулей" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "только управление" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "интерфейс моста" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "роль беспроводной сети" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "шаблон интерфейса" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "шаблоны интерфейсов" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" "Интерфейс моста ({bridge}) должно принадлежать к тому же типу устройства" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Интерфейс моста ({bridge}) должен принадлежать к одному типу модулей" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "" "Задний порт ({rear_port}) должно принадлежать к тому же типу устройства" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "позиция" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "шаблон переднего порта" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "шаблоны передних портов" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " @@ -6393,15 +6231,15 @@ msgstr "" "Количество позиций не может быть меньше количества сопоставленных шаблонов " "задних портов ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "шаблон заднего порта" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "шаблоны задних портов" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " @@ -6410,35 +6248,35 @@ msgstr "" "Количество позиций не может быть меньше количества сопоставленных шаблонов " "фронтальных портов ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "позиция" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "" "Идентификатор, на который следует ссылаться при переименовании установленных" " компонентов" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "шаблон модульного отсека" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "шаблоны модульных отсеков" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "шаблон отсека для устройств" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "шаблоны отсеков для устройств" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -6447,21 +6285,21 @@ msgstr "" "Роль подустройства типа устройства ({device_type}) должно быть установлено " "значение «родительский», чтобы разрешить отсеки для устройств." -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "номер модели" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "Номер модели, присвоенный производителем" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "шаблон инвентарного товара" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "шаблоны товаров инвентаря" @@ -6593,10 +6431,10 @@ msgid "tagged VLANs" msgstr "тегированные VLAN" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "Сеть Q-in-Q" @@ -7752,11 +7590,11 @@ msgstr "Добавить компоненты" msgid "Disconnect Selected" msgstr "Отключить выбранное" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "Точка подключения A" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "Точка подключения Б" @@ -7801,6 +7639,8 @@ msgstr "Название цвета" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "Доступен" @@ -7837,7 +7677,7 @@ msgstr "Высота U" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "IP-адрес" @@ -7886,16 +7726,14 @@ msgid "Power outlets" msgstr "Розетки питания" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7928,18 +7766,17 @@ msgid "Device Site" msgstr "Сайт устройства" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Модульный отсек" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "Предметы инвентаря" @@ -7963,13 +7800,13 @@ msgstr "Максимальная потребляемая мощность (Вт msgid "Allocated draw (W)" msgstr "Выделенная мощность (Вт)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "IP-адреса" @@ -7977,18 +7814,18 @@ msgstr "IP-адреса" msgid "Primary MAC" msgstr "Основной MAC" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "MAC-адреса" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Группы FHRP" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -7997,7 +7834,6 @@ msgid "Tunnel" msgstr "Туннель" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Только управление" @@ -8005,7 +7841,7 @@ msgstr "Только управление" msgid "VDCs" msgstr "Виртуальные контексты устройств(VDCs)" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "Виртуальный канал" @@ -8014,7 +7850,7 @@ msgstr "Виртуальный канал" msgid "Mappings" msgstr "Сопоставления" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "Вставленное устройство" @@ -8038,7 +7874,7 @@ msgstr "Установленный серийный номер" msgid "Installed Asset Tag" msgstr "Установленный тег активов" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "Установленный модуль" @@ -8055,7 +7891,6 @@ msgid "Module Status" msgstr "Состояние модуля" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "Компонент" @@ -8073,7 +7908,7 @@ msgstr "Типы стоек" msgid "Device Types" msgstr "Типы устройств" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "Типы модулей" @@ -8096,8 +7931,8 @@ msgstr "Полная глубина" msgid "Device Count" msgstr "Количество устройств" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -8107,8 +7942,8 @@ msgstr "Количество устройств" msgid "Console Ports" msgstr "Порты консоли" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -8118,8 +7953,8 @@ msgstr "Порты консоли" msgid "Console Server Ports" msgstr "Порты консольного сервера" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -8129,8 +7964,8 @@ msgstr "Порты консольного сервера" msgid "Power Ports" msgstr "Порты питания" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -8140,8 +7975,8 @@ msgstr "Порты питания" msgid "Power Outlets" msgstr "Розетки питания" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -8150,8 +7985,8 @@ msgstr "Розетки питания" msgid "Front Ports" msgstr "Фронтальные порты" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -8161,16 +7996,16 @@ msgstr "Фронтальные порты" msgid "Rear Ports" msgstr "Задние порты" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Отсеки для устройств" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8185,11 +8020,10 @@ msgid "Module Count" msgstr "Количество модулей" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Кабели питания" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "Максимальное использование" @@ -8204,7 +8038,7 @@ msgid "Racks" msgstr "Стойки" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Высота" @@ -8253,85 +8087,123 @@ msgid "Test case must set peer_termination_type" msgstr "" "В тестовом примере должно быть установлено значение peer_termination_type" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} миллиметры" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "Серийный номер" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "Максимальный вес" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "Управление" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "Внеполосный IP-адрес" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "Родитель/ребенок" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "Название модели" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "Родительский товар" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "Номер модели" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "Подключенное устройство" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "Использование (распределенное)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "Электрические характеристики" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{}V" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{}A" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "Основное для интерфейса" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "Элементы виртуального шасси" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "Использование энергии" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "Трансляция VLAN" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "Отключен {count} {type}" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "Дочерние регионы" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "Дочерние группы" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "Устройства без стоек" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "Дочерние Локации" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "Резервирование" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "Роли дочерних устройств" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "Детские платформы" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "Сервисы приложений" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8339,41 +8211,69 @@ msgstr "Сервисы приложений" msgid "Config Context" msgstr "Контекст конфигурации" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "Конфигурация рендера" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "Виртуальные машины" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "Виртуальные контексты" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "VLAN-ы" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "Члены LAG" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "Трансляция VLAN" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "Мостовые интерфейсы" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "Детские интерфейсы" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Установлено устройство {device} в отсек {device_bay}." -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Удалено устройство {device} из отсека {device_bay}." -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "Потомки" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "Добавлен участник {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "Невозможно удалить главное устройство {device} из виртуального шасси." -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "{device} удалено из виртуального шасси {chassis}" @@ -8469,10 +8369,9 @@ msgstr "Да" msgid "No" msgstr "Нет" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "Ссылка" @@ -8931,15 +8830,6 @@ msgstr "Один или несколько назначенных типов о msgid "Field data type (e.g. text, integer, etc.)" msgstr "Тип данных поля (например, текст, целое число и т. д.)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "Тип объекта" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "" @@ -9047,7 +8937,7 @@ msgstr "Классификация записей" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -9074,15 +8964,14 @@ msgstr "" #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "Группы" @@ -9108,13 +8997,6 @@ msgstr "Тип поля" msgid "Choices" msgstr "Варианты" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "Данные" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10414,17 +10296,6 @@ msgstr "Расширение файла" msgid "As Attachment" msgstr "В качестве вложения" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "Файл данных" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10440,9 +10311,8 @@ msgstr "Изображение" msgid "Filename" msgstr "Имя файла" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "Размер" @@ -10496,6 +10366,7 @@ msgstr "" "Попробуйте перенастроить виджет или удалить его со своей панели управления." #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10637,7 +10508,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "Обычный текст" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "Служба" @@ -10700,7 +10571,6 @@ msgstr "Экспорт L2VPN (идентификатор)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "Префикс" @@ -10750,7 +10620,6 @@ msgstr "Номер VLAN (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "Адрес" @@ -10807,7 +10676,7 @@ msgstr "Группа FHRP (идентификатор)" msgid "IP address (ID)" msgstr "IP-адрес (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "IP-адрес" @@ -10874,8 +10743,8 @@ msgstr "Является приватным" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "RIR" @@ -10886,15 +10755,13 @@ msgstr "Дата добавления" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN группа" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10909,7 +10776,7 @@ msgid "Prefix length" msgstr "Длина префикса" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "Является пулом" @@ -10928,23 +10795,21 @@ msgstr "Назначение VLAN" msgid "Treat as populated" msgstr "Относиться как населенный" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "DNS-имя" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Протокол" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "Идентификатор группы" @@ -10965,9 +10830,8 @@ msgid "Authentication key" msgstr "Ключ аутентификации" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -10996,23 +10860,22 @@ msgstr "Площадка и группа" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "Политика" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "Порты" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "Импортируйте цели маршрута" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "Экспортные цели маршрута" @@ -11042,7 +10905,6 @@ msgstr "Идентификатор области" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "Группа компаний FHRP" @@ -11153,7 +11015,7 @@ msgid "Exported by VRF" msgstr "Экспортируется компанией VRF" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "Частное" @@ -11162,7 +11024,7 @@ msgstr "Частное" msgid "Address family" msgstr "Семейство адресов" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "Диапозон" @@ -11190,18 +11052,10 @@ msgstr "Устройство/виртуальная машина" msgid "Parent Prefix" msgstr "Родительский префикс" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "DNS-имя" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLAN-ы" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "Содержит идентификатор VLAN" @@ -11219,26 +11073,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Q-in-Q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "VLAN ID" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "Цель маршрута" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "агрегат" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "Диапазон ASN" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "Диапазон IP-адресов" @@ -11292,8 +11144,7 @@ msgstr "Виртуальный IP-адрес" msgid "Assignment already exists" msgstr "Задание уже существует" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "Идентификаторы VLAN" @@ -11311,7 +11162,6 @@ msgstr "" "Для этой цели пользователям рекомендуется использовать группы VLAN." #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "Правило трансляции VLAN" @@ -11324,7 +11174,6 @@ msgstr "" "можно указать с помощью дефиса." #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "Шаблон службы приложений" @@ -11500,7 +11349,7 @@ msgstr "это пул" msgid "All IP addresses within this prefix are considered usable" msgstr "Все IP-адреса в этом префиксе считаются пригодными для использования" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "использованная марка" @@ -11512,12 +11361,12 @@ msgstr "префиксы" msgid "Cannot create prefix with /0 mask." msgstr "Невозможно создать префикс с маской /0." -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "глобальная таблица" @@ -11526,130 +11375,130 @@ msgstr "глобальная таблица" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Дубликат префикса обнаружен в {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "начальный адрес" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "Адрес IPv4 или IPv6 (с маской)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "конечный адрес" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "Эксплуатационное состояние этой линейки" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "Основная функция этого диапазона" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "отметка заполнена" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "Предотвратите создание IP-адресов в этом диапазоне" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "Пространство для отчетов полностью использовано" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "Диапазон IP-адресов" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "Диапазоны IP-адресов" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "Начальная и конечная версии IP-адресов должны совпадать" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "Маски начального и конечного IP-адресов должны совпадать" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "Конечный адрес должен быть больше начального адреса ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Определенные адреса пересекаются с диапазоном {overlapping_range} в формате " "VRF {vrf}" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "Заданный диапазон превышает максимальный поддерживаемый размер ({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "адрес" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "Рабочий статус этого IP-адреса" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "Функциональная роль этого IP" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (внутри)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "IP-адрес, для которого этот адрес является «внешним»" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Имя хоста или полное доменное имя (регистр не учитывается)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "IP-адреса" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "Невозможно создать IP-адрес с маской /0." -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "" "{ip} это идентификатор сети, который не может быть присвоен интерфейсу." -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "" "{ip} это широковещательный адрес, который может не быть присвоен интерфейсу." -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Дубликат IP-адреса обнаружен в {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "Невозможно создать IP-адрес {ip} внутренний диапазон {range}." -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -11657,7 +11506,7 @@ msgstr "" "Невозможно переназначить IP-адрес, если он назначен основным IP-адресом " "родительского объекта" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" @@ -11665,7 +11514,7 @@ msgstr "" "Невозможно переназначить IP-адрес, если он назначен IP-адресом OOB для " "родительского объекта" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Только адресам IPv6 можно присвоить статус SLAAC" @@ -11865,17 +11714,17 @@ msgid "Added" msgstr "Добавлено" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "Префиксы" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "Использование" @@ -11902,7 +11751,7 @@ msgid "Pool" msgstr "Пул" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "Отмечено как использованный" @@ -11910,7 +11759,7 @@ msgstr "Отмечено как использованный" msgid "Start address" msgstr "Начальный адрес" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "Отмечено как населенный" @@ -11940,17 +11789,14 @@ msgid "VID" msgstr "VID" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "Правила" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "Местный VID" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "Удаленный VID" @@ -11970,16 +11816,71 @@ msgstr "Цели импорта" msgid "Export Targets" msgstr "Цели экспорта" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "Создать группу" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Назначить группу" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "RD" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "Уникальное IP-пространство" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "Номер AS" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Семейство" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "Дата добавления" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "Начальный адрес" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "Конечный адрес" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (снаружи)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "Основной IP-адрес" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "ПОДГУЗНИК" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "Тип аутентификации" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "Ключ аутентификации" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Роль Q-in-Q" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "VLAN клиентов" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "Добавить VLAN" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -12018,26 +11919,79 @@ msgstr "" "В именах DNS разрешены только буквенно-цифровые символы, звездочки, дефисы, " "точки и символы подчеркивания" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "Интерфейсы устройств" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "Интерфейсы виртуальных машин" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "Импорт VRF" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "Экспорт VRF" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "Импорт L2VPN" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "Экспорт L2VPN" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "Дублированные префиксы" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "Родительские префиксы" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "Дочерние префиксы" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "Дочерние диапазоны" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "Дублированные IP-адреса" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "Сервисы приложений" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "Связанные IP-адреса" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "Правила трансляции VLAN" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "Добавить правило" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "Виртуальные IP-адреса" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "Добавить IP-адрес" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "Добавить префикс" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "Это поле не может быть пустым." @@ -12546,7 +12500,6 @@ msgid "Contact Groups" msgstr "Группы контактов" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Роли контактов" @@ -12566,11 +12519,6 @@ msgstr "Возвышения" msgid "Modules" msgstr "Модули" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "Виртуальные контексты" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "Профили типов модулей" @@ -12584,12 +12532,11 @@ msgid "Device Components" msgstr "Компоненты устройства" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Роли предметов" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "Подключения" @@ -12630,7 +12577,6 @@ msgid "VLAN Translation Policies" msgstr "Политики трансляции VLAN" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "Правила трансляции VLAN" @@ -12709,7 +12655,6 @@ msgid "Circuit Terminations" msgstr "Точка подключения канала связи" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "Виртуальные схемы" @@ -12725,18 +12670,11 @@ msgstr "Прерывания виртуальных каналов" msgid "Circuit Groups" msgstr "Группы каналов связей" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "Групповые задания" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "Провайдеры" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Аккаунты провайдеров" @@ -12832,7 +12770,7 @@ msgid "Journal Entries" msgstr "Записи в журнале" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Журнал изменений" @@ -12885,6 +12823,7 @@ msgstr "Фоновые задачи" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12903,8 +12842,9 @@ msgstr "Клонировать" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -12916,8 +12856,9 @@ msgstr "Редактировать" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -13193,7 +13134,7 @@ msgstr "Фиктивный плагин" msgid "Copy" msgstr "Копировать" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -13201,11 +13142,19 @@ msgstr "" "Неверный вариант декодирования: {decoding}! Должен быть одним из " "{image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" +"Неверное значение max_items: {max_items}! Должно быть целым положительным " +"числом или нет." + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "Координаты GPS" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "Связанные объекты" @@ -13480,8 +13429,7 @@ msgid "Account Details" msgstr "Сведения об учетной записи" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "Электронная почта" @@ -13503,16 +13451,15 @@ msgid "Assigned Groups" msgstr "Назначенные группы" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13587,56 +13534,21 @@ msgstr "Исходный код" msgid "Community" msgstr "Сообщество" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "Дата установки" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "Дата отключения" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "Прерывания цепей Swap" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "" -"Поменять местами эти эти точки подключения в канале связи %(circuit)s?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "Сторона A" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Сторона Z" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "Назначить цепь" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "Назначение группы цепей" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "Добавить канал связи" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "Тип канала связи" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "Точка прекращения" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "Отмечено как подключенное" @@ -13646,13 +13558,14 @@ msgstr "к" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "Следить" @@ -13666,37 +13579,30 @@ msgstr "Извлеките кабель" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "Отключить" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "Подключить" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "Ниже по течению" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "Вверх по течению" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "Кросс-коннект" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "Патч-панель/порт" @@ -13704,39 +13610,10 @@ msgstr "Патч-панель/порт" msgid "Add circuit" msgstr "Добавить канал связи" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "Учетная запись поставщика" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "Добавить виртуальный канал" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "Добавить окончание" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "Завершение работы виртуального канала" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "Добавить виртуальный канал" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "Тип виртуального канала" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "Конфигурационные данные" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "Комментарий" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13759,31 +13636,11 @@ msgstr "Новое значение" msgid "Changed" msgstr "Изменено" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "байтов" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "Хэш SHA256" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "Контент" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "Последняя синхронизация" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "Серверная часть" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "Параметры не определены" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "Высота стеллажей" @@ -13842,72 +13699,11 @@ msgstr "Файл данных, связанный с этим объектом, msgid "Data Synced" msgstr "Синхронизация данных" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "Задача" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "Создано" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "Планирование" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "каждый %(interval)s протокол" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "Изменить" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "Разница" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "Предыдущий" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "Следующий" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "Объект создан" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "Объект удален" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "Без изменений" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "Данные перед изменением" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Предупреждение: сравнение неатомарного изменения с предыдущей записью " -"изменений" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "Данные после изменений" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Показать все %(count)s Изменения" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -13923,6 +13719,61 @@ msgstr "дни" msgid "Indefinite" msgstr "Бессрочно" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "Комментарий" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "Конфигурационные данные" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "Параметры не определены" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "Разница" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "Предыдущий" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "Следующий" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "Объект создан" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "Объект удален" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "Без изменений" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "Данные после изменений" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "Данные перед изменением" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Предупреждение: сравнение неатомарного изменения с предыдущей записью " +"изменений" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Показать все %(count)s Изменения" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "Не установлено" @@ -14211,22 +14062,13 @@ msgstr "Сегменты" msgid "Incomplete" msgstr "Неполный" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "Не подключено" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT для" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "КОТ" @@ -14234,7 +14076,7 @@ msgstr "КОТ" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "Скопировать в буфер обмена" @@ -14284,10 +14126,6 @@ msgstr "Удалить" msgid "Local Config Context Data" msgstr "Контекстные данные локальной конфигурации" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "Отсек для устройств" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -14315,34 +14153,6 @@ msgstr "залив" msgid "Add Device" msgstr "Добавить устройство" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "Позиции" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "Отмечено как подключенное" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "Состояние подключения" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "Сопоставления портов" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "Сопоставления не определены" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "Сторона «А»" @@ -14368,6 +14178,8 @@ msgid "Path Status" msgstr "Состояние пути" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "Недоступно" @@ -14376,8 +14188,6 @@ msgid "Path Endpoints" msgstr "Конечные точки пути" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "Не подключено" @@ -14423,94 +14233,10 @@ msgstr "Высота стойки" msgid "Loading..." msgstr "Загрузка..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "Добавить дочерний интерфейс" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "Скорость/дуплекс" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "Режим PoE" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "Тип PoE" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "Мостовые интерфейсы" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "Трансляция VLAN" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "Беспроводная связь" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "Канал" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "Частота канала" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "МГц" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "Ширина канала" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "Добавить IP-адрес" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "Добавить MAC-адрес" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "Родительский товар" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "Номер модели" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "Инвентарный номер" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "Основное для интерфейса" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "Добавить тип устройства" @@ -14519,6 +14245,64 @@ msgstr "Добавить тип устройства" msgid "Add Module Type" msgstr "Добавить тип модуля" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "Состояние пути" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "Конечные точки контура" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "Не подключено" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "Сопоставления портов" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "Сопоставления не определены" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "Беспроводная связь" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "Канал" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "Частота канала" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "МГц" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "Ширина канала" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "Профиль не назначен" @@ -14538,7 +14322,7 @@ msgstr "Выделено" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "ВА" @@ -14562,44 +14346,6 @@ msgstr "Только изображения" msgid "Labels only" msgstr "Только лейблы" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "Подключенное устройство" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "Использование (распределенное)" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "Электрические характеристики" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "A" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "Фаза электропитания" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "Добавить кабели питания" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "Максимальное потребление" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "Выделенная мощность" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "Добавить бронирование" @@ -14639,10 +14385,6 @@ msgstr "Добавить площадку" msgid "Attachment" msgstr "Вложение" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "Добавить участника" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14694,10 +14436,6 @@ msgstr "" "Вы действительно хотите удалить %(device)s из виртуального " "шасси %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "Идентификатор" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -15035,6 +14773,10 @@ msgstr "" msgid "Journal Entry" msgstr "Запись в журнале" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "Создано" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "Группа уведомлений" @@ -15531,37 +15273,15 @@ msgstr "Выйти" msgid "Log In" msgstr "Войти" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Семейство" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "Дата добавления" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "Добавить префикс" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "Номер AS" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "Тип аутентификации" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "Ключ аутентификации" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "Виртуальные IP-адреса" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "Глобальный" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15596,15 +15316,6 @@ msgstr "Показать доступные" msgid "Show All" msgstr "Показать все" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "Глобальный" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (снаружи)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "Назначьте IP-адрес" @@ -15621,51 +15332,43 @@ msgstr "Результаты поиска" msgid "Bulk Add IP Addresses" msgstr "Массовое добавление IP-адресов" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "Начальный адрес" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "Конечный адрес" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "Детали адресации" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "Отмечено как полностью использованное" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "Зависимые IP-адреса" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "Доступные IP-адреса" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "Первый доступный IP-адрес" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "Детали префикса" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "Сетевой адрес" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "Сетевая маска" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "Обратная маска" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "Широковещательный адрес" @@ -15677,58 +15380,14 @@ msgstr "Добавить диапазон IP-адресов" msgid "Hide Depth Indicators" msgstr "Скрыть индикаторы глубины" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "Добавить агрегат" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "Импорт VRF" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "Экспорт VRF" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "Импорт L2VPN" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "Экспорт L2VPN" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Роль Q-in-Q" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "Добавить префикс" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "VLAN клиентов" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "Добавить VLAN" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "Добавить VLAN" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "Добавить правило" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "RD" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "Уникальное IP-пространство" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15796,61 +15455,14 @@ msgstr "" "Нажмите здесь чтобы снова попытаться загрузить " "NetBox." -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "Связаться" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "Заголовок" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "Телефон" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "Контактная группа" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "Добавить контактную группу" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "Роль контакта" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "Добавить контакт" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "Добавить арендатора" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "Группа арендаторов" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "Добавить группу арендаторов" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -15961,16 +15573,28 @@ msgstr "Политика IPsec" msgid "PFS Group" msgstr "Группа компаний PFS" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "Добавить окончание" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "Добавить туннель" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "Частота канала" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "МГц" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "Ширина канала" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "Добавить беспроводную локальную сеть" @@ -16005,6 +15629,20 @@ msgstr "Роль контакта (ID)" msgid "Contact role (slug)" msgstr "Роль контакта (подстрока)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "Связаться" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "Роль контакта" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "Контактная группа" @@ -16037,6 +15675,15 @@ msgstr "Добавить группы" msgid "Remove groups" msgstr "Удалить группы" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "Заголовок" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "Телефон" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -16049,6 +15696,17 @@ msgstr "" msgid "Assigned contact" msgstr "Назначенный контакт" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "Группа арендаторов" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "Контактная группа" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "контактная группа" @@ -16150,6 +15808,14 @@ msgstr "Контактная ссылка" msgid "Contact Description" msgstr "Описание контакта" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "Добавить группу арендаторов" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "Добавить контактную группу" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -16447,8 +16113,8 @@ msgstr "идентификатор перца" #: netbox/users/models/tokens.py:96 msgid "ID of the cryptographic pepper used to hash the token (v2 only)" msgstr "" -"Идентификатор криптографического перца, использованного для хеширования " -"токена (только версия 2)" +"Идентификатор криптографического \"перца\", использованного для хеширования " +"токена (только во второй версии)" #: netbox/users/models/tokens.py:99 msgid "digest" @@ -16456,7 +16122,7 @@ msgstr "дайджест" #: netbox/users/models/tokens.py:103 msgid "SHA256 hash of the token and pepper (v2 only)" -msgstr "Хэш токена и перца в формате SHA256 (только версия 2)" +msgstr "Хэш токена и \"перца\" в формате SHA256 (только во второй версии)" #: netbox/users/models/tokens.py:109 msgid "allowed IPs" @@ -17441,10 +17107,6 @@ msgstr "Добавлено {count} устройств(-а) для кластер msgid "Assigned VLANs" msgstr "Назначенные VLAN" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "Детские интерфейсы" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPsec — транспорт" diff --git a/netbox/translations/tr/LC_MESSAGES/django.mo b/netbox/translations/tr/LC_MESSAGES/django.mo index 695f2fcd1c354a8c55065d74d36e69f6d8ca0056..fda54aea45e49b2c0abc473fb9e2a6f98159c0ec 100644 GIT binary patch delta 76048 zcmXWkd7zEe8i4VA4k{{{ha$&3bIfF(=XuBw5w0?ZM5%U3QbI|Ql%b-ODHSD(N`^F% zgfgTgO)8<3`#gKC`_J!N>-)a7-u13w?{m=o@5oi}9lt91O`fbzB>3NyD-($#SZQP; zab=!FqQQP^6Ny_h(h@CkELOqwSQfv>9GJ6sTA~^j#s=6P+v9W`gnMx))-I8j$cqax zC$7QVi9|B-4i~wo_$*W;j^SmL|HLx*FJ{A1C4&_(E9J~+t>|?~+=<4q+%1-`kLBTb z1^36Gf!u|;=|Ax(7Y48tFUNK0$li(WjDCUns6T>c>P)Q9Qz|@P6fdQ|96G{Gw8O?| z`yG%GC;Fr9k5T$h+!-q#Ks$IemS2djK^xeJ1@I%Zp>NTE&&2y_r9(Ln+QGFr56k17 zxCL8dgEC=?red-@6`yiZ8~?`Zuv*!)#3eWq>)?2_{$*^8-(wFfQ!Xvh9Vg=``~+KJ z!}4i~n{g^O$DgCsDx@WXnVP<1Y4s6zq?8@tmfrZxT-&iH_k?jS4~SaqrN@5 zx@Tc&+=XWBG@9yinPKj0V0Oy&(M8)5vtWC4QFo5_dq;0da$y4_W5vW+z7JjHkDzn? z80N?4@LGHmoud87&P^Of7u(NhM}MP>F-x^@|8l&Fa^YzCXtEv`zR(tJup8Q7pXe}j zkxf7wybn$7L+JAx(GhM%+u4S`{|UOyzDD0a9sL*G9oeg=29`_|;=&A6KqIV$#jz#& z;xP1u@#qMrp!<9_`ux&(|5bF3x1jBvMFUE&5xhK_54~R$bGiS^abZLC;*GZGi#^a0 z^pB2>_a8vF{{_v=KUf&E*W@|(e@QOvs4DtGb2Ok% zXh#FkfX2l8lhDO=Ke~z^LNl}uE8tc%LqA6owbByxDCb2NZAYw%Q!#19Yg|;qQ|KHQ zsvR24Km)0Y2G$sDxE&fme{`w_qk%pU>z_n-!9w)CWjFxW#&WJYp`UB&u>Vb2Nh(}K zwa}5)LnCg6CGjpSg^SUH=mTtsiMk=>jnH$V3)=B)G^0 zb5*%sT4D~?!^QX!dK8bkE;KYH`Xt)Wis&YMhVrLaG%b-BT|X_+jq)Q6!U=g8-6b^} zhK$um2iO$Ne7htU9xV68ip}Vedj>sfD>q6@6vR>JTt9$ia5b8teQ4%#HBL+P$9(7% zjzcqWCl_&!Qb?Z63;b(Eu|rulv6W7e3GoT?<{&qqaZVz<6|Z-;3_|$71~%Kbk-KJX&C8#YBhK@W&DBep{q_X_j`U6+g(Z=xf72aWW7^uf>3ksL%%zVFZx zWV8>@*FrnE4t=j_v~#TQkG3-;mPeuI%5Bl)Yg{069x$p@70!?L}&cVWHAQ|Wy=!2$m zI6CL!(GDj^r^Wk^q3tX{GqD8SelMdRTHjzrEYc+{QJ?-3ZMg7Eo{C*@DK^1Bu?*Jg znwF@6H=x_|QS>}`Bl;D(`Y)i*HSQKV9FKl#F2nJ-3*8-!yN7Sj^DyZbfn!|M!aP0F z5MOns)HyYAj(tau!acrm)zR-g@UjP61Yo`YxuKcWGhMKhMIUsx--(E-%Of!GCy z;9B&C)&*benC6_YYtuYDVSqG_~Eh?+QA5P4kw`>s}G|M zzkrVHO*G|OqubF8e;nP9Iou@z>&F`Rr|&<2K~FOEVxo`{ZkYAip34&W(t zq|0Od8?pYq=x68v52K6rcg*SjzjR<|xBxn$lITckp$)f1M|3^f@jx`No6(ex#u|7B zx@cFT&z(Tq`xSjYZBSUumtr@{buj67w}-j#h40XgenuDJU+Chx^rkSfyy!kIfsUk4 ztRIPHXma!cbn(tc+gTLr*PtVR3(eFgH?jY{_$F5Tj7=$DKo?u1!Qs&W}uoa!N-Dv6$qif+5y7(@l zfn4#wP=7TVU={R!b2P9n=yU%=-@gt0{y!ak{spxC%8*Yzw*c+X~foR7gunyjVW@v4^|1P@AcHx!o|Giu|XUEVvIfpi!b$Dnf zH(D-+K356LVl#9^!_f}LqR-unuJ)Ojnrk$mx6t;tqtETd)aUK=!kBJ z4n|Wt9G&9{m|C^b8E6Od(5YLDKKDYrzZxCs##r8tnUwdU&t)6M{&z%IjS3&1*PgbJ09N76_%<47>2aww zmQ2**!f&%Z(7Bw5E%9D-e{VzAL}Gk+@ltf;1KpI9{#rvJn%=SYU za~JxqS^y`P=Bo((VY0?+VPMTner4iLQ--XoJJhT`~ck zf_3O~Z=->Ih;GY+vHt8G?0>gI`ki54mOuk3i@sP5U4#wLz;4G*cn_Mf-I#%2q1*6p z?2Oqbhac7YpaCV(fHt9lZbRSS>kVH#g09|Q(F3B^U118YLq|9OJ#vSl4J|=axdI*0 zdNklYvHlzMy;JDH^gG&d>ASf$E(rZ zvH|^>a5Eb4KWGODGHM_>(dP@JnJa-ASONXI-X7^MnfMC-T(SSa~CV2U@@Oyv`ScURzybU*_Q(5D|(B8vn zrryD%BizSD1|C9F`7auI{^?==RzOG499>lH(fi%d5f4MZT;7cy#S73W-GFBDz33;g z{$MPBKb`$=0KdnIbLbppeJG?f4|;$U!7^A2{ek5MG@$ipK<}U(ZbJk64Bb`VqbKVb zbj@UYIFt*Z&y{(Y#bt-}V?|r^#R2ibQPI265za&#T7kZ|5q*9KR>J*gAlYVwj&h-k zGy}~gVWG$H3wZR^J4vCbi}WqfviKP?0qyNhtP~3N1yvK z-aj47*&hk*<%%W?b74m%uriiKBkqZga2R@YPCx^D2<_mBc>igvK=~zfWP8yA=P=rC zo|z#-1<_qn25l!Z)F%@S;*Iub3VWifcM3Z4wXyy!wBr-#$@eq*+~4S@TlrbxGouf- zqWmmAgx{f=88bVq{)uS2uVCuW|6k|A6YoQG1P9Oq zqN!emX6$t|(D%^xcA)R=jpZZgqCACp-T(i@2d;W7G;j?Xad|X_)zF4&qbY0}ZI6X1 z_e9sw7<6P0pdHLYGx}^S??Ml_gJ{5qF=@s3Tnxt_(e2iAPIzE6TAqN8Xcjt>xo8KA z(E!)P`>)6H##nwA4SX9qWuHaAK^O0-IqZKI+XX6&Jm=%#g@Vx%=%-#~?18tS8Q6@D zU^^PXCulo+(Ez_kJN!M?UySv+=Z5EtqWzVa%l`Mpic}a;!)PaTE^kCrI|_a7el#Ob zpcz<&?*Gl`F4>K)iKFrUMRZ$V^+b5T4EkPO^i!}+k_$h-2csjhY|5sgC)8u;2$!KF zdl`LhJsQ|%G|;_hfXC30{~1ktG6b9xZKo`n!Ah~5tj$GfD(a&R4?_3v&FI>A8q;wR zHpZps2#;YVCgz2cu^JjkCp3T?(1F|%>u-zoQ)2yWBooQR0xpbvMSS4xa3iq;ZSX5} zi+ycG~Sqxrf3N|r_0a= zUPlAj8tXqrJ2)K6zhWvNbRd^M71lyg^u226dC?f1(r#$`!_@tMI~TtA0NU`p_`vd5 z|3)ltM?3lw%i?j&z$+GnhAX2#wl_nc8-z7+G}``i=og*Wu?+r($y!_#d^&tf?TD^{ z8TdTTK^v;GFzo*p=q_o8HrNlF;VAUIHL-p@n(`fJKwn@6{)s-9|CtbQk!Rx1|JA5) z1DcNpv>09OE71g~RIY=SD38F(I3F`{8@j5`qM6IFG>kkyI>Pd3s_UbRutoF^ zw4YU2%KiU77saVKiRJO~=h9M(r50AC+zXxKDd?(Sf+cYWdUF1ZcVhPE!>XPdeHm@{ zbIia$(LnOQ5PmJ!4$Hd#r*J_ei51uZKf!WXWLfCACEDQ-Y=qOJA7UrUmn;uoIC^4R z$_vqx@_TeGlzB0HUB3>yQ=W)sc$a1O|G!-LV%L|_5`*z+Y>F4rId8fm?At!*0Wud2 z@FjH4KSvjB`pdz3=n;M^I#thM3*3vYg~G3dDJqFc7ey^DjI;&XL2q<>jf&olzBm(I zRP&`)!P=`UR}{`cRkwR z4Ojth#!dJ*`c&xH{t~BP@zp$+#`&>289wFSToWSOgm$zG z4d_d>!DI3M*?2$O+VJ_E8y$Hibdk1+^~2DNPC-BapF{_;5^LeB=sVo6%kK5jue5SRPMd2IhY~v{M_i zx&NDSVFPW@2)o1w`o;1vG{xi4?KUx%mq%YgKXlfj?|+O==~w7LPNEt31MA`iw7*(! z@VxuKAs42u4f=h)6Bfgp(FUfYBb$Rma4}|Jw)Np0D1&y~8C{Hh(GG7%-%Fwa%|xGj zCi)^KD^anI3s>tAY=eKIi>~2@5WrY8)sxXVeHc?yfu?u?I-(_LhcBVKW__&x2%WOM z=<`R>0DssJfBrvBMMo;mq7AovGc?o{E#HWxa0L3?qw)SXXh1)qnffjIcdXC)R+zfW z(8YQs`stT}6|ve|?0=8Q{!~=JS=a#IL{s$_n!2=&!QALbile)x3YxhlSQ>kv8MqVe za5@^`)98p7MPEcSx;7av-bEY!B$f}Mk)A>WxPW$a#oOWIGXu>`Z8W9LV!16EK+ou4 zG&5t-0Zm5Rn-PbseiGe=561hCL?1^-xB%Tn&!g|H zKnL&!I>6oN01n3TCGR*T?7w_m_&`xCixtsr*d0BBM`06OgLZHl4dg7kdoEykEdOq} z-yI!DA9Nr?(11punVJ~yPq*Iv|2P-U{US7wSE6tE0OjrIcG`4MD2P?$-sc6TKqHAag+Ry8lH1+Rs;fuS_x!aG<(T~ydXo@e}8m1}_+ThjbiB=I^ z?L)9HPDJ1T9R03$6bH7Tvek zqnYU!>u-+b+hh5DbYzcV>I6hr`%7pB-bXXD2VFDYqZv7cen_Pyw}*sfoR3N8 z>_aZ>_+zwu0FC@88u72u|Ip{I{3P5jjF!trYoGx(M&IiY?T2pD;pi8Xx#)XqK4Jg6 zuivJ^x%>%zvFN9vp-O1E9y)hz&}}vXJvYXqi*q%)Xg9?BZ=(ZwAMI!tx){I2c6b0? zbEQ9H|NoDR)}Mu+{Z^rY{DXcEsPuU_h;G4plo#S)+=m8q-Jb9>VSjXr7NVJ3f(E)8 zor3k~n%aU+-RJ0<`7X(Yk!0JOmikUt7M=4p*c`h@=b5wo{_1r)mc(UP33p;?JR2?gRX7Kl zqn{=Ha6C>xGkp?0+W*4TpZ{NWAf&tqdZJa1Hb*~n`k<@-HZ=9C&_LfpN469F5IT%a z@vm5}doZ-y8O_K*^u6)ud-oq?|NG*6DjMTzY=OTYlvp1?bq!8GF%L%!qhyBuHt#|!A0ntz8ve{L_6FP-4{I- zO?(qpd4BXm>soYbyTtMx=yNiLk*f6!H0^l(_6CD2H##d1S*J9UWl*JE|c zgRvDpi7v*k)>dtfy>Z+djMU8 zM`HOubYEvZ8d85Hy1h!F1FM0y-xK`}$xw9arXm3*6Z67FVj;S{mY|Woj5fRuor1T~ zhIXO>96-0_xmdp9Sa`nzdcP*RJG!A6N}_9H8yeu(SkV3d6Biw+$og&QxEs2?`l1KO zJ!l|PqBEj%qtBqJUlv`7rv9~f|4l4Id26gci4N!&O#S_z3tSj+&f{UODxsNZgl3`* zn))v2ob^Hj8ia1w;ppPM7hQBSu`9lVF0$O;g_M^-1FeO&*8r0)j%Hlga1V41+=wge*lZ&_pyA*iI9OjXg`HdBtvACsj#8?Xr%4X z6!*s7I0(z(Tj+D&qPydFtc?|Z2vao(eeaf79)}L_PIM7IfM(_+bRb_Pxo}mUiZ{|v zh8tI*^~KSV)I}q1fu3x=(a(mlXo_c|2h($C02|P?vn9GC-v0~@;Cpl+$v?QL%SHN+ z;l=vs;%k9++zDMoedGNR(c92W-HlGgjOf$o$X-S}*o40SQLO(umVZS8XaAiFXLAAc z!D{G;nxP}=jRrIdjeKG(PeoVrEVQF1V)=QrotM!8yp6uM9S!UY^w)JKF!k^Mvi=kv zEQB^x3R`0hbel{@JGu{Ta5|R8xv~B&G{7y+e0y{&&O=$BHM=5ii2pxC;G2<2y8v;=hOIYoe>aF*?^B(Gm8=3>+ToXP{F%9}Q$7 z`rI;ffNvzZaIW4)=k7hU;ZLwJevNL=qJM<_+zSn40B**y=wi+MGrT_uy+0Kl$UOAi zScZ1|7TW$!beARfbJ2v0U(la;s-6iijKs$%-;0wl&tGBWGth>gL_2x`9l!=GgYTdN z`5ygH`yI_tuCt-zqG&)Bk>`?$##~gPqCHl{JJAMLpb@V{8`^@d`ori5e!$e1P4v0C z=R%6xpyx(6ERVy`_8vpm(0ue{T#q?Cf8L1|JJAk4$4Yn*i{WMG!;fO+uodNz=mD}0 z9qFg&2oIs}pG4>OcQmkb=-glScj!0|dVXAuso(!Mi8tD#FLaOP!O;=uh{vO=_&&73 zX=nhCq8%=b_m`q6UXBK~5q*CF69i8Ov{@ z8QF<8^aZ-8690vfT#C;9mFRN?qQ#??(2wmp=zCqzz^_ko;Yl_)YT4cJG&;haSP{QQ zf47tUVwjTRXhY@EfHTpIHHzhq(SGPiZ$aA|AIsCw_mhuuVdV4BHLw^R;chI8=g_ZS z8GMHM+;!-S&9ObU!}0he`th10Ej_hsieM|s4bY6-k7jrldax}*+Dj%5#~VLH&!Z9N zNKa3l2l>!)3$)`-=!knp2cvU87G13OpdC&_NBkIO;`8VLzChdgCRJwtf5(Ll{(`3P z0y;OBXGu@(^MY80a!qvc^+OvNh`u)reSSjpzUWN!xu?+Q7RUNk(YKWT6Wh4(!Ozi= ze1$FXdvrvVvWELL(d||reXc7S(12JTjArUqG@v`tcBe&WqM4Z+U4*HB|Gy$uyn*h9 zE$Cc+hBovqI(NTf1}3rvi=%-wL-%uMG@zbnAbn$b2s)5k(16CG?M}*;o=kN(l?oe} z8y{SN{=#7?Ho-$U7>iz#o*0Ptp^Nkwnvp9nO;3HHD2cXneY8J1=Y!FXN1}m@kM}2E znhX!z7b_k{=jzeuv(Z=3ZTc44z`j`j4Z3E2!iM+{nyGr1g?8GZA5y)sDlWk4xD)-t z@^6w0Q;{!wh&%)R^eTgX>eWX(?1PSA5SrqfWBn*}l}|tenU4K%9{T(r=v4fT4lHYq z&|V(2pXAlCqAL1e9drau(FVGqA0~aU8jeB(ScE?RJlgOo^!c~ZPsjJLG9Ez(kn{3z zzX1AtQDm+0{f`SXP#-<}TcdN>9#g9vePI9^$VfEud(qYW1p40MSbiS6QeKS)ly*gE z=Q4Cr=a1#GnELlWHDg6{G?iV@5e|;tj4q;4Xdt&^3!I9c={wL&979L?6WZ~g=)nF# z-@Ek65J-MBkP?{s`@c20@PRh*fnM=}!9GC!gn0iUEKPY{bQ9X)w`c&T&<@X_?WN@m z1G)+=mq6RgMAu3SO#S@doeSrDX!Q2zgJ`7lV|fMo6>1|oH3!hloQUP$upH%o(F~Tk zDg;y!KcHL(t9c*Y6;*Sw|J~x$ z8MqA>V7I*Ksc$+zqxZ|@3+;5px|Hw7O89m@_Wv_noTQ=(KA1l}^*5p4KqD+(AU*K} z4o2^vM}HnDS1^3a4M8(96}|r)`g?)T(T;Nz3j4kWmY_TsGjSSve|<7m96?8#yKs8y z7lh66M#@vL7aqd_Snule)PJI3KHAVPXvf8_Nl*Rc(+NFb?nh6^H?TY&#o~B*k#M3` z#zvHrqq%6##mac&H2PrmqUovMg7rWnpM(bZG#b!ubm~f78=fD49Vp+6W4w>uuwk+E z)L&Y86em$WgROCNMrtaPi8r{gBE5Ke>hE~BLmym(L$FYZ^wdAQyBj-F{ub@HTFEdK zBhW7t%kgGBfqql!QYw5gxf$IxhtM^aUOHspAsp%V|D9Yo7j?>n?J^J@>3B57FQ5VK z!~3vv*^s)=(A4HC7ryCShg~V(hh}IGcE$?j!<5~L&r|*syWoTh+)sV}bK#L$pkjLJ zt5yy4?C*#MG6L^OW0hlV%0()NFC^V@H03+78JEIQ*cv^OvsVkxUx^+- zh0t@O4Ccfd)!6?Yxy`7sfu3l?{m?Uh1Ui@ZVg}AfpMMiC!;jFwzd+wVfF8X^(39{4 z+VLM~$7$6=IVU>MBGuXd9*JeBu*2)n2RmbKyaByG8gtt!Xh-V-DqH6VR<}`raWhz zF!KCp=1QXjs)Mef5m*2hM%Q6sKmT`f;di*>=p6oy8JMUW0xFJWDfU8l$vtR8Poo)l z747I#ERI?0h4#u|6Uq(Hsk!S@eM+4}AW?&qep*zs`A3)dCEOda+VI_PMT?^l1R`>sZTsT)*>W2odL>EzEbeoh% zJFJTa(l*}jg{Jy{XvdS#cBY~~=g&gl+kxlt02$Tjd&UrcJwGZ z@`dONuf+0tbfh1m&wYhX#dm0ientbifVP*daTxhk$RbN*paZ-PT|?c_DIe1~8Rljd z6)vjh(T+EwbG8lb@DTRGAJ92%+$40+1MOfa+CdV1Zyws-%2<9MeeVFe$bUtr@{BJy zvh=25vE@TEPy(&5j(M>KI^y1FN(V-VL~lkjFcQtc1oU7^qVG>d2R0vF6VFAHuf>ZG zuqrq9p%GrvEPT7Y0;^CijgGJfI^vO72B%>LuEehRF`D9x=AphJx~m3Yb-V`+Y%MY% zKL5FJ#GB)dkI|9riS>uj5&eXP@GmqISG5Q!EQr2e3QciMERAik0**lsv<27%_n`wR z*wXjde^t3K;>PIQ-GHWO96E>hV@X_qzPK6vP}zrm7#&ADK8voED_Vts3ZdTc3~~FM~~PZ(SDdg`6e{w_v7t28+YO* z?b8!G@H1?NPj?85`x|sI=j<33dBcv$&_MH8(HYH1Pjrr_p^I-Wx+tGT_w90YM6aRS z>%&++h`#qr^a7fx9G${iD2(2(5Urc!!oOnC3TxpY^iyhHd|(|q@-65{x1*`si>`%3 z=yv@JZTLboN9XWfA#_TLp(8Je<*^$&MajFk@F;u?J-gT7jrcXX>Kk?m2ge{ZkdbI0 z<6}9AW?~u|*i&dgOVG?MM-QI0XdrK+&%KLeCYjjIg$;g*rubVlr9YwDGSM|GnxbgL z_0f@bK|2_LzIQX)@L06NJJ8fmMc2~f=&pJN4R|Z2{`~I?E<9>aqWkrqSiYiLsJ|B7 zKAC6+nxFx+Mmz3_sX);8Z${V19cU(|MIS+*n}Y_p5L3VZTh4_6tV1LF0PSc$+R$ON z!=KRo{x{k{p6+49MWdzB`pW3@b5lfi|!K zec{7czZZS}7&^jJ=zFJQ{dsgC={>@T^P_}?tVsd@fVt# zti8i~MWdzARaUV#ljVcesIY^^Xt_1oK~FT&f#^{)0S)vHwBrZj{n^-#^7H6w`4v4& zFXB5|kICBYY2S;GGW1;s_TWRj1>PEd4@cxzG_5iI$1=nb8L5zG{O8-VY6A3>w&-Xdw5; z`*YBNEkpOsMl9r)wLM&z>YvabQ7)hzUyNqIAw--vnt`USGTKo+bj>u2c0n^S03GR2 z^to~98k!vMCo%QI+B7Z=tgwpL(%p|qHAL! zI`=csb{0op8NmMcferD2kI)ewMLYTh9m!wOY&V7u^PwFSMxQT*F2-tTdo9ob^p5@y zZRa*Lfcw$+W+%CDgbU-1W%0(V=nL<}`j2D%0kq>2vHo{-(D@x?YVHIH=>aZi#NujseKR)@Da43C(-AYpdGJ_u0tDs6McRsx|a6F^4I8y zPoUfV&v2jrSo@%G<0|yUB4|Tp&<^XM9X3N7=!AYS_d}1`v1qENqt88wKDQKoe>FPN zx6n24G5XxMnEGMuS1wHTMKonOZwis;M;p2}S`lriZoJL*8ptek4xd6BT8cKj9Bp7FnxQS|6nq@Zhhq688rWI1 z{j?$BXQsUvq^;uv9ncYWi{%^90Eb4$qXFI*%MYO)%tHfw z4t;+`yuUuye-O(bCAlz?1L%WC;*Fot&wzho{YA9lEB+UrD})AG8V$Sx8dy!V<7Q}k zZDV~eG|(YvCPtzeN>1d$hNhzp%|rv5hkhD9gEqK0)-R9cmFRYQEtYqn?|+JRd;ksT z1iI+Xpljx`VIhzrNWaNMDK6}=Jo-XabbmJt4Sl)3(Sv6I`bA;_I^vn= z02ZJhYA>SCZ$LZT5&aAuz*l&Q`~Mgh&h1GwrDxEQ<+vp@oC{51Q8a~_Xh$v34!Xti zV071vjpcizv#>Gs3-L}og!SoTyeJBsduJ}FE)7SZ;+bw)W_QH=+UDh6eB;8rV~4s$Yn%iEc!9$2Rom<8Na9h3KV|Qi1b_ zbzHbzu0}hofOgOb?XU~l!QklV=pASWQ)78ybUFI|tLQd`!6pS zc2Eo-#|n5iZpH@K;Lh-~-5pq&^81*Hzhe_DIXN6qL(p9`8m(W7ZSh;|ftBwHyJiZG zqx?0tasPL@JN$9}o^#cP1GusZI-_V^#R!FKnC zb|1(7l+R-=y#Bt>&rD4E;ubEd;GgK~EIB1K*bm)yv(Nx`MlZWR)VIRg)K7`NiFGOe zh6Y-GYS=wP(DrAeQ?nUew4Y98|9f=qr@~eH9lEVf;br(MdjA}{eX>0e7HK}TTsoF( zq7Al0fAiQ8J<3O-?M;vOA3@i`Ty(K7e}Gik(FQ6EU<=ythw;IE=;}Wi%m1Oz=bjdx zzZyM?Gon?{fE%FCwMD128`}OfbUQv0??0C0!WR~xA2Q3)#keWD9gTEP^mwd4gQha^ zU^s&Fpzl>j2hb25X$Q338)JDwygwaX#L0PF_~Ldn;ytl^2>sYSfd+UQZSX&|i%ELg#jEzU;GW7vkT}d&U`q0YaJ1N z8cS2Z3!T%`Xh&zGS!aa6a-+Y}xh9rtqKmT;nu-3H&HX=t3%_DbMpHQjhvOq?!3x_$D^ z3V#zI6H8E@hz76#7vXAr5j)QgQ*thv|IzSEt?Fp|9i#ox=SN|2J}nD8#{TzctUD(h zjWf{<{D3aT-_aERgH!piWx6hMdO4s8J zluOJDYb}}N!V%AiK7poeQG8%E8u3Q7;qB2q=yTto@Be~6cMe^2+2)5ueJ%Q2W%PbS zbO7yQeR2R7ZKxQHF0%D#20n=8gXr!!iO&5w^c=YIsnB2sy6q~X@3%lZ?1r{;6WZ}4 zbWJ^g?y@DwIgw1PTA)4x}whwKsy>2%Tv$}oCmPyw%|+zNeg5PJX4SpO6{($`}7Q}nr0 zXuw&Y4WD{B(8ZfGS_z%Hc4$ETF*%5fC0w|Qvn&d$J_kCdrO-g?ql>H;-h>0uk-djL z_YpeR-=Y~jkM5qFi$g}rp;J}|eXl)M#U6{<|1G(gN`>2SCpv=9(fzp}O>O3q5MX`u zelzrAv<;f-j_BIxkDl$r(GDh~fxL_k-~;sgz$dZ1XGtnycC^+57B`hL<3A7<-$mQ!YX(UT})+P z2%myYup;H#VtFxolwiVW=JQB^si`WA{LZ2`GVhD5))}%ZW%i~roi$BG3zL&z+@a`?8}5-s0_?QlJI#`IUhU&8E$2KpS@?qTeX zrB;SOCPf!xP5Mu4=fV{K8!f*otlpmJr`rSA7uRD`%(FVAum?Ja1JKofOZ4`5|9*6_ z&P3<_IW%+Yu_YeF)Sv$qUlZoMB6`rYz}h$%T`UXGxm=7czBRGD746`2Y=l3c0he7H zp6i3|iV@fZ??+F__tAFutY!aaa`6=vo>Vzr4cns}x+dzOFEl|HRp)sBrdU5d)=xn* z@C14QEk(E6dUWL5(ZzQN9l(!hCN8|n{`V-&SQqA~LG)2{EgZ+*nB%pO^1*0eqtI1- zTl8LZkv$U2uVG!v??%s~?^S<2jJzKDe&Zw;&SCpl(F;xWP3S>14juVqG?lZ^j4VS( z_&Rz7Z$n4^bu9mm?I~w}BedTWZFe9##kZnUmz>Ro9le0g$*SmUXsX^qU;GG7@gejx z;Us!QXI&q@YTbYy$q%Bbegu7Q0ov{gbf9a{k#7w5lZg+xu;DM!ksXf@{DF?}B09oc z8$yF+(dX-+0k%L#(hGfmBs!qU=s`0T4Qy5{KaOoEKZA|k|KG{|pd-5ft-Rsb`^94G9DjUQ7mS})IG4+=<25{lr4o4rH z5+8U99pO?mrLUnKY>nm5(QS7Gt6{OXL%A#Z{G+k_ESj;eu_FG6W~RU<_P;61;KDP% zDrR6CbbH)_?v9!9{!3_}TVwqJbTR!E>+^38KL=Ds+iizF-v@1fEIOcv(Z#xOGyC6d zu{Kt0KwsRAj`R>Z6+cD)L`QZ3T}(ON2@U2)>&v1Utc5Pp4(QK{!_WauMYr{f@&3o} zB*Tr9RQTYP?}l;(tVFpJ`od&1uqBvU#b|&V(Gl%J7vb0FNdG{$?G;;s#n3fU9UXb| zSl>Izg)fXiPpYZtgY)A9FQFrPJJ#<(J35X|&EK(HU~72468e4<^nO<~;89o^C!uq{ z3{(4m4HvG)ZRkioK^r)VPR;M=NY0}#T=8DWNC~u|HfUzLVRamYzBdv1d_zm4|S>6vXG(j`d8y&$|^trp@{n_Y2vK$Ry9ooTGG?SmA9Un)J z<_qYyE%iZoz5=HHv35N!OmPeJg??y5*F%?^Z!^Z7u^&4fGfEK>Anx{7?Td{P1`wnz9_|19@Y)P_#H2ScO=wi|&r5=*Zfl8R;DF z_d`=XB$mgbi}p_Ry@xUNm$l|_VPuQZ5wAwSguaUv@BrFzw(VgG@?t5Rh zwQ(le-ur0g_MmI$1eV8t(M*=z!TvWjgLj0_|7Xzv-bUwoH@cXPpaGnSo{47J8NPbu zMo+>)I2adWPt3Y21kxAH>@Dc77>5Qn%U_wAvZYiwSF6yD-$Qr9J~ZMV&;upUN8!Y) zjE=Mex=8Ow-(QGkZY>tWUFgV9VO31q9p0~oEhu+Ma^W|hC$J^1LjyREu8k``4&_JC zsaS*tv=a^dPwb3|Ps00MFbl;e(fbR~#kdU3>>4z%E$A;Ml1I7lC!5BfhRCL%i*E_K zNS2`^Uxlvj9cU_#qKoOr=-=oz&GA{7iv0KxFA4SJFlb9zmKW!|DSVVhq?BI-_c~C zt9b_c!n%d7R^oT)0R+ zjvhxx`ZpTD6<>tadJW!6xhk5m#pv9=gsHWI?w0fDhgo7@IFgH^9d|*W?}zp`6qB8~ zn9PN9y$kJl54wuKL-+YbbTO6sGAzDKbdB^y8@v&{e+!zq325Lea3H>kj`-^R@zWLE zex3HS|9f+B6BRXZBeuq0(UH{oD$G?QbbEC`Q#%N+$8l)KJJG4xhX(Wu*28mXJJk<_ z`g-Wdo1+2sIl%sRG2B9h8JLK5F^P7x0S#~m+F*%;;Vi!at5KeZF47&?6Axh>tbQo0 z`r&ARx1tB#UFg)UN85il881FVBRYo8)$iz+$bZq175h4TcdLUg#=&U7x1uSZgxzr^ zcEhx9!v5}oo_MdK+xX+?N%R~@W<4Cf7?i??sOX07*F$LJ$It+NiC%IfoLtwUsU3{Y z^>FmPJJ5_K(Q{=cj>Au}3pPI*1~3=PyZ@JPVQP1wk!Cv+mGDN53c3 z`Zi3}IJ}GU%V>SMx98h;)7th!YTzHme|33U{&L(IIKSbyF z>JxGCp{srnR>1#Z20n)6@Kto5A4I3-&*%kojb!~HoCgKb=c-^4_kU|H9N`djTTDQ= z;X~+}csiC}MpL{A&CGk~d!M0;>KHmzr_hXMIT`+eZ$q@*h3MK@gC0zqF!hf$_i|x` zzoQLg`!VeQqUfTjgD#eC==K?h9x&6<_g+9h#5SM}@58eAGZx1Dr^0(x(e_(nMeKiy z{qJgjhzdtK7ajTY=%RW9z5hYH|0&wx5p+ax-i!&O`%gh^GE} zG;_E9lnkl6j|%7ZVRRABMh}vg(Nw>VzVIIU++K79U!ehI`#E%22pvFKbobOl18N!T z+hZll{n7RxPIA$Ki@E57N70T>pd&wrjwH)3p*{~~6OIJChB(5ZPi`Y1j?`AKv! z75OuCR0~T|ZiHs+CUgx9M+3bb9q3dv;OUm#|FgNUqsP&d&PQKdiUzhSmN%m*-HA5% z75e;%=xKB<{e#1>&6yC`8Z@9c(SEj|pQhU|_5J@K7pCkax~={~JIL`@h_n!z%3^4J zIdrOOqx-!Rnz5niIWY-K;e4!&o6vSoMK7Z7UXHnUFb>nC7RkZ z(Tiy6v!4%tB3cOT=tk^>!_YZ>1I^SX?2g;e0bTuf_$t-}{a7E52KYph3-{*>XaMWc zj^2y)pQ9r^j=u0~tiOmppZlNieo^$js^}CoLI=*x#bVN=`_>+@d-i>V}fza08r-DoRxoArneMfkYR&i-$xzdBkm+5qjSBbuQb&?&eXP5mr%^{>Gq?*9+C@WEr~ceG#7 zDJlP7_=AG_=mGQq`UPVtdXyeUJIa4CJ+T@~p^J7eI%Pki_s^j1Wo7q!^cFw|+7a`+ z|NC*_h{vMaVk&yDJdFnS8XCa6Xa`@TC)popX0A-jl3KLaqN}?B`mx;wZEpnn-W0T* z`Dg}S$E2y*$%Xs*H?)Dv(!&cy&`7JJ+o%cFz*gv---)g9VRY4hjy``7ef}gGz^~}; zxFk!K)S|o+eZOE9&ObXYONAL|j5g2>P2Ip)KL*Xj6m;>-ish%#hL)r6tw-DW03G3e ztb#wI11pj>OX`HoM1N$vJ1hTZl}5gp3OjrW-Paq?j^2&+yV31*DEd97GKN*Dzbspp z)InAkD^tD&E8#q>iSMIRbskfnewT#)@+Y})ag;(ku8l3Q5q8G=(F17@mci5LiCE~; z&`|?)B*W1TXJQ7vh2`-eI>p&8%aS@FE8?A$+hIjae!xXFE>5FocFF9a!8TZr@(65< zFQ6TKhvhI&jx4GFdQ5$+PI&a%M^WI(`DSrTj0tYg%8GC3W-;M9Z&XDll}Q ze_|6XlPgQ2x%+<@7w+em(batvO@02{VQmaW7u9HV4(~$)or8ApQoO%4`USeCen6i; zjXs~AC)5{4w{Hnd{r#T?T)29hp{uqF`r=S@b>EII#%bs-cpU9uQS`;=TJ-b%EwsIN z&;jknLztE~OyM`^TDv?S``>MmmkSp|S*(EFaUkA| z@H=#57tmE+pkP?##nB9Aq941>(M5b?LH55V)BRM~z*A@gYtZes6J2zB(E}x|Q0Vwl zbcBVl36{ZDI4rsfJ?YM%naWc*w08}fq0;DfuTYr%Z$&*S?4S{vkrwC_^v2qF3%cJI zqa)c6%e&AFe2WJB8`|ODu|CVyA<$gtd)H!LtcI81BS|jo@NslbmSYxNjizuN+VJLB z-i~H$54tu^qM0}!?_YXNXeST)+|}rFndsVS67P3F15ftg!jTV(H-@1pAA=qo3(-_< zMI-(!x*u)uFdD!qG~n~`e%2!4T(}&4uMv8`CHhsZ3o_-A2?KCvy&!Q*dYHW#H z(2g!G8Uo3S23!ISupIhn*9pzkEoer^<6Zb5mc^{shDBEi4WtW}cK`R|!Upe)Hy%U- znS)NrbJ3U46LK9om;2EGPhlojD;DPdCiGkwfp#<%4QO^OKZj;)73T8u|7|W@t-H|& ze?&X@4^3U}j4)S)(11##Ct+o@gV|_<3u5_2EKhkIw!p9B{Sw8)+R8*TS`$saD0d21*I>5o`dlO5r|4sEP zR5<6G&=G%vj%*)#|0tS~-_cc@tz zUswhI!HQU+Tq^Knq8ArF*gsSxZbl;!FKn z6DopuH=-j@AuHv0&2cM$*`rBCk z2Yo(gwNPIS9Z?{WDRo6uFgBlDyJ~cWA4PY_4##Tq)wm!B0x$wpP=!>VY z2A)U17gVknUTlYM*Xz+ao`t@*3+>>WSpFHyP)=MIGEf$6FB4s3L(s)H0#kqge|)UC zA8lv`Iu#4BA3l#RwnY6bssAs2e3H)9m_?Ug!dYt z9d<<9?TfZM9G$v5l3WvzZUK{UVqPWE&F8x1dun3T-%v1~?l%lAl3G^g4Q=ypL|*gJ_4pp#l7j zru@=oA>gZm$wUShHc$=is0q5gx}itu&GG(tbT>>v52i)vbMMFc1Lzl$v*=p6x_LM$ z>!IcDSQ^Kn&&^NC{@cifk$)3CgLhEAqD2_#wCG&)q+5yxx)FVEH+sSykN3}ERm!NtndE6g9}snI@-`~G}TAZ)SX5<{4d_m)hhhPqZD?fel&K&chL^= zwhqsiKr>hqZLcw!vCin48;Yr)|3`D-hsqRmL<`YWuR|OB6iwM-%)s>%m%ey7|LNus1jCza$EqFT!hf2JIkAX@U0d=`XL1i`%s^lx7UM$C;61Wfbc>V^J$TO%!|Alg#qPcTvGeVW# z3-z>=hYHvkmVwbw?-SoL23`gmVR?8Oc7&c5&STRR>Q0P+`aEDZ)MeWMmB7DH38rl6 z?6^2oBBhO0jCG7np*GSEa`Zk|7ZZd)?W7-6hJ&GYx&rF#*Fpt44po^4urN&1%BfsM zs2#P0N}wxLf}u8#hT6z5sHbWstf;U57cr=W;2hKrQ?+)U&w@}1RfEd7K2!;tLLFHM z%m4=)#~bHC1y}>6w;k%~It=w0&^0K#m!h8k)NLF=E~v{_+UAX*9CfjIKPX4Tq26e7 zpenHy%JF%q7t0e{PukYmaRFm>sIM*C8V5t47r{&h%4joGNe@Ep{2|oNpF{2Z6;whQ z+Bt!8LG7>{RLSeY4zL;2rCR|5AKqa_<`-aPn5Mnszd?JRe?1nh5XeC%s51<3}BM{uOu?0`2q*s29?9 zs8a5MO6Uw!B3EHm_y9_;Ku2dM#i9IEgsNmso41C6BQ$wGsKkat9rX;K4OT(zY#-E4 z&)NJAR3iUCoqdK*&a1f?lwKn!M_rAvP)9NisQRI)CPeFliV&y|aT zN?QVMfYo3Sya!d%hfq6x1`EPuU7e#U3H5xJhf1U-)Q(#~>34wg8*Us5b;J{)?54rg zdj3DLg%!qifdxKKhjO$R>JEHoyaMImF4Rt+LRBQVo1>or>d5lLF0cxe{#>Y|SqgR3 zn>5$+e}sX~_B@;je}j4v#dr4vesAV1Sep6oP>)rf9*%FSeDt&*b%M}f!H{RrH zp`QCqP)BhJ>S;*cljpxAgF*~c+73{q91Z1gI@Bw84%A~bA1bjeHa`jF_%^HyJ-wW7 zP&9;kRnLLa-vL#jGsd5c4|?(Z7iQrv1S**~#3@w;sI#mERhdRm3H3IHL+yMJ)Det= z<>5!L96SVd+5Unmxx2T=^*zi0Tf$pV8!g|*=bTyHKF($70F_86)a@M(r8pJp#jybD zwr_?F;0q}ITA?1-a@Zb@gMULMI3mpPKMCq+7C>!mBP;}W_!ubAPf+jh$559pWnX7! zIicjGpyW-VcG?5#=;lCG;2>0`et;$5W2k^R`Z-5X8n$EJ6w2RcP?yrTmx0dq7%T>F zKs_d@`#bOKj8KnZW2jQLf!aZD;{d3HVxSUO167%?VRM)~+<9SjfT~EW(FfVM&ozyK z&T0|VWm#?Wuc4mb6Hq()5h~+k104N~Ft9_YyHOe{(MnL4trpZ9uer%vLmg!oDE)94 ztml6a1C=lyD#OW8igTboS}lj#$rY#siVSqV>MakY-w*0>iiN7&$4~+0Lv3s+l)rUQ zN4U%6CnVSNf8G{uL6!I~sK+N+g!6?&5vZMYhT2hYsK>Ie%?CmSh&GNf&VWi}5!4H3 zg~@kAZTL9!>GobW!EaEC?nvkCv%uQSTRI${d-cdaNavXy|r5p=2pAJ=lPoXZ`UZ{_9hoMS+6&8T6U|Ey>A4uiT2fA|=bW{@<-dDmBhI?Dv8FTqyBlJF3e z!>3T0zlPdbx>%>AURZ{CAt-rgs5>$M2JVJ&jBy6kQTP@y(2iC>?RX>9&JIEuzJw}S ziZ~~5W~ho4hFY%y&Q5Yb$@9QYumtQ3C&4&)1NMXMhdEEhKBy1ZPhbO>ZaB}s zO45OWUNBvuG7N<(Q8ZMkM?u~GNl<#zp>{A2YNv~#65DF?qflR%T!FHG168TyBOLv# zusQP*BY6I0I1+(MI1|=~t6&xQ5LSZ)Mmm=(1nPE=hpNn6s29>gsGV(v3U~%8;mc5W z;Re*kZb2QzZ%}?xj^g=Xf_i?hL4DMF0#%Vz zqn#aQg8JA|80r#-KqWc|N`Ep`Ld$#%ybLzLa_|(CfqRUz!}L&>Fbh=X1)$bzK_$}C z*d7MH4uA>}Yx5a4Uj-HLE2zqS3w6hQXBmuTa1$y}C>2qrF;EVtKq)RWZZjT%IBqJRM_Vl$v_5^p)TD_sM0QiN@$bK_dz*01C`Ky zTYqKiDaJYLIiS`nKvlFM)Lj}06?g|!1rNX^`uP7H10`@CDuJI&;Q`d`egU=9v>!Ok z4|Qp)Lg}}Fa@^I{``Y>_SP1znsH55ib*J_lzlDLn|9`<0QjK>UW`IASm<#5Ie?aXd z>jdY+X*0Np`6$>JW}E1+53I?2BWw*H!FI6bBH*8 z%efzxgqNoA{5NEfY`XLDyd^BlJRa(^)V0tH55pqxHY^I$&2Su6h3%PlgT3Ka*b%<_ zk;l~sM#4_;EK~)H&UC&4>H#Y-Uoex~s)g?m6o;N!&L^9tp+5ZffXZ|v>;TupCeS_G z`AVl5l-_)(gm*x_^Up%P0iQq}#XBE6mFNqlzXH~S2Yd|rF-S7UaTp1^G2aab!_0F% zfj>_FA=Hr^gSyS0dCr;FfRW56L+$iAYf-n@uz-e$ed;^vEu!T+{ z+o3M)&yb_yA8TCX3H*~|&3m9OQTnA0i$ayY9@O3F z1(&!<0P6AohAofxi(I3iaGRhFUn-|r6bP+^+G8D_4rkX`WP|_>isbh>dZg2xgW~@Bs{LO`kp~BT)4`4{y&2{l8sP~ z4?(@rzK7cREtm|xfqD@oUF`(Q4t42DK^;XKsP*Acer7TE-x^p-*|+-mc4HopV)@jux*=j(=4P-z1~y;s+*%(j&-@$M2)=>3ObtJGF4t731XFBqDo_`y zBJH5wGZ9b~`3&l4*83P}2m7He&skU!X4vSwNNPbZ^IlLN|Hqkp5mZU{!piUnR7KuE zoqhE$oV(Bm>ds7pdEjTT7CZ>`82db%oHH!~n81f0qWL=K^^G`D1VcoF6UCH#1A^_KGz8bGQ0%!9N&cs?AhW}#0z!ldO=;% z;ZT=rB2?u*f%=+o9n@2E9O@I8YfuS4w|R=Kjvp_SUKN-=@cc7qi=Y>j;dYqD&Fv2; z@QsIUPJ$1h5_kcXXp-$7*9R~U)MZ);wd1u=PtgvWAF}xwsEuBOdR0Gy`SkoZ*x@|S z1E3zq7^oc%hxOr9sK@3E)Q-cK z4E*`OVGNY{1gJ|k8>-|RU`}`h=7u++9C-ZBnP!CwTpH@gszC+p1bf1MP-lP4d1t7n;3KFzu*JuqFoTqPoX>E|LEYx=ur?e8b@uzAGCl-Vfs;@PUW2-{ z_n|JOYp-)eIiQ~RGEg6E+Ctrx&QN!!A5`Uhu?+M)kB3TR4Xg^!K)sMs?Q+VW=~H2o*SZzY{Pc)Dh=}9I4M$!5O&fm_kdaKs{|f5NanQ zq3+6JCJn; zD*Yj-qd5VU&=n}XJ5ZHOdEB`>8IJp$K~4nPVG*dutrS%0%R}9XwosSp1L%eGVF9=s zwu0B89>3DxIEglcN~9}P1^PhwA7tx8Y(CLvgK1DDn+=uWrzT$pZ$1t70(yWK&6c_!8oX$PldXS>!5aa80zu4 z0Tti{lwOt-PH8JbopBeagd?GLJOV24Sg4B3f;y7D)aB5 z46Z^YdKW6tpHLM^anjjI9;k$iLM2!q>d5*)?RYp0JQYy>XTs!q{^yy(5~xhqLk0K} zD!?hI1a3nm@H1T znZh(E2lJpxzY?nC`=D;~RTy~ZpLW)BKs_B5pb~EbwLZY+lb|ZJ1j>Fl^c7<869XA0 z`OaC$3yU*v087JISOBhsx@_MN^;D?aJkR8tpq}p&Pzn49^%Oj?`5UMN(w%imoF7WR2vh=9E6)Q-$i{bHTt}%g;awl!n@QHRyqDp&WOFN+b+=VKi(2XF*luA}j`fg}U8Ye{h%+ z>S*&qC0q*X^45il(;Kp3pKF8(ra;|+Ww0RJ2ep%1P?dQIb!IQ2c9814GtU6EfxJ)w zOF&(=s!$bb24&wKDsU+D!cj24p8v%RblDC1U2sbKE>xhL zP|7Te z{nSvG>m8_o`Jn<-h1ysfsLDn_UEU9&5?%-czyI?y1}fEhs6@6w?RXzlpc7CA7oifl z3Kj4X)DgXg(hI)iR4zS~JSUXD{Kk?{_LZUhH@?L4uN`+pAohfE)X(OzP&*n4WjGru z@N%d-uoWt?T~PM>ppM{(&3}M8imOnizYFE(1(bctA9?<@^YlO38w)D)5>SfeOq)%J)O<_zIN2M^K5qfJ!vY6(_DQ9|M)B9F)QP##S(h zd2gtvAq=WgF;EGOgxbMWTVD)yIoCsdF#F2n7ohZSLfwU@P-Qb);B>VxC=_}2+XdJ|7RH} zvtOYy{s$^R+H1~poD=H#tpK&&8p=^0D7!&W&-qxWFHAm#1>rs@yIW9q!gbyG%qS;R zC9A=}^Iw~RE?-k)XQ<244{B#4p$sNKUAn1IXF1!}7eXbp66$QXK)ryDLfw&TP)G0t zD&b@|oC;*Q!Sk1F-d@tgZ+pW~l~7%%vu_Ah@|I8ugg^z3gsRXesM|gZY6EMa zDzzOJgOZ!!edYYFWUST z)Xttk`FRDUpY)~^@LecBIic3`K~>IIl7S2>LGAE;D925p66pwa6a%3W8VhxnQ=#-f zgL1q9%HdX%?}5@k2DQPnPMcP6I?ql)+P=1C&B`^u@Nv%P`U&r|n4FPUYdUka z_IeI!gK^RiZeXjs^nRwb!qEck-Z6*IkX2^=4`higJxNs}$$u=-b++&+^HC&IUB7>K zE`zG(WIW@<_KS_@kl1MwsYT!fU2kh`2-b&S*U{6_)MG6TyUb2MicKAYKc@5Q5B%G3 z?-HXUYmwL;K);AKtdIX6&^NKr7r{ylQj^_sluF?+!IC(^+BPb6581b@HKg|>_&n_T zpr4ufujnR$v+=hO-K+F9jJukT-qNS%#aA!viqjR})h02Bm3BLZU6J#P5nW&7d_PHD zKw0f`Wlft)|AAx@TQGW|=vB5O%gGC(E{pHlyg$AQ;(s|d`AE{5&ovgqPAH`yKxM{R zFf5pu5Q;yV0~wq|UJ*x$Z3_B_aQGF0f5mpQ(r>7!V8a9&0g1v{|f6z;8>#z;% zzoYG9fd#!uiAGt_WhUe43$&X!J7*PmkF~M%i3CxrrB@>D4URjI86t`(EPceViPFZDAKHS8=i*XFDp#T3XiBdOC1* zx3$SQ(qYER^~H|)k+d9iU4XY>3?EV7$5o3JHmV$N!@3YlLN_d|EHUwUX!^{ z{*oR|fG84smvJ-O=^xCqnByxXyom|{zdT}&hv;lj3M~PBzBkedN8rgV7@~YL^rV=U{lB0@jwKv z0z2i4TH8o7s~EpL)8*@Gjwa&dGDfp7&_4>i0(nR1p)W@^g!xMX{LWnM29=q@E{fT% zN+VBB|A{0sna{KM{DSd55;(HoA4c3;l)9};L9NjDl?%0s({vqAx}xL-`T)=VuX?G`y{uP z@j+y3NO%#lFe&q8nQJy#k3!&OJOO9@$+#Y}&zL8+TF8%DX(iiDaz7C$mL5;A>^Qz> z8)?Bx@ScgOr0UjcbW^ZgC+nkM76jc4I6 zYLtRQ{fvOs3DyFG(Kx@s4qjvM6a5+EchFlw?|{w->^dOZNPvp;2y7l>GX@_?@bxZh zUC~iHiN4wZ{KV0t&`-hoc0Jg0FuaRVPqM4aSZz8=1?WHGa4g0#=&eSl9)`PFuTJ)S z;^->Fy4n=%?3@EXB#xt!k#x1f*d4|9L~NR1Q_y0}A-TZQHl4+X1lWe)OUBN_jt*d$mMDivXbAl%<9jd;n_4ijwPp8F1Z{80O~qFzzW3o*Z95yQ%X(B&;%|P- zP>a+2qiLC{W3bDI$*s67Bp51g4 zEWw>5*Nky)`Y)`%vGqIz?}jXtulfURiW&Sx!1pjJNfIkCs10i)Yt4EEcn|(#0pG#d zs<*0Al(NT>P(`=^y>6_3X6tS6wU{-2W9)xg4Xr8uag+y>(Q1N~A;>>Cc+PkY4l0t& zuW$*njEwKm)gI$44K~LZ>mzqs^wXL1!>lF6rV#;t!;bIxyK-346{+GG#@|uN`Ki?IYh zwt#ctUR%pf;KX(ee--tw-WNeqA1AZPJPIyCX`SsLCqcfXM>F4zqil?K~`3Bk-1j)nbEWIChmbe4 zB)-D-D`cPJCmf&I(0z{0eB|#T`@oV5-2XKQ-e7zlM?EaFzbtBr|7IGHT)FFgse?v!>K48lfj8crvmvxV_UWctplT5U_>ih|OD*uY(4`hMnr zRhf)pH;YhOh_g#1G10Q@jPf)~#D{Jyx@FNT!1xw=EzvuLty&SBcVN912`t2BKRRk@ z@!1c(>XyU_*5m29^>xs2cJMQkCZ_x^20j!^VGxbs2y-4nFtsmPJHqa(($!wsj(#)y zbOdfj5^9ZE>xqx4_|m^G@Gm-Lm?ySMfj{-ctcPWG&?p5Tic3hY6Ksm3DL9Tpej8^W zAzwsdW6|dy-f+Fc1`^vesq8G$pQ+)l-T58)^PjrhQ+d{ll z_#8|xmYTob(hNa$j3&@$5%_b;l@r-8oD{XJYZAN~>mjUNL?;Pci>wSmBj7uh&^3a* zN5H0YTK}HO$4^B5Ps@PUIarRztA2E{8&B)##gMC|!CEaIuWG?W>`R?uVFse4u~K}* z+B4G$Vog7Ax{Tl9>Wm+nz4nMwuSRJ|J#a=PT+?|Pnf61r~&+iwBOLLW0QgP zcF10^rnU=NXVy*-tT>6RwBTd$ot_P}fZtj2(r=FJyuQS5h=Xoq-GqMfEd?oMr9Z$h zJ5JSl&`UDkX4Tk2z_;6H%u7?zMF{KSZ-^2^b{N08i8BT}{Uoa?^E)KiL=UlAW0Xpw z(4Wl1krlFI$?hx%{-4`|CW`zx*@UbzeHiv$5^GBDN&lOKH{jzj;~4Z3@VUk+(iLVT zF*W^o%{3n7-L|Ot05VUGQ7w~|$2fv=seOynALhFW2Ib7YyQ&n|3^xRm z0%7{2b*#uV?ep3$2uB#=#N6wf7o7c%gj$mOX1#J;wXPAc5hv~WeS zxP^Q_@)gugtvhR5(VvQ!-gx_*bZW3(iu$ZYzLWVkq_zykqZ5L?+Rw-);lqzi%}-B- z4vl~J7-4Hh$xvtot68wms7+a^SUX0*H+GPX7>^)mZX74JPe`~E38p6KcO>(!ZA9xo zv9ZdqocUg1Mq~AR2X5eGp)E|b0K?32Q=GbS)SmfhdJK+}+HLs2bmc2GYnch6R*mFZ z(AB;{)`Em?!A>R{h3)}1T^C=0&%kc8P@73Mk{Ci+x>HgQN_UXmv=YkMWGi0*+u3v0 zH`1?S(}R8u-Q4KBKz9j==fGb|e78a87yLcIE}s67x!O%+zDRZxV-82LqXrlzwsbgn zL^9J++<-i{t?fYJ9J(1;@6EUeLBAkSGJHKlcAquO0!=@(UvGA$ElzKeolixE=qvEY z3_fC^4i-5H)WVc^V85?Rv1!A!s$+!lIm1KN`%KVGY5o`-HR%8GCXb>eGSYw=g$@mW( z_G0`4%4r#^1u<7EWI^h1G-`d(PlauJTd!o5(OM@GjU|z7$Xes46?!SyjNf$X1qc4X zfRn{}7H^VS5JrVDD#2JSqjpPsiL8?a*E}b?nrS+ktL4J+eFBAHGjNXkWhP%<(prG# zahQeB8D?-a>fLX*!lk;4r7+pOOku^sTf>A_Y^@^zKD54>^4}U6VYo(X?o~-pJqYr1;V{3{{|m%Xllg>l9h3O#?3K~A)p`G zd2D*4yO^$almIPAxGU>(;aURkN1lct?XX*h-k;b^w(}T=&##FSr0dm+5{0txFN$9= zPi9&EiM%{Y-4u)f!B*NN$Z`{42Z1^u%ZBrkB(=lraN+vS#-SWlT}!ebe!||;DS*B2 zE`otL%!{K#1X+x6H=LEROgo^Y_AzUzksX0*MR5Am9KST#Ad*t6WHw(rQ&$kX9fZ$x z^aI4XM9dMeUK-B-D#FB8)*RF_$5m1MmT_J<-qsG|tSyO@fjvq5H1_Yn_vv4;!(7a7 z(k~KVhuO$~bLMJ;=;!d~w7}!d*_q-B47cK>3RL@%AZpFn;UTL?aZ1|45xb6%Tqkz> zwb^fgNeT1=>vOSLMc;t_I9T5{^$h(+%)dll&xgTKE=@87YJHe@wDN@^%k79=lg#)} z)(4UOPLj++LUZ8n$U57OT9WX3=85elRmq6XSOnt}g|IjJtyuF_#L0a#-h|<6f=3c8 zj-+~1g{G``vxL@@@oMI0P5&f2O^TDmw$-YY1)WJG|0}%|K3iKg8!$ddGS5t}R^Znv z;oy)3kfYLXIUIz1@>_GQkFrW=JdZ#Zt#Z8?tCfczki1$y63&T_SM*fKt1*uziC50D zYfRz~80MIhVJv=c*_~l`{g7v{?31$VJgh&!xC;RakjPi`DCT$2@e|+z`YmBY%in|jN?!~z~U9=&2X-^it!K()iSX52>C?xwlUsGkE1q?>5=FR zXa2F0!R9skub^5A<8Ey45~naak@Wuh?od69I$MDqbv~U#F${%+2tr^VDiF=#HHEbZ zlotJV)chp;n%#Y1*ZFUB)i#;GSNK+&N>63u{3NrV4XAC^!}}G2F_vLR%JdtHm2uF8 zK*v!kL4f~l^9VTXEnzuqhN6Fx-KjmsPYU|a*#3m?!j{lS#-hl7A-3<71zrNnvZLar zkdd9H!oe@}r#K!5QzZxS(wR{Kyusd7S;<{j1jOdz7pGW=d%)L zT7Vt2!ch7>Hx=!1!HT?qJ&rBYL?l*L` zWhB0k1V+AdF?WaCh7i!(P)?h>>L4n8J{kE~+l(d&TSZ}=I(`g`afW_^O}@l%D}|HIl? zZH$%#yTOc~rQj=vA6RIN^Zpo>F$F1=uo7Qo{3QXe)74H|=HqevEeWZ0Cg|^UwI?`# zkz~%`8<|wwD|o!l7V;7yE7~EfeuRhCSRcgWF6Oz3w1~C8$s`T(AMsRyac1)_ulx-H zm!B;yv*@|-r*;Cpu9kH=;(U+n8a^u0eFem?0~uvPu`G__aX1%6wbZaSfxDAb zO`Pt>_8IHjkvBk|8=K9@hA=Kd!ta<}XGtEDqL_*m`!G2kyfz8;&2SB4!hBbUb2f z)qZLmqaRY1r6;ia1tbuU(|iOji7c^w&v+wiTL}__@EK$NvX-l+Id6k)38$QaU(oay z31+tHoV884->Oz25_}(>80>w=Y~dCHwd)uZBD=!$rO0}r+?}LC*x3mTmRn+Z8SiAA z9v*-P@KcjSHsE6hY>oXZ_`dD*Pwac)dk4Dtkkv;olm6tz?*vF}r`X~DwobN#Iyh6? zME?sXW9fb9&#*bi?w63r+wBB?htkubli6&SqVqleE|KhJ)j!e1Bq9II|V^DosN$aed1{14gH z#DUs6f(~$o|M~xDf5jLVRGO-uUrTfq~Z z`({w0;q=8Q9Ygsa3_Icc1Isvs096=QCBZ&8{KNvwK{fg*=HpnKfRCKmR>V&e*^tCH zQnHOjFju?Fyd(ZrIdh+D7Rr5@gke090P|6}Ysz_zf10kbmq7U|h!%eelSXe{7AZWT_r`f&N|qT`v?PYJo5dth3>L)M zK>9D(Cr3|h2fEkjiERtxKW*1--iYmEJ^v@QGlDKeDG3T{D{%g;jTbNvLHQfbxC7(8B)JxSwY@48 z%}bEmI8H*~+t?03zbdk~+pox$;`2k>z-jcx>&N>C8K_lfq4irvhf(gzdK^J=5U?Ks zGLu9*`eEe9SwD&_l_fEl0BgFEiw1BKs_RmE^Pjz^K)0M_bYd=&lWbo{x7qML?354}b7X-WeAiQXB4wS`~c>oQ}t zm+0olPn*Q&{})Hjzt&B8IF2>!s)tqL3Tr2jm&Z64<4{GUWi@9Shoirj`IiJ9g7f3( zRENd!(T(-LS^tp)KC$YAn(xCp|8p3AkHG}8R7*u>V=#!aiu}enu@z=K3B4k4G^~Ve zoUJb>U`Ax6%`VZV2EkUnCCgw*d`LnEeYT6Cc7}U#mKEjd7*!*Y=9KXX^V%f1);um| z-WVsPSigjm$Mj0*?ZDR*kjT%BZ&|SWB&T+f{u6q`(HYO0?{EIM)RcN5Y=z-z z0{n|C7^jy|K1Cq4=_HX79koWb>wM_kB7uD9Okoo_>EQ&+h7YxE#)9}O#(Wpd$odp) z_UQTl8N+yjen_B4jDs!HKez|0ao!AvTj*KnYW?H@-AiyZ^HS(cBuHswYCVuAw&NCD z^JD}pM$+wxF^rA$!GE;Aw^D$G4QAXAgNrOAwx_JA{eZzs9QR=UlgS<+>p(T;qF;)n zyW%_y-3R!X4!5Jf1|7Am=JOy-LjwP4b4J|={OO+oIQRm?R~RI~PjQyS0!31teC9}o zEphygRcVYReg^rs$X}cD39O&N?upsu!e2O*QrpT}IuajC9JRnZz!~xdBu0}ha4}dG z!+$JT7RDpl!6>M9+Z;Bx-K8X0WsYeNiJZbu4D+TWn49@8_u4bd0~^Z zD6b={QWzg)d=SHdw!<38bD{SIJ3MZ?Y-5Ra$IBZ6k3^mc{g>!|Y<4~I^$Us2Cdp~& zFTrPGJHuSRbKUh4Nd`(%9EP#Goj7WXVmoACqf`UqvpD^bzK*pj$nv3EpLrK6@f>6& zkj?#M$h0Z~OJ+)FN z>K|qv%Gv~Uny`M3c_WgJvmny*66ibn9>#y6bM~#ZmBjOv$M_!%cT=*YWVjWF8CjS> ze?gBigR&%(UIEZ=K#&6HzoW8qEZ3~8`tvUL2o^zKs_3+AZ*5TX>DXk#zA}DjKG(pv zGLmFE#$8!lg<%dmN6FQ4VR(^XYfN4mXKJ6avnI&PFuu$t{Pf$5(^_JiNqh@kt-)LI zvg>0&4vf3v@M9L=Bk+ef{fOX~8E3=6NDMY$9Q;2!IYy8$X_UP>!CJg?9<4mI332B=IATPBZ?5o`AeA z33s8tF~_6PU&PvAbcy#Iou8&-uGEJQF) zkF%OM*3(fPgZ=EhFAm)t#|!gz4V_W}S6n9KbI=`ttc{)dRL1Y)YbXh%emetf{$=gc zfQ5iQ~Zps6pTl&?(Q_7;Jw>c7<_m z*6*OJ)&%({_!x~|IBSV*nvXzta8TLG9{590tllugiL7tNp;||r#G*SF9>-a0*1W7` zh66~b0ORwpE)}S5Hm?ZQ0^fV_w}^xi+ePj{ER(?Roca?7#W2c2cAYG{7X(r(kE3!X zyNdHD=FQQIC4n5+?M0^^x*oe1sr7ghFHU6>3~cQcqdWgZ>tD-o?+y zfi)+-s|O2x5JsS+ww=X=j9cJ1ip-lLE5`aQ95p~!?K0z(tbKqyC%SD&WHmCipQ%VK zY&Rm`4qLM8Ij|`^R|~^`XU1dn)k*^^bvrxrj>cISucjxqI_Rq9A&3{90<7J%@=88{ zWD?s9)+!}D%Fdr6e2lC#vDGFaK8KqgB9BVi6@f-ft+F`c| z`A%fxh?jx!Kz(QKEP)$hcohc+Sa?PM-&ULT^Oo3j#%e#nFJVi3Y`5eje~$gH%>UGc z_7&q(#ApqpsajV{s2lMDH+&DfuFrygoY#f^J`UOutPjQm$+{tDdmWvX$lfPdEM=~b zv04_!_i$W@d0~_7C)gzP3en49UmSTB#))kZ>mNFEpKB(@`%q{{(5+~E%&v}DhDCAS z7FjWLY9Xsg0!2vlf>mHN>oZtWJA-{S#vj1M_5i=hk=3LRu?KSzKK^E099a^5gzrK& zYFEiLvE?9$S|kDPq4-NjI<5_WFSVKl}c6X1LO0pxtXPu?=kkFUxs zyV-OD%+!()yC7!8$^CE4QZWA%oj+J_ivD`|fF4D@`H?4BsB-x2$zDsKqgI-99-&i> zc_zk_7|#y;gOn^D$3Z76l9aE$mDEZbzl+ZQws);)x8ZQ~?vrGG##cz>Ti6_f-q<}P z=}PA3Q)J&;K~o16BYTW8a|$UjIK|={j4Rox1R+ao6a1sS?zTbcOIGx@>pdveTR*OU zSWHw{od0xQ_u>@(nBwm4!3hsayVE6PEaQIaY1<+;;Y}I$j|or9y4xpoEa(2)A6DMI zDcGN{iaS18its)mapBQX-dO+iTJFPcf0sJ$I$08?c6QJ5r|#lD?Me8fySt9RP7n99 zWEn!khJ^PCbJdNGiVEu^D}U#{?iZdUVWHmM!~M+$xM!yF--&l$NaktWDmG!uX!pb9 zgJQz^h7Svi_0JyT{ymL<>U8(|wEmh4-4%lU&!SY)hsNJvC{SXJ-H z$VAELJl^Ksgarw_X4Cn*#X z8yns)3UR>B7QKbT`+B3Ir)wEISK|HzB(Hf&=KX%JK z$m1`5&s{0VANRmrHg#}q4&1-wPj}HI?*9I7Ub#~RdDx);Q7ZMZZjf{_r$MJA)*swkkRAES1N!Nc* zAYn@}ccxrJ`-eqYg%XSYzdG;!e>w{1&l4K7ELj%q)7vLLCMGN@j!20o;om)woO8W( z+=&MqIFi26@ll~A6E;2eyyx#fDCk3XvXP@}yGD-g;QwuK&^?dyP?d^}N_?vPKg0*! zPvJl23wj>xY2Ijr|Imb>r0ygH_l6}LnHY2<;j2kOZTy8N2L-wP)jkX=oWwtJM$oBb z!I2@}{{G7If^NC}#S?;xW=m+WIcS0Z)aD>}aKg>)L3RA4cLa4zk-krO|Bw-`Iw6Ob zMubGg9p2(!w?C*}l7xsuL8<*W4h4Og#=rJ#(8}aV8@DPH5f^sW)pK4yO@A*EcNc^ES+?0WFArT=lhqt&oM@M*jAKDplXm3^jLdBDQJRwOggl&60vw2SI@AG(5`J<0} zqOI&w)N6I~r+wgA8JzE}=a_r+p9@td aJ|dowDq=}L5A%2Klp{xb^&opYxc(nVywP9T4 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 z G). Simge {module}, varsa, yeni bir modül " "oluştururken otomatik olarak konum değeri ile değiştirilecektir." -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "Konsol bağlantı noktası şablonu" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "Konsol sunucusu bağlantı noktası şablonu" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "Ön bağlantı noktası şablonu" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "Arayüz şablonu" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "Elektrik prizi şablonu" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "Güç bağlantı noktası şablonu" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "Arka bağlantı noktası şablonu" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "Konsol Bağlantı Noktası" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "Konsol Sunucusu Bağlantı Noktası" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "Ön Bağlantı Noktası" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "Arka Bağlantı Noktası" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "Güç Bağlantı Noktası" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "Güç Çıkışı" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "Bileşen Ataması" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "Bir InventoryItem yalnızca tek bir bileşene atanabilir." -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "LAG arayüzü" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "Gruba göre atama için mevcut VLAN'ları filtreleyin." -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "Çocuk Cihazı" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -5952,43 +5792,41 @@ msgstr "" "Alt aygıtlar önce oluşturulmalı ve ana aygıtın sahasına ve rafına " "atanmalıdır." -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "Konsol bağlantı noktası" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "Konsol sunucusu bağlantı noktası" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "Ön bağlantı noktası" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "Güç çıkışı" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "Arka bağlantı noktası" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "Envanter Öğesi" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "Envanter Öğesi Rolü" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "VM Arayüzü" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -6002,7 +5840,7 @@ msgstr "VM Arayüzü" msgid "Virtual Machine" msgstr "Sanal Makine" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "MAC adresi yalnızca tek bir nesneye atanabilir." @@ -6026,9 +5864,9 @@ msgstr "" "bekleniyor." #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "Üyeler" @@ -6219,130 +6057,130 @@ msgstr "" "Bir bileşen şablonu, bir aygıt türü veya bir modül türüyle " "ilişkilendirilmelidir." -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "konsol bağlantı noktası şablonu" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "konsol bağlantı noktası şablonları" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "konsol sunucusu bağlantı noktası şablonu" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "konsol sunucusu bağlantı noktası şablonları" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "maksimum çekiliş" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "tahsis edilen çekiliş" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "güç bağlantı noktası şablonu" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "güç bağlantı noktası şablonları" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "Tahsis edilen çekiliş maksimum çekilişi aşamaz ({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "besleme bacağı" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "Faz (üç fazlı beslemeler için)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "elektrik prizi şablonu" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "elektrik prizi şablonları" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Ana güç bağlantı noktası ({power_port}) aynı cihaz türüne ait olmalıdır" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Ana güç bağlantı noktası ({power_port}) aynı modül türüne ait olmalıdır" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "sadece yönetim" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "köprü arayüzü" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "kablosuz rolü" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "arayüz şablonu" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "arayüz şablonları" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "Köprü arayüzü ({bridge}) aynı cihaz türüne ait olmalıdır" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Köprü arayüzü ({bridge}) aynı modül türüne ait olmalıdır" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "Arka bağlantı noktası ({rear_port}) aynı cihaz türüne ait olmalıdır" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "pozisyonlar" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "ön bağlantı noktası şablonu" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "ön bağlantı noktası şablonları" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " @@ -6351,15 +6189,15 @@ msgstr "" "Konum sayısı, eşlenen arka bağlantı noktası şablonlarının sayısından az " "olamaz ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "arka bağlantı noktası şablonu" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "arka bağlantı noktası şablonları" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " @@ -6368,33 +6206,33 @@ msgstr "" "Konum sayısı, eşlenen ön bağlantı noktası şablonlarının sayısından az olamaz" " ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "pozisyon" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "Yüklü bileşenleri yeniden adlandırırken başvurulacak tanımlayıcı" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "modül bölmesi şablonu" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "modül bölmesi şablonları" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "cihaz yuvası şablonu" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "cihaz yuvası şablonları" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -6403,21 +6241,21 @@ msgstr "" "Aygıt türünün alt cihaz rolü ({device_type}) cihaz bölmelerine izin vermek " "için “ebeveyn” olarak ayarlanmalıdır." -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "parça kimliği" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "Üretici tarafından atanan parça tanımlayıcısı" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "envanter öğesi şablonu" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "envanter öğe şablonları" @@ -6546,10 +6384,10 @@ msgid "tagged VLANs" msgstr "etiketli VLAN'lar" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "Q-in-Q SVLAN" @@ -7678,11 +7516,11 @@ msgstr "Bileşenler Ekle" msgid "Disconnect Selected" msgstr "Seçili Bağlantıyı Kes" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "Fesih A" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "Sonlandırma B" @@ -7727,6 +7565,8 @@ msgstr "Renk Adı" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "Ulaşılabilir" @@ -7763,7 +7603,7 @@ msgstr "U Yüksekliği" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "IP Adresi" @@ -7812,16 +7652,14 @@ msgid "Power outlets" msgstr "Elektrik prizleri" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7854,18 +7692,17 @@ msgid "Device Site" msgstr "Cihaz Sitesi" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Modül Yuvası" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "Envanter Öğeleri" @@ -7889,13 +7726,13 @@ msgstr "Maksimum çekim (W)" msgid "Allocated draw (W)" msgstr "Tahsis edilen çekiliş (W)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "IP Adresleri" @@ -7903,18 +7740,18 @@ msgstr "IP Adresleri" msgid "Primary MAC" msgstr "Birincil MAC" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "MAC Adresleri" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP Grupları" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -7923,7 +7760,6 @@ msgid "Tunnel" msgstr "Tünel" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Yalnızca Yönetim" @@ -7931,7 +7767,7 @@ msgstr "Yalnızca Yönetim" msgid "VDCs" msgstr "VDC'ler" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "Sanal Devre" @@ -7940,7 +7776,7 @@ msgstr "Sanal Devre" msgid "Mappings" msgstr "Eşlemeler" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "Yüklü Cihaz" @@ -7964,7 +7800,7 @@ msgstr "Yüklü Seri" msgid "Installed Asset Tag" msgstr "Yüklü Varlık Etiketi" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "Yüklü Modül" @@ -7981,7 +7817,6 @@ msgid "Module Status" msgstr "Modül Durumu" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "Bileşen" @@ -7999,7 +7834,7 @@ msgstr "Kabin Çeşitleri" msgid "Device Types" msgstr "Cihaz Türleri" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "Modül Çeşitleri" @@ -8022,8 +7857,8 @@ msgstr "Tam Derinlik" msgid "Device Count" msgstr "Cihaz Sayısı" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -8033,8 +7868,8 @@ msgstr "Cihaz Sayısı" msgid "Console Ports" msgstr "Konsol Bağlantı Noktaları" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -8044,8 +7879,8 @@ msgstr "Konsol Bağlantı Noktaları" msgid "Console Server Ports" msgstr "Konsol Sunucusu Bağlantı Noktaları" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -8055,8 +7890,8 @@ msgstr "Konsol Sunucusu Bağlantı Noktaları" msgid "Power Ports" msgstr "Güç Bağlantı Noktaları" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -8066,8 +7901,8 @@ msgstr "Güç Bağlantı Noktaları" msgid "Power Outlets" msgstr "Elektrik Prizleri" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -8076,8 +7911,8 @@ msgstr "Elektrik Prizleri" msgid "Front Ports" msgstr "Ön Bağlantı Noktaları" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -8087,16 +7922,16 @@ msgstr "Ön Bağlantı Noktaları" msgid "Rear Ports" msgstr "Arka Bağlantı Noktaları" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Cihaz Yuvaları" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8111,11 +7946,10 @@ msgid "Module Count" msgstr "Modül Sayısı" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Güç Beslemeleri" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "Maksimum Kullanım" @@ -8130,7 +7964,7 @@ msgid "Racks" msgstr "Raflar" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Yükseklik" @@ -8178,85 +8012,123 @@ msgstr "VLAN Grupları" msgid "Test case must set peer_termination_type" msgstr "Test senaryosu peer_termination_type ayarlamalıdır" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} milimetre" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "Seri numarası" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "Maksimum ağırlık" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "Yönetim" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "Bant dışı IP" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "Ebeveyn/çocuk" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "Model adı" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "Ana öğe" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "Parça Kimliği" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "Bağlı cihaz" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "Kullanım (tahsis edilmiş)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "Elektriksel Özellikler" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{} V" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{} A" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "Arayüz için birincil" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "Sanal Şasi Üyeleri" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "Güç Kullanımı" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "VLAN çevirisi" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "Bağlantısı kesildi {count} {type}" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "Alt Bölgeler" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "Çocuk Grupları" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "Kabinde Olmayan Cihazlar" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "Alt Konumlar" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "Rezervasyon" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "Alt Aygıt Rolleri" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "Çocuk Platformları" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "Uygulama Hizmetleri" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8264,41 +8136,69 @@ msgstr "Uygulama Hizmetleri" msgid "Config Context" msgstr "Yapılandırma Bağlamı" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "Oluştur Yapılandırması" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "Sanal Makineler" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "Sanal Cihaz Bağlamları" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "VLAN'lar" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "LAG Üyeleri" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "VLAN Çeviri" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "Köprülü Arayüzler" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "Çocuk Arayüzleri" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Yüklü cihaz {device} körfezde {device_bay}." -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Kaldırılan cihaz {device} körfezden {device_bay}." -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "Çocuklar" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "Eklenen üye {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "Ana aygıt kaldırılamıyor {device} sanal kasadan." -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Kaldırıldı {device} sanal kasadan {chassis}" @@ -8394,10 +8294,9 @@ msgstr "Evet" msgid "No" msgstr "Hayır" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "Bağlantı" @@ -8853,15 +8752,6 @@ msgstr "Bir veya daha fazla atanmış nesne türü" msgid "Field data type (e.g. text, integer, etc.)" msgstr "Alan veri türü (örn. Metin, tamsayı vb.)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "Nesne türü" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "Nesne türü (nesne veya çoklu nesne alanları için)" @@ -8966,7 +8856,7 @@ msgstr "Girişin sınıflandırılması" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -8993,15 +8883,14 @@ msgstr "" #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "Gruplar" @@ -9027,13 +8916,6 @@ msgstr "Alan tipi" msgid "Choices" msgstr "Seçenekler" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "Veriler" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10328,17 +10210,6 @@ msgstr "Dosya uzantısı" msgid "As Attachment" msgstr "Ek Olarak" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "Veri Dosyası" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10354,9 +10225,8 @@ msgstr "Görüntü" msgid "Filename" msgstr "Dosya adı" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "Boyut" @@ -10411,6 +10281,7 @@ msgstr "" "kaldırın." #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10552,7 +10423,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "Düz metin" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "Hizmet" @@ -10615,7 +10486,6 @@ msgstr "L2VPN'i dışa aktarma (tanımlayıcı)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "Önek" @@ -10665,7 +10535,6 @@ msgstr "VLAN numarası (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "Adres" @@ -10722,7 +10591,7 @@ msgstr "FHRP Grubu (ID)" msgid "IP address (ID)" msgstr "IP adresi (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "IP adresi" @@ -10789,8 +10658,8 @@ msgstr "Özeldir" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "ZIVIR" @@ -10801,15 +10670,13 @@ msgstr "Eklenen tarih" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN Grubu" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10824,7 +10691,7 @@ msgid "Prefix length" msgstr "Önek uzunluğu" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "Havuz mu" @@ -10843,23 +10710,21 @@ msgstr "VLAN Ataması" msgid "Treat as populated" msgstr "Dolu gibi davranın" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "DNS adı" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protokol" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "Grup Kimliği" @@ -10880,9 +10745,8 @@ msgid "Authentication key" msgstr "Kimlik doğrulama anahtarı" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -10911,23 +10775,22 @@ msgstr "Site ve Grup" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "İlke" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "Limanlar" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "Rota hedeflerini içe aktarma" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "Rota hedeflerini dışa aktarma" @@ -10957,7 +10820,6 @@ msgstr "Kapsam Kimliği" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "FHRP Grubu" @@ -11066,7 +10928,7 @@ msgid "Exported by VRF" msgstr "VRF tarafından ihraç edildi" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "Özel" @@ -11075,7 +10937,7 @@ msgstr "Özel" msgid "Address family" msgstr "Adres ailesi" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "Menzil" @@ -11103,18 +10965,10 @@ msgstr "Cihaz/VM" msgid "Parent Prefix" msgstr "Ebeveyn Öneki" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "DNS Adı" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLAN'lar" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "VLAN Kimliği içerir" @@ -11132,26 +10986,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Q-in-Q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "VLAN KİMLİĞİ" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "Rota Hedefi" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "Agrega" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "ASN Aralığı" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "IP Aralığı" @@ -11201,8 +11053,7 @@ msgstr "Sanal IP Adresi" msgid "Assignment already exists" msgstr "Atama zaten var" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "VLAN kimlikleri" @@ -11221,7 +11072,6 @@ msgstr "" "gruplarını kullanmaya teşvik edilir." #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "VLAN Çeviri Kuralı" @@ -11234,7 +11084,6 @@ msgstr "" "Bir aralık bir tire kullanılarak belirtilebilir." #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "Uygulama Hizmeti Şablonu" @@ -11409,7 +11258,7 @@ msgstr "bir havuz" msgid "All IP addresses within this prefix are considered usable" msgstr "Bu önek içindeki tüm IP adresleri kullanılabilir kabul edilir" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "kullanılan işaret" @@ -11421,12 +11270,12 @@ msgstr "önekleri" msgid "Cannot create prefix with /0 mask." msgstr "/0 maskesi ile önek oluşturulamıyor." -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "küresel tablo" @@ -11435,141 +11284,141 @@ msgstr "küresel tablo" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Yinelenen önek şurada bulundu {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "başlangıç adresi" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "IPv4 veya IPv6 adresi (maske ile)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "bitiş adresi" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "Bu aralığın çalışma durumu" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "Bu aralığın birincil işlevi" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "işareti doldurulmuş" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "Bu aralıkta IP adreslerinin oluşturulmasını önleyin" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "Alanı tam olarak kullanıldığı şekilde rapor edin" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "IP aralığı" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "IP aralıkları" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "Başlangıç ve bitiş IP adresi sürümleri eşleşmelidir" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "Başlangıç ve bitiş IP adresi maskeleri eşleşmelidir" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" "Bitiş adresi başlangıç adresinden daha büyük olmalıdır ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Tanımlanan adresler aralık ile örtüşüyor {overlapping_range} VRF'de {vrf}" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "Tanımlanan aralık maksimum desteklenen boyutu aşıyor ({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "adres" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "Bu IP'nin operasyonel durumu" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "Bu IP'nin işlevsel rolü" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (iç)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "Bu adresin “dış” IP olduğu IP" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Ana bilgisayar adı veya FQDN (büyük/küçük harfe duyarlı değil)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "IP adresleri" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "/0 maskesi ile IP adresi oluşturulamıyor." -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip} bir arayüze atanamayacak bir ağ kimliğidir." -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "{ip} bir arayüze atanamayacak bir yayın adresidir." -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Yinelenen IP adresi şurada bulundu {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "IP adresi oluşturulamıyor {ip} iç menzil {range}." -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" msgstr "" "Üst nesne için birincil IP olarak belirlenirken IP adresi yeniden atanamıyor" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" msgstr "" "Üst nesne için OOB IP olarak belirlenirken IP adresi yeniden atanamıyor" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Yalnızca IPv6 adreslerine SLAAC durumu atanabilir" @@ -11760,17 +11609,17 @@ msgid "Added" msgstr "Eklendi" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "Önekler" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "Kullanımı" @@ -11797,7 +11646,7 @@ msgid "Pool" msgstr "Havuz" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "İşaretli Kullanıldı" @@ -11805,7 +11654,7 @@ msgstr "İşaretli Kullanıldı" msgid "Start address" msgstr "Başlangıç adresi" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "İşaretli Nüfuslu" @@ -11835,17 +11684,14 @@ msgid "VID" msgstr "VİDEO" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "Kuralları" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "Yerel VID" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "Uzaktan VID" @@ -11865,16 +11711,71 @@ msgstr "Hedefleri İçe Aktar" msgid "Export Targets" msgstr "İhracat Hedefleri" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "Grup Oluştur" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Grup Atama" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "Rota Ayırt Edici" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "Benzersiz IP Alanı" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "AS Numarası" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Aile" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "Ekleme Tarihi" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "Başlangıç Adresi" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "Bitiş Adresi" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (dış)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "Birincil IP" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "OOB IP" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "Kimlik Doğrulama Türü" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "Kimlik Doğrulama Anahtarı" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Q-in-Q Rolü" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "Müşteri VLAN'ları" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "VLAN ekleme" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -11912,26 +11813,79 @@ msgstr "" "DNS adlarında yalnızca alfanümerik karakterlere, yıldızlara, tirelere, " "noktalara ve alt çizgilere izin verilir" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "Cihaz Arayüzleri" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "VM Arayüzleri" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "VRF'leri içe aktarma" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "VRF'leri Dışa Aktarma" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "L2VPN'leri içe aktarma" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "L2VPN'leri Dışa Aktarma" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "Yinelenen önekler" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "Ebeveyn önekleri" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "Çocuk Önekleri" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "Çocuk Aralıkları" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "Yinelenen IP'ler" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "Uygulama hizmetleri" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "İlgili IP'ler" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "VLAN çeviri kuralları" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "Kural Ekle" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "Sanal IP adresleri" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "IP Adresi Ekle" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "Önek Ekle" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "Bu alan boş olmayabilir." @@ -12439,7 +12393,6 @@ msgid "Contact Groups" msgstr "İletişim Grupları" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "İletişim Rolleri" @@ -12459,11 +12412,6 @@ msgstr "Yükselmeler" msgid "Modules" msgstr "Modüller" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "Sanal Cihaz Bağlamları" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "Modül Tipi Profilleri" @@ -12477,12 +12425,11 @@ msgid "Device Components" msgstr "Cihaz Bileşenleri" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Envanter Öğesi Rolleri" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "Bağlantılar" @@ -12523,7 +12470,6 @@ msgid "VLAN Translation Policies" msgstr "VLAN Çeviri Politikaları" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "VLAN Çeviri Kuralları" @@ -12602,7 +12548,6 @@ msgid "Circuit Terminations" msgstr "Devre Sonlandırmaları" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "Sanal Devreler" @@ -12618,18 +12563,11 @@ msgstr "Sanal Devre Sonlandırmaları" msgid "Circuit Groups" msgstr "Devre Grupları" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "Grup Ödevleri" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "Sağlayıcılar" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Sağlayıcı Hesapları" @@ -12725,7 +12663,7 @@ msgid "Journal Entries" msgstr "Dergi Girişleri" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Değişim Günlüğü" @@ -12778,6 +12716,7 @@ msgstr "Arka Plan Görevleri" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12796,8 +12735,9 @@ msgstr "Klon" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -12809,8 +12749,9 @@ msgstr "Düzenle" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -13084,7 +13025,7 @@ msgstr "Sahte Eklenti" msgid "Copy" msgstr "Kopyalama" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -13092,11 +13033,18 @@ msgstr "" "Geçersiz kod çözme seçeneği: {decoding}! Şunlardan biri olmalı " "{image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" +"Geçersiz max_items değeri: {max_items}! Pozitif tamsayı veya Yok olmalıdır." + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "GPS koordinatları" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "İlgili Nesneler" @@ -13371,8 +13319,7 @@ msgid "Account Details" msgstr "Hesap Ayrıntıları" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "E-posta" @@ -13394,16 +13341,15 @@ msgid "Assigned Groups" msgstr "Atanan Gruplar" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13478,55 +13424,21 @@ msgstr "Kaynak Kodu" msgid "Community" msgstr "Topluluk" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "Yükleme Tarihi" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "Fesih Tarihi" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "Takas Devresi Sonlandırmaları" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "%(circuit)s devre için bu sonlandırmaların yerini değiştirin ?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "Bir taraf" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Z tarafı" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "Devre Atama" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "Devre Grubu Ataması" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "Devre Ekle" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "Devre Tipi" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "Sonlandırma noktası" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "Bağlı olarak işaretlendi" @@ -13536,13 +13448,14 @@ msgstr "doğru" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "İzleme" @@ -13556,37 +13469,30 @@ msgstr "Kabloyu çıkarın" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "Bağlantıyı kes" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "Bağlan" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "Aşağı doğru" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "Yukarı akış" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "Çapraz Bağlantı" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "Yama Paneli/Bağlantı Noktası" @@ -13594,39 +13500,10 @@ msgstr "Yama Paneli/Bağlantı Noktası" msgid "Add circuit" msgstr "Devre ekle" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "Sağlayıcı Hesabı" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "Sanal Devre Ekle" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "Sonlandırma Ekle" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "Sanal Devre Sonlandırma" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "Sanal Devre Ekle" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "Sanal Devre Türü" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "Yapılandırma Verileri" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "Yorum" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13649,31 +13526,11 @@ msgstr "Yeni Değer" msgid "Changed" msgstr "Değişti" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "bayt" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "SHA256 Karması" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "İçerik" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "Son senkronize edildi" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "Arka uç" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "Parametre tanımlanmadı" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "Kabin yükseklikleri" @@ -13732,71 +13589,11 @@ msgstr "Bu nesneyle ilişkili veri dosyası silindi" msgid "Data Synced" msgstr "Veriler Senkronize Edildi" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "İş" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "Tarafından Oluşturuldu" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "Çizelgeleme" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "her bir %(interval)s dakikalar" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "Değişim" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "Farkı" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "Önceki" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "Sonraki" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "Nesne Oluşturuldu" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "Nesne Silindi" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "Değişiklik Yok" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "Ön Değişim Verileri" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Uyarı: Atomik olmayan değişimin önceki değişiklik kaydıyla karşılaştırılması" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "Değişim Sonrası Veriler" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Tümünü Gör %(count)s Değişiklikler" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -13812,6 +13609,60 @@ msgstr "günler" msgid "Indefinite" msgstr "belirsiz" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "Yorum" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "Yapılandırma Verileri" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "Parametre tanımlanmadı" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "Farkı" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "Önceki" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "Sonraki" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "Nesne Oluşturuldu" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "Nesne Silindi" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "Değişiklik Yok" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "Değişim Sonrası Veriler" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "Ön Değişim Verileri" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Uyarı: Atomik olmayan değişimin önceki değişiklik kaydıyla karşılaştırılması" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Tümünü Gör %(count)s Değişiklikler" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "Yüklü değil" @@ -14102,22 +13953,13 @@ msgstr "Segmentler" msgid "Incomplete" msgstr "Tamamlanmamış" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "Bağlı Değil" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT için" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "NAT" @@ -14125,7 +13967,7 @@ msgstr "NAT" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "Panoya kopyala" @@ -14175,10 +14017,6 @@ msgstr "Kaldır" msgid "Local Config Context Data" msgstr "Yerel Yapılandırma Bağlam Verileri" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "Cihaz Yuvası" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -14206,34 +14044,6 @@ msgstr "Körfez" msgid "Add Device" msgstr "Cihaz Ekle" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "Pozisyonlar" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "Bağlı olarak işaretlendi" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "Bağlantı Durumu" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "Bağlantı Noktası Eşlemeleri" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "Eşleme tanımlanmadı" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "A Tarafı" @@ -14259,6 +14069,8 @@ msgid "Path Status" msgstr "Yol Durumu" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "Ulaşılamıyor" @@ -14267,8 +14079,6 @@ msgid "Path Endpoints" msgstr "Yol Bitiş Noktaları" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "Bağlı değil" @@ -14314,94 +14124,10 @@ msgstr "Kabin yüksekliği" msgid "Loading..." msgstr "Yükleniyor..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "Çocuk Arayüzü Ekle" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "Hız/Dubleks" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "PoE Modu" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "PoE Tipi" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "Köprülü Arayüzler" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "VLAN Çeviri" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "Kablosuz Bağlantı" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "Kanal" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "Kanal Frekansı" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "MHz" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "Kanal Genişliği" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "IP Adresi Ekle" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "MAC Adresi Ekle" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "Ana Öğe" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "Parça Kimliği" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "Varlık Etiketi" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "Arayüz için birincil" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "Cihaz Türü Ekle" @@ -14410,6 +14136,64 @@ msgstr "Cihaz Türü Ekle" msgid "Add Module Type" msgstr "Modül Türü Ekle" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "Yol durumu" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "Yol uç noktaları" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "Bağlı Değil" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "Bağlantı Noktası Eşlemeleri" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "Eşleme tanımlanmadı" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "Kablosuz Bağlantı" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "Kanal" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "Kanal frekansı" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "MHz" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "Kanal genişliği" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "Profil atanmadı" @@ -14429,7 +14213,7 @@ msgstr "Tahsis edilmiş" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "İL" @@ -14453,44 +14237,6 @@ msgstr "Yalnızca resimler" msgid "Labels only" msgstr "Yalnızca etiketler" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "Bağlı Cihaz" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "Kullanım (Tahsis Edildi" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "Elektriksel Özellikler" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "A" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "Besleme ayağı" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "Güç Beslemeleri Ekle" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "Maksimum Çekiliş" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "Tahsis Edilen Çekiliş" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "Rezervasyon ekle" @@ -14530,10 +14276,6 @@ msgstr "Site Ekle" msgid "Attachment" msgstr "Ataşman" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "Üye Ekle" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14585,10 +14327,6 @@ msgstr "" "Kaldırmak istediğinizden emin misiniz? %(device)s sanal " "kasadan %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "Tanımlayıcı" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -14925,6 +14663,10 @@ msgstr "" msgid "Journal Entry" msgstr "Dergi Girişi" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "Tarafından Oluşturuldu" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "Bildirim Grubu" @@ -15416,37 +15158,15 @@ msgstr "Oturumu Kapat" msgid "Log In" msgstr "Oturum aç" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Aile" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "Ekleme Tarihi" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "Önek Ekle" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "AS Numarası" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "Kimlik Doğrulama Türü" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "Kimlik Doğrulama Anahtarı" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "Sanal IP Adresleri" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "Küresel" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15481,15 +15201,6 @@ msgstr "Mevcut Göster" msgid "Show All" msgstr "Tümünü Göster" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "Küresel" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (dış)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "IP Adresi Atama" @@ -15506,51 +15217,43 @@ msgstr "Arama Sonuçları" msgid "Bulk Add IP Addresses" msgstr "Toplu IP Adresleri Ekleme" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "Başlangıç Adresi" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "Bitiş Adresi" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "Adresleme Ayrıntıları" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "Tamamen kullanılmış olarak işaretlenmiş" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "Çocuk IP'leri" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "Kullanılabilir IP'ler" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "İlk kullanılabilir IP" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "Önek Ayrıntıları" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "Ağ Adresi" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "Ağ Maskesi" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "Joker Karakter Maskesi" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "Yayın Adresi" @@ -15562,58 +15265,14 @@ msgstr "IP Aralığı Ekle" msgid "Hide Depth Indicators" msgstr "Derinlik Göstergelerini Gizle" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "Toplama Ekle" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "VRF'leri içe aktarma" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "VRF'leri Dışa Aktarma" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "L2VPN'leri içe aktarma" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "L2VPN'leri Dışa Aktarma" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Q-in-Q Rolü" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "Önek Ekle" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "Müşteri VLAN'ları" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "VLAN ekleme" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "VLAN ekle" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "Kural Ekle" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "Rota Ayırt Edici" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "Benzersiz IP Alanı" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15681,61 +15340,14 @@ msgstr "" "Tıklayın burada NetBox'ı tekrar yüklemeyi " "denemek için." -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "İletişim" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "Başlık" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "Telefon" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "İletişim Grubu" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "Kişi Grubu Ekle" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "İletişim Rolü" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "Kişi ekle" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "Kiracı Ekle" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "Kiracı Grubu" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "Kiracı Grubu Ekle" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -15846,16 +15458,28 @@ msgstr "IPSec İlkesi" msgid "PFS Group" msgstr "PFS Grubu" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "Sonlandırma Ekle" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "Tünel Ekle" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "Kanal Frekansı" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "MHz" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "Kanal Genişliği" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "Kablosuz LAN Ekle" @@ -15890,6 +15514,20 @@ msgstr "Kişi rolü (ID)" msgid "Contact role (slug)" msgstr "İletişim rolü (kısa ad)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "İletişim" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "İletişim Rolü" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "İletişim grubu" @@ -15922,6 +15560,15 @@ msgstr "Grup ekle" msgid "Remove groups" msgstr "Grupları kaldır" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "Başlık" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "Telefon" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -15934,6 +15581,17 @@ msgstr "" msgid "Assigned contact" msgstr "Atanan kişi" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "Kiracı Grubu" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "İletişim Grubu" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "iletişim grubu" @@ -16035,6 +15693,14 @@ msgstr "İletişim Bağlantısı" msgid "Contact Description" msgstr "İletişim Açıklaması" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "Kiracı Grubu Ekle" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "Kişi Grubu Ekle" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -17310,10 +16976,6 @@ msgstr "Eklendi {count} kümelenecek cihazlar {cluster}" msgid "Assigned VLANs" msgstr "Atanmış VLAN'lar" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "Çocuk Arayüzleri" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPsec - Taşıma" diff --git a/netbox/translations/uk/LC_MESSAGES/django.mo b/netbox/translations/uk/LC_MESSAGES/django.mo index df6fa6750b953bf19b5016ac88ece6e9d7848ea9..ca8e607d23ef8cad9a6d3cd4d7036c55017f38e9 100644 GIT binary patch delta 76261 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 delta 75622 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 z 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 diff --git a/netbox/translations/uk/LC_MESSAGES/django.po b/netbox/translations/uk/LC_MESSAGES/django.po index 4d1f84aa2..4b4a36a85 100644 --- a/netbox/translations/uk/LC_MESSAGES/django.po +++ b/netbox/translations/uk/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-14 05:18+0000\n" +"POT-Creation-Date: 2026-03-31 05:31+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2026\n" "Language-Team: Ukrainian (https://app.transifex.com/netbox-community/teams/178115/uk/)\n" @@ -47,9 +47,9 @@ msgstr "Ваш пароль успішно змінено." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 #: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204 -#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1933 -#: netbox/dcim/choices.py:1991 netbox/dcim/choices.py:2058 -#: netbox/dcim/choices.py:2080 netbox/virtualization/choices.py:20 +#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1954 +#: netbox/dcim/choices.py:2012 netbox/dcim/choices.py:2079 +#: netbox/dcim/choices.py:2101 netbox/virtualization/choices.py:20 #: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18 #: netbox/vpn/choices.py:281 msgid "Planned" @@ -63,8 +63,8 @@ msgstr "Забезпечення" #: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22 #: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155 #: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256 -#: netbox/dcim/choices.py:1990 netbox/dcim/choices.py:2057 -#: netbox/dcim/choices.py:2079 netbox/extras/tables/tables.py:642 +#: netbox/dcim/choices.py:2011 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:2100 netbox/extras/tables/tables.py:642 #: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49 #: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154 #: netbox/templates/extras/configcontext.html:29 @@ -76,8 +76,8 @@ msgid "Active" msgstr "Активний" #: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202 -#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:1989 -#: netbox/dcim/choices.py:2059 netbox/dcim/choices.py:2078 +#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:2010 +#: netbox/dcim/choices.py:2080 netbox/dcim/choices.py:2099 #: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44 msgid "Offline" msgstr "Офлайн" @@ -90,8 +90,9 @@ msgstr "Зняття з експлуатації" msgid "Decommissioned" msgstr "Виведені з експлуатації" -#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2002 -#: netbox/dcim/tables/devices.py:1208 netbox/templates/dcim/interface.html:153 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2023 +#: netbox/dcim/tables/devices.py:1208 +#: netbox/templates/dcim/interface/attrs/mac_address.html:3 #: netbox/tenancy/choices.py:17 msgid "Primary" msgstr "Первинний" @@ -110,7 +111,8 @@ msgid "Inactive" msgstr "Неактивний" #: netbox/circuits/choices.py:107 netbox/dcim/tables/devices.py:714 -#: netbox/templates/dcim/interface.html:293 netbox/vpn/choices.py:63 +#: netbox/templates/dcim/panels/interface_wireless.html:12 +#: netbox/vpn/choices.py:63 msgid "Peer" msgstr "Мережевий сусід" @@ -186,9 +188,9 @@ msgstr "Група тех. майданчиків (скорочення)" #: netbox/dcim/forms/filtersets.py:1172 netbox/dcim/forms/filtersets.py:1268 #: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:2024 #: netbox/dcim/forms/filtersets.py:2048 netbox/dcim/forms/filtersets.py:2072 -#: netbox/dcim/forms/model_forms.py:155 netbox/dcim/forms/model_forms.py:183 -#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:570 -#: netbox/dcim/forms/model_forms.py:839 netbox/dcim/forms/object_create.py:294 +#: netbox/dcim/forms/model_forms.py:166 netbox/dcim/forms/model_forms.py:209 +#: netbox/dcim/forms/model_forms.py:280 netbox/dcim/forms/model_forms.py:596 +#: netbox/dcim/forms/model_forms.py:865 netbox/dcim/forms/object_create.py:294 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:26 #: netbox/dcim/tables/power.py:90 netbox/dcim/tables/racks.py:111 #: netbox/dcim/tables/racks.py:194 netbox/dcim/tables/sites.py:102 @@ -199,7 +201,6 @@ msgstr "Група тех. майданчиків (скорочення)" #: netbox/ipam/tables/vlans.py:90 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:36 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/ipam/vlan.html:23 #: netbox/templates/ipam/vlan_edit.html:52 #: netbox/virtualization/forms/bulk_edit.py:95 #: netbox/virtualization/forms/bulk_import.py:60 @@ -231,7 +232,6 @@ msgstr "ASN (ідентифікатор)" #: netbox/circuits/filtersets.py:85 netbox/circuits/forms/filtersets.py:42 #: netbox/ipam/forms/model_forms.py:162 netbox/ipam/models/asns.py:137 #: netbox/ipam/models/asns.py:154 netbox/ipam/tables/asn.py:51 -#: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" @@ -328,14 +328,12 @@ msgstr "Пошук" #: netbox/circuits/forms/filtersets.py:232 #: netbox/circuits/forms/filtersets.py:259 #: netbox/circuits/forms/filtersets.py:306 -#: netbox/circuits/forms/model_forms.py:139 -#: netbox/circuits/forms/model_forms.py:162 -#: netbox/circuits/forms/model_forms.py:260 +#: netbox/circuits/forms/model_forms.py:168 +#: netbox/circuits/forms/model_forms.py:191 +#: netbox/circuits/forms/model_forms.py:289 #: netbox/circuits/tables/circuits.py:103 #: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 -#: netbox/templates/circuits/circuit.html:15 -#: netbox/templates/circuits/circuitgroupassignment.html:30 -#: netbox/templates/circuits/circuittermination.html:19 +#: netbox/templates/circuits/panels/circuit_termination.html:7 #: netbox/templates/dcim/inc/cable_termination.html:62 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" @@ -393,11 +391,9 @@ msgstr "Тип віртуальної схеми (слимак)" #: netbox/circuits/forms/bulk_import.py:248 #: netbox/circuits/forms/filtersets.py:384 #: netbox/circuits/forms/filtersets.py:390 -#: netbox/circuits/forms/model_forms.py:338 -#: netbox/circuits/forms/model_forms.py:353 +#: netbox/circuits/forms/model_forms.py:367 +#: netbox/circuits/forms/model_forms.py:382 #: netbox/circuits/tables/virtual_circuits.py:84 -#: netbox/templates/circuits/virtualcircuit.html:20 -#: netbox/templates/circuits/virtualcircuittermination.html:38 msgid "Virtual circuit" msgstr "Віртуальна схема" @@ -410,12 +406,12 @@ msgstr "Інтерфейс (ідентифікатор)" #: netbox/circuits/forms/bulk_edit.py:48 #: netbox/circuits/forms/filtersets.py:68 #: netbox/circuits/forms/model_forms.py:48 -#: netbox/circuits/tables/providers.py:32 netbox/dcim/forms/bulk_edit.py:134 -#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/model_forms.py:142 -#: netbox/dcim/tables/sites.py:74 netbox/ipam/models/asns.py:155 -#: netbox/ipam/tables/asn.py:37 netbox/ipam/views.py:270 -#: netbox/netbox/navigation/menu.py:182 netbox/netbox/navigation/menu.py:185 -#: netbox/templates/circuits/provider.html:23 +#: netbox/circuits/tables/providers.py:32 netbox/circuits/ui/panels.py:92 +#: netbox/dcim/forms/bulk_edit.py:134 netbox/dcim/forms/filtersets.py:225 +#: netbox/dcim/forms/model_forms.py:142 netbox/dcim/tables/sites.py:74 +#: netbox/ipam/models/asns.py:155 netbox/ipam/tables/asn.py:37 +#: netbox/ipam/views.py:365 netbox/netbox/navigation/menu.py:182 +#: netbox/netbox/navigation/menu.py:185 msgid "ASNs" msgstr "ASNs" @@ -435,9 +431,9 @@ msgstr "ASNs" #: netbox/circuits/forms/filtersets.py:349 #: netbox/circuits/forms/filtersets.py:385 #: netbox/circuits/forms/filtersets.py:408 -#: netbox/circuits/forms/model_forms.py:65 -#: netbox/circuits/forms/model_forms.py:80 -#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:90 +#: netbox/circuits/forms/model_forms.py:109 +#: netbox/circuits/forms/model_forms.py:140 #: netbox/circuits/tables/circuits.py:56 #: netbox/circuits/tables/circuits.py:107 #: netbox/circuits/tables/circuits.py:192 @@ -445,22 +441,14 @@ msgstr "ASNs" #: netbox/circuits/tables/providers.py:95 #: netbox/circuits/tables/virtual_circuits.py:46 #: netbox/circuits/tables/virtual_circuits.py:89 -#: netbox/templates/circuits/circuit.html:18 -#: netbox/templates/circuits/circuitgroupassignment.html:26 -#: netbox/templates/circuits/circuittermination.html:25 -#: netbox/templates/circuits/provider.html:20 -#: netbox/templates/circuits/provideraccount.html:20 -#: netbox/templates/circuits/providernetwork.html:20 -#: netbox/templates/circuits/virtualcircuit.html:23 -#: netbox/templates/circuits/virtualcircuittermination.html:26 +#: netbox/templates/circuits/panels/circuit_termination.html:11 #: netbox/templates/dcim/inc/cable_termination.html:58 -#: netbox/templates/dcim/interface.html:184 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:7 msgid "Provider" msgstr "Провайдер" #: netbox/circuits/forms/bulk_edit.py:86 -#: netbox/circuits/forms/filtersets.py:106 -#: netbox/templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/filtersets.py:106 netbox/circuits/ui/panels.py:106 msgid "Service ID" msgstr "Ідентифікатор служби" @@ -479,12 +467,7 @@ msgstr "Ідентифікатор служби" #: netbox/dcim/tables/devicetypes.py:214 netbox/dcim/tables/devicetypes.py:255 #: netbox/dcim/tables/devicetypes.py:274 netbox/dcim/tables/racks.py:30 #: netbox/extras/forms/bulk_edit.py:306 netbox/extras/tables/tables.py:552 -#: netbox/netbox/ui/attrs.py:194 netbox/templates/circuits/circuittype.html:30 -#: netbox/templates/circuits/virtualcircuittype.html:30 -#: netbox/templates/dcim/cable.html:44 netbox/templates/dcim/frontport.html:40 -#: netbox/templates/dcim/inventoryitemrole.html:26 -#: netbox/templates/dcim/poweroutlet.html:48 -#: netbox/templates/dcim/rearport.html:40 netbox/templates/extras/tag.html:26 +#: netbox/netbox/ui/attrs.py:213 netbox/templates/extras/tag.html:26 msgid "Color" msgstr "Колір" @@ -518,27 +501,14 @@ msgstr "Колір" #: netbox/dcim/forms/filtersets.py:1602 netbox/dcim/forms/filtersets.py:1707 #: netbox/dcim/forms/filtersets.py:1756 netbox/dcim/forms/filtersets.py:1775 #: netbox/dcim/forms/filtersets.py:1799 netbox/dcim/forms/filtersets.py:1818 -#: netbox/dcim/forms/model_forms.py:820 netbox/dcim/forms/model_forms.py:826 +#: netbox/dcim/forms/model_forms.py:846 netbox/dcim/forms/model_forms.py:852 #: netbox/dcim/forms/object_import.py:85 #: netbox/dcim/forms/object_import.py:114 #: netbox/dcim/forms/object_import.py:127 netbox/dcim/tables/devices.py:182 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 #: netbox/extras/forms/bulk_import.py:48 netbox/extras/tables/tables.py:510 #: netbox/extras/tables/tables.py:578 netbox/netbox/tables/tables.py:339 -#: netbox/templates/circuits/circuit.html:30 -#: netbox/templates/circuits/virtualcircuit.html:39 -#: netbox/templates/circuits/virtualcircuittermination.html:64 -#: netbox/templates/core/datasource.html:38 -#: netbox/templates/dcim/cable.html:15 -#: netbox/templates/dcim/consoleport.html:36 -#: netbox/templates/dcim/consoleserverport.html:36 -#: netbox/templates/dcim/frontport.html:36 -#: netbox/templates/dcim/interface.html:46 -#: netbox/templates/dcim/interface.html:244 -#: netbox/templates/dcim/powerfeed.html:32 -#: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 -#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/dcim/panels/interface_connection.html:68 #: netbox/templates/extras/eventrule.html:74 #: netbox/templates/wireless/panels/wirelesslink_interface.html:16 #: netbox/virtualization/forms/bulk_edit.py:50 @@ -559,10 +529,8 @@ msgstr "Тип" #: netbox/circuits/forms/bulk_import.py:213 #: netbox/circuits/forms/filtersets.py:159 #: netbox/circuits/forms/filtersets.py:357 -#: netbox/circuits/forms/model_forms.py:117 -#: netbox/circuits/forms/model_forms.py:326 -#: netbox/templates/circuits/virtualcircuit.html:31 -#: netbox/templates/circuits/virtualcircuittermination.html:34 +#: netbox/circuits/forms/model_forms.py:146 +#: netbox/circuits/forms/model_forms.py:355 msgid "Provider account" msgstr "Обліковий запис постачальника" @@ -604,19 +572,10 @@ msgstr "Обліковий запис постачальника" #: netbox/ipam/forms/model_forms.py:503 netbox/ipam/tables/ip.py:182 #: netbox/ipam/tables/ip.py:261 netbox/ipam/tables/ip.py:314 #: netbox/ipam/tables/ip.py:389 netbox/ipam/tables/ip.py:416 -#: netbox/ipam/tables/vlans.py:98 netbox/templates/circuits/circuit.html:34 -#: netbox/templates/circuits/virtualcircuit.html:43 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:21 -#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:19 -#: netbox/templates/dcim/cable.html:19 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/powerfeed.html:36 -#: netbox/templates/dcim/poweroutlet.html:40 +#: netbox/ipam/tables/vlans.py:98 netbox/templates/core/rq_task.html:81 +#: netbox/templates/core/system.html:19 #: netbox/templates/extras/inc/script_list_content.html:35 -#: netbox/templates/ipam/ipaddress.html:37 -#: netbox/templates/ipam/iprange.html:61 netbox/templates/ipam/prefix.html:69 -#: netbox/templates/ipam/vlan.html:48 netbox/users/forms/filtersets.py:36 -#: netbox/users/forms/model_forms.py:223 +#: netbox/users/forms/filtersets.py:36 netbox/users/forms/model_forms.py:223 #: netbox/virtualization/forms/bulk_edit.py:60 #: netbox/virtualization/forms/bulk_edit.py:83 #: netbox/virtualization/forms/bulk_import.py:55 @@ -677,21 +636,9 @@ msgstr "Статус" #: netbox/ipam/forms/filtersets.py:155 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:297 netbox/ipam/forms/filtersets.py:350 #: netbox/ipam/forms/filtersets.py:459 netbox/ipam/forms/filtersets.py:552 -#: netbox/ipam/tables/ip.py:419 netbox/templates/circuits/circuit.html:48 -#: netbox/templates/circuits/circuitgroup.html:36 -#: netbox/templates/circuits/virtualcircuit.html:47 -#: netbox/templates/dcim/cable.html:27 netbox/templates/dcim/powerfeed.html:44 -#: netbox/templates/dcim/virtualdevicecontext.html:52 -#: netbox/templates/ipam/aggregate.html:30 netbox/templates/ipam/asn.html:33 -#: netbox/templates/ipam/asnrange.html:29 -#: netbox/templates/ipam/ipaddress.html:28 -#: netbox/templates/ipam/iprange.html:65 netbox/templates/ipam/prefix.html:29 -#: netbox/templates/ipam/routetarget.html:17 -#: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vlangroup.html:50 -#: netbox/templates/ipam/vrf.html:20 netbox/templates/tenancy/tenant.html:17 -#: netbox/tenancy/forms/filtersets.py:55 netbox/tenancy/forms/forms.py:26 -#: netbox/tenancy/forms/forms.py:50 netbox/tenancy/forms/model_forms.py:51 -#: netbox/tenancy/tables/columns.py:50 +#: netbox/ipam/tables/ip.py:419 netbox/tenancy/forms/filtersets.py:55 +#: netbox/tenancy/forms/forms.py:26 netbox/tenancy/forms/forms.py:50 +#: netbox/tenancy/forms/model_forms.py:51 netbox/tenancy/tables/columns.py:50 #: netbox/virtualization/forms/bulk_edit.py:66 #: netbox/virtualization/forms/bulk_edit.py:126 #: netbox/virtualization/forms/bulk_import.py:67 @@ -726,8 +673,7 @@ msgstr "Гарантована мінімальна швидкість (Кбіт #: netbox/circuits/forms/bulk_edit.py:159 #: netbox/circuits/forms/filtersets.py:217 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/templates/circuits/circuit.html:38 +#: netbox/circuits/forms/model_forms.py:165 #: netbox/wireless/forms/bulk_edit.py:121 #: netbox/wireless/forms/filtersets.py:137 #: netbox/wireless/forms/model_forms.py:166 @@ -746,7 +692,7 @@ msgid "Distance unit" msgstr "Одиниця відстані" #: netbox/circuits/forms/bulk_edit.py:173 -#: netbox/circuits/forms/model_forms.py:141 +#: netbox/circuits/forms/model_forms.py:170 msgid "Service Parameters" msgstr "Параметри обслуговування" @@ -772,7 +718,7 @@ msgstr "Параметри обслуговування" #: netbox/dcim/forms/filtersets.py:1864 netbox/dcim/forms/filtersets.py:1879 #: netbox/dcim/forms/filtersets.py:1890 netbox/dcim/forms/filtersets.py:1936 #: netbox/dcim/forms/filtersets.py:1972 netbox/dcim/tables/modules.py:25 -#: netbox/dcim/views.py:1679 netbox/extras/forms/bulk_edit.py:94 +#: netbox/dcim/views.py:1681 netbox/extras/forms/bulk_edit.py:94 #: netbox/extras/forms/filtersets.py:48 netbox/extras/forms/filtersets.py:147 #: netbox/extras/forms/filtersets.py:226 netbox/extras/forms/filtersets.py:243 #: netbox/extras/forms/filtersets.py:275 netbox/extras/forms/filtersets.py:306 @@ -795,12 +741,12 @@ msgstr "Атрибути" #: netbox/circuits/forms/bulk_edit.py:175 #: netbox/circuits/forms/bulk_edit.py:317 -#: netbox/circuits/forms/model_forms.py:142 -#: netbox/circuits/forms/model_forms.py:238 -#: netbox/circuits/forms/model_forms.py:340 -#: netbox/dcim/forms/model_forms.py:157 netbox/dcim/forms/model_forms.py:198 -#: netbox/dcim/forms/model_forms.py:285 netbox/dcim/forms/model_forms.py:342 -#: netbox/dcim/forms/model_forms.py:883 netbox/dcim/forms/model_forms.py:1897 +#: netbox/circuits/forms/model_forms.py:171 +#: netbox/circuits/forms/model_forms.py:267 +#: netbox/circuits/forms/model_forms.py:369 +#: netbox/dcim/forms/model_forms.py:168 netbox/dcim/forms/model_forms.py:224 +#: netbox/dcim/forms/model_forms.py:311 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/forms/model_forms.py:909 netbox/dcim/forms/model_forms.py:1923 #: netbox/ipam/forms/bulk_edit.py:383 netbox/ipam/forms/model_forms.py:70 #: netbox/ipam/forms/model_forms.py:87 netbox/ipam/forms/model_forms.py:118 #: netbox/ipam/forms/model_forms.py:139 netbox/ipam/forms/model_forms.py:163 @@ -835,34 +781,9 @@ msgstr "Оренда" #: netbox/extras/tables/tables.py:97 netbox/ipam/tables/vlans.py:214 #: netbox/ipam/tables/vlans.py:241 netbox/netbox/forms/bulk_edit.py:79 #: netbox/netbox/forms/bulk_edit.py:91 netbox/netbox/forms/bulk_edit.py:103 -#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 -#: netbox/templates/circuits/circuit.html:69 -#: netbox/templates/circuits/circuitgroup.html:32 -#: netbox/templates/circuits/circuittype.html:26 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:83 -#: netbox/templates/circuits/provider.html:33 -#: netbox/templates/circuits/provideraccount.html:32 -#: netbox/templates/circuits/providernetwork.html:32 -#: netbox/templates/circuits/virtualcircuit.html:56 -#: netbox/templates/circuits/virtualcircuittermination.html:68 -#: netbox/templates/circuits/virtualcircuittype.html:26 -#: netbox/templates/core/datasource.html:58 -#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:40 -#: netbox/templates/dcim/consoleport.html:44 -#: netbox/templates/dcim/consoleserverport.html:44 -#: netbox/templates/dcim/devicebay.html:32 -#: netbox/templates/dcim/frontport.html:54 -#: netbox/templates/dcim/interface.html:69 -#: netbox/templates/dcim/inventoryitem.html:64 -#: netbox/templates/dcim/inventoryitemrole.html:22 -#: netbox/templates/dcim/macaddress.html:21 -#: netbox/templates/dcim/modulebay.html:42 -#: netbox/templates/dcim/powerfeed.html:40 -#: netbox/templates/dcim/poweroutlet.html:44 -#: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 -#: netbox/templates/dcim/rearport.html:54 -#: netbox/templates/dcim/virtualchassis.html:21 +#: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:85 +#: netbox/templates/core/plugin.html:80 #: netbox/templates/extras/configcontext.html:25 #: netbox/templates/extras/configcontextprofile.html:17 #: netbox/templates/extras/configtemplate.html:17 @@ -877,23 +798,6 @@ msgstr "Оренда" #: netbox/templates/extras/tableconfig.html:17 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:151 -#: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 -#: netbox/templates/ipam/asnrange.html:38 -#: netbox/templates/ipam/fhrpgroup.html:34 -#: netbox/templates/ipam/ipaddress.html:55 -#: netbox/templates/ipam/iprange.html:74 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/rir.html:26 netbox/templates/ipam/role.html:26 -#: netbox/templates/ipam/routetarget.html:21 -#: netbox/templates/ipam/service.html:52 -#: netbox/templates/ipam/servicetemplate.html:27 -#: netbox/templates/ipam/vlan.html:62 netbox/templates/ipam/vlangroup.html:34 -#: netbox/templates/ipam/vlantranslationpolicy.html:18 -#: netbox/templates/ipam/vlantranslationrule.html:26 -#: netbox/templates/ipam/vrf.html:33 netbox/templates/tenancy/contact.html:77 -#: netbox/templates/tenancy/contactgroup.html:25 -#: netbox/templates/tenancy/contactrole.html:22 -#: netbox/templates/tenancy/tenant.html:24 -#: netbox/templates/tenancy/tenantgroup.html:33 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:12 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:12 #: netbox/users/forms/bulk_edit.py:62 netbox/users/forms/bulk_edit.py:80 @@ -905,7 +809,7 @@ msgid "Description" msgstr "Опис" #: netbox/circuits/forms/bulk_edit.py:192 -#: netbox/circuits/forms/model_forms.py:170 +#: netbox/circuits/forms/model_forms.py:199 #: netbox/dcim/forms/bulk_import.py:1419 netbox/dcim/forms/bulk_import.py:1444 msgid "Termination type" msgstr "Тип кінця" @@ -913,9 +817,9 @@ msgstr "Тип кінця" #: netbox/circuits/forms/bulk_edit.py:195 #: netbox/circuits/forms/bulk_import.py:133 #: netbox/circuits/forms/filtersets.py:234 -#: netbox/circuits/forms/model_forms.py:173 +#: netbox/circuits/forms/model_forms.py:202 netbox/circuits/ui/panels.py:14 #: netbox/templates/circuits/inc/circuit_termination.html:6 -#: netbox/templates/dcim/cable.html:72 netbox/templates/dcim/cable.html:76 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:6 #: netbox/vpn/forms/bulk_import.py:99 netbox/vpn/forms/filtersets.py:87 msgid "Termination" msgstr "Кінець" @@ -937,26 +841,23 @@ msgid "Mark connected" msgstr "Позначити з'єднаним" #: netbox/circuits/forms/bulk_edit.py:220 -#: netbox/circuits/forms/model_forms.py:184 +#: netbox/circuits/forms/model_forms.py:213 netbox/circuits/views.py:513 +#: netbox/dcim/views.py:3465 netbox/dcim/views.py:3566 #: netbox/templates/circuits/inc/circuit_termination_fields.html:55 -#: netbox/templates/dcim/frontport.html:118 -#: netbox/templates/dcim/interface.html:268 -#: netbox/templates/dcim/rearport.html:112 +#: netbox/templates/dcim/panels/interface_connection.html:92 msgid "Circuit Termination" msgstr "Кінець каналу зв'язку" #: netbox/circuits/forms/bulk_edit.py:222 -#: netbox/circuits/forms/model_forms.py:186 +#: netbox/circuits/forms/model_forms.py:215 msgid "Termination Details" msgstr "Деталі кінця" #: netbox/circuits/forms/bulk_edit.py:261 #: netbox/circuits/forms/bulk_import.py:188 #: netbox/circuits/forms/filtersets.py:314 -#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:666 -#: netbox/templates/circuits/circuitgroupassignment.html:34 +#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:692 #: netbox/templates/dcim/panels/virtual_chassis_members.html:11 -#: netbox/templates/dcim/virtualchassis.html:58 #: netbox/templates/dcim/virtualchassis_edit.html:68 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 #: netbox/templates/ipam/panels/fhrp_groups.html:12 @@ -971,7 +872,7 @@ msgstr "Пріоритет" #: netbox/circuits/forms/filtersets.py:272 #: netbox/circuits/forms/filtersets.py:365 #: netbox/circuits/forms/filtersets.py:403 -#: netbox/circuits/forms/model_forms.py:321 +#: netbox/circuits/forms/model_forms.py:350 #: netbox/circuits/tables/virtual_circuits.py:51 #: netbox/circuits/tables/virtual_circuits.py:95 msgid "Provider network" @@ -980,13 +881,13 @@ msgstr "Мережа провайдера" #: netbox/circuits/forms/bulk_edit.py:326 #: netbox/circuits/forms/bulk_import.py:253 #: netbox/circuits/forms/filtersets.py:393 -#: netbox/circuits/forms/model_forms.py:360 netbox/dcim/forms/bulk_edit.py:351 +#: netbox/circuits/forms/model_forms.py:389 netbox/dcim/forms/bulk_edit.py:351 #: netbox/dcim/forms/bulk_edit.py:1245 netbox/dcim/forms/bulk_edit.py:1681 #: netbox/dcim/forms/bulk_import.py:270 netbox/dcim/forms/bulk_import.py:1199 #: netbox/dcim/forms/filtersets.py:404 netbox/dcim/forms/filtersets.py:879 #: netbox/dcim/forms/filtersets.py:1902 netbox/dcim/forms/filtersets.py:1942 -#: netbox/dcim/forms/model_forms.py:267 netbox/dcim/forms/model_forms.py:1234 -#: netbox/dcim/forms/model_forms.py:1717 +#: netbox/dcim/forms/model_forms.py:293 netbox/dcim/forms/model_forms.py:1260 +#: netbox/dcim/forms/model_forms.py:1743 #: netbox/dcim/forms/object_import.py:182 netbox/dcim/tables/devices.py:173 #: netbox/dcim/tables/devices.py:1032 netbox/dcim/tables/devicetypes.py:318 #: netbox/dcim/tables/racks.py:118 netbox/extras/filtersets.py:734 @@ -1000,14 +901,10 @@ msgstr "Мережа провайдера" #: netbox/ipam/forms/model_forms.py:253 netbox/ipam/forms/model_forms.py:678 #: netbox/ipam/tables/ip.py:208 netbox/ipam/tables/ip.py:265 #: netbox/ipam/tables/ip.py:318 netbox/ipam/tables/vlans.py:102 -#: netbox/templates/circuits/virtualcircuittermination.html:42 #: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:196 -#: netbox/templates/dcim/interface.html:298 -#: netbox/templates/dcim/inventoryitem.html:40 -#: netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:57 netbox/templates/ipam/prefix.html:73 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/dcim/panels/component_inventory_items.html:10 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:19 +#: netbox/templates/dcim/panels/interface_wireless.html:17 #: netbox/templates/wireless/panels/wirelesslink_interface.html:20 #: netbox/tenancy/forms/bulk_edit.py:136 #: netbox/tenancy/forms/filtersets.py:136 @@ -1103,22 +1000,19 @@ msgid "Operational role" msgstr "Операційна роль" #: netbox/circuits/forms/bulk_import.py:258 -#: netbox/circuits/forms/model_forms.py:363 +#: netbox/circuits/forms/model_forms.py:392 #: netbox/circuits/tables/virtual_circuits.py:108 -#: netbox/dcim/forms/bulk_import.py:1330 netbox/dcim/forms/model_forms.py:1308 -#: netbox/dcim/forms/model_forms.py:1577 netbox/dcim/forms/model_forms.py:1758 -#: netbox/dcim/forms/model_forms.py:1793 netbox/dcim/forms/model_forms.py:1918 -#: netbox/dcim/tables/connections.py:66 netbox/dcim/tables/devices.py:1199 -#: netbox/ipam/forms/bulk_import.py:323 netbox/ipam/forms/model_forms.py:283 -#: netbox/ipam/forms/model_forms.py:292 netbox/ipam/tables/fhrp.py:61 -#: netbox/ipam/tables/ip.py:323 netbox/ipam/tables/vlans.py:145 +#: netbox/circuits/ui/panels.py:134 netbox/dcim/forms/bulk_import.py:1330 +#: netbox/dcim/forms/model_forms.py:1334 netbox/dcim/forms/model_forms.py:1603 +#: netbox/dcim/forms/model_forms.py:1784 netbox/dcim/forms/model_forms.py:1819 +#: netbox/dcim/forms/model_forms.py:1944 netbox/dcim/tables/connections.py:66 +#: netbox/dcim/tables/devices.py:1199 netbox/dcim/views.py:3457 +#: netbox/dcim/views.py:3560 netbox/ipam/forms/bulk_import.py:323 +#: netbox/ipam/forms/model_forms.py:283 netbox/ipam/forms/model_forms.py:292 +#: netbox/ipam/tables/fhrp.py:61 netbox/ipam/tables/ip.py:323 +#: netbox/ipam/tables/vlans.py:145 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 -#: netbox/templates/circuits/virtualcircuittermination.html:53 -#: netbox/templates/circuits/virtualcircuittermination.html:60 -#: netbox/templates/dcim/frontport.html:103 -#: netbox/templates/dcim/interface.html:27 -#: netbox/templates/dcim/interface.html:259 -#: netbox/templates/dcim/rearport.html:103 +#: netbox/templates/dcim/panels/interface_connection.html:83 #: netbox/templates/wireless/panels/wirelesslink_interface.html:12 #: netbox/virtualization/forms/model_forms.py:368 #: netbox/vpn/forms/bulk_import.py:302 netbox/vpn/forms/model_forms.py:434 @@ -1150,8 +1044,8 @@ msgstr "Інтерфейс" #: netbox/dcim/forms/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1746 #: netbox/dcim/forms/filtersets.py:1790 netbox/dcim/forms/filtersets.py:1833 #: netbox/dcim/forms/filtersets.py:1865 netbox/dcim/forms/filtersets.py:1892 -#: netbox/dcim/forms/model_forms.py:197 netbox/dcim/forms/model_forms.py:259 -#: netbox/dcim/forms/model_forms.py:575 netbox/dcim/forms/model_forms.py:844 +#: netbox/dcim/forms/model_forms.py:223 netbox/dcim/forms/model_forms.py:285 +#: netbox/dcim/forms/model_forms.py:601 netbox/dcim/forms/model_forms.py:870 #: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:30 #: netbox/dcim/tables/racks.py:107 netbox/dcim/tables/racks.py:199 #: netbox/extras/filtersets.py:718 netbox/extras/forms/filtersets.py:404 @@ -1159,7 +1053,6 @@ msgstr "Інтерфейс" #: netbox/ipam/forms/filtersets.py:481 netbox/ipam/forms/filtersets.py:549 #: netbox/templates/dcim/device_edit.html:32 #: netbox/templates/dcim/inc/cable_termination.html:12 -#: netbox/templates/dcim/powerpanel.html:26 #: netbox/virtualization/forms/filtersets.py:87 #: netbox/virtualization/forms/filtersets.py:113 #: netbox/wireless/forms/filtersets.py:99 @@ -1270,7 +1163,7 @@ msgstr "Контакти" #: netbox/dcim/tables/devices.py:147 netbox/dcim/tables/sites.py:65 #: netbox/extras/filtersets.py:685 netbox/ipam/forms/bulk_edit.py:404 #: netbox/ipam/forms/filtersets.py:241 netbox/ipam/forms/filtersets.py:466 -#: netbox/ipam/forms/filtersets.py:559 netbox/templates/ipam/vlan.html:16 +#: netbox/ipam/forms/filtersets.py:559 netbox/ipam/ui/panels.py:195 #: netbox/virtualization/forms/filtersets.py:67 #: netbox/virtualization/forms/filtersets.py:147 #: netbox/virtualization/forms/model_forms.py:86 @@ -1302,8 +1195,6 @@ msgstr "Група тех. майданчиків" #: netbox/circuits/tables/providers.py:61 #: netbox/circuits/tables/virtual_circuits.py:55 #: netbox/circuits/tables/virtual_circuits.py:99 -#: netbox/templates/circuits/circuit.html:22 -#: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Обліковий запис" @@ -1314,9 +1205,7 @@ msgstr "Сторона завершення" #: netbox/circuits/forms/filtersets.py:296 netbox/dcim/forms/bulk_edit.py:1540 #: netbox/extras/forms/model_forms.py:706 netbox/ipam/forms/filtersets.py:154 #: netbox/ipam/forms/filtersets.py:642 netbox/ipam/forms/model_forms.py:329 -#: netbox/templates/dcim/macaddress.html:25 -#: netbox/templates/extras/configcontext.html:36 -#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/ipam/ui/panels.py:121 netbox/templates/extras/configcontext.html:36 #: netbox/templates/ipam/vlan_edit.html:42 #: netbox/tenancy/forms/filtersets.py:116 #: netbox/users/forms/model_forms.py:375 @@ -1324,18 +1213,16 @@ msgid "Assignment" msgstr "Призначення" #: netbox/circuits/forms/filtersets.py:311 -#: netbox/circuits/forms/model_forms.py:250 +#: netbox/circuits/forms/model_forms.py:279 #: netbox/circuits/tables/circuits.py:187 netbox/dcim/forms/bulk_edit.py:118 #: netbox/dcim/forms/bulk_import.py:115 netbox/dcim/forms/model_forms.py:135 #: netbox/dcim/tables/sites.py:69 netbox/extras/forms/filtersets.py:600 #: netbox/ipam/filtersets.py:1034 netbox/ipam/forms/bulk_edit.py:423 #: netbox/ipam/forms/bulk_import.py:515 netbox/ipam/forms/model_forms.py:561 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/vlans.py:94 -#: netbox/templates/circuits/circuitgroupassignment.html:22 -#: netbox/templates/dcim/interface.html:359 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:8 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 #: netbox/templates/ipam/panels/fhrp_groups.html:9 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/tenant.html:20 #: netbox/tenancy/forms/bulk_edit.py:44 netbox/tenancy/forms/bulk_import.py:46 #: netbox/tenancy/forms/filtersets.py:63 #: netbox/tenancy/forms/filtersets.py:126 @@ -1361,23 +1248,38 @@ msgstr "Призначення" msgid "Group" msgstr "Група" -#: netbox/circuits/forms/model_forms.py:237 -#: netbox/templates/circuits/circuitgroup.html:25 +#: netbox/circuits/forms/model_forms.py:53 +#: netbox/dcim/forms/model_forms.py:147 +msgid "Add ASNs" +msgstr "Додати ASN" + +#: netbox/circuits/forms/model_forms.py:58 +#: netbox/dcim/forms/model_forms.py:152 +msgid "Remove ASNs" +msgstr "Видалити ASN" + +#: netbox/circuits/forms/model_forms.py:79 +#: netbox/dcim/forms/model_forms.py:198 +#, python-brace-format +msgid "{count} ASNs currently assigned" +msgstr "{count} Наразі присвоєні ASN" + +#: netbox/circuits/forms/model_forms.py:266 msgid "Circuit Group" msgstr "Група каналів зв'язку" -#: netbox/circuits/forms/model_forms.py:257 +#: netbox/circuits/forms/model_forms.py:286 msgid "Circuit type" msgstr "Тип схеми" -#: netbox/circuits/forms/model_forms.py:268 +#: netbox/circuits/forms/model_forms.py:297 msgid "Group Assignment" msgstr "Групове завдання" #: netbox/circuits/models/base.py:18 netbox/dcim/models/cables.py:81 -#: netbox/dcim/models/device_component_templates.py:353 -#: netbox/dcim/models/device_component_templates.py:588 -#: netbox/dcim/models/device_component_templates.py:661 +#: netbox/dcim/models/device_component_templates.py:343 +#: netbox/dcim/models/device_component_templates.py:578 +#: netbox/dcim/models/device_component_templates.py:651 #: netbox/dcim/models/device_components.py:573 #: netbox/dcim/models/device_components.py:1156 #: netbox/dcim/models/device_components.py:1204 @@ -1414,8 +1316,8 @@ msgstr "Унікальний ідентифікатор каналу зв'язк #: netbox/dcim/models/modules.py:219 netbox/dcim/models/power.py:95 #: netbox/dcim/models/racks.py:301 netbox/dcim/models/racks.py:685 #: netbox/dcim/models/sites.py:163 netbox/dcim/models/sites.py:287 -#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:528 -#: netbox/ipam/models/ip.py:757 netbox/ipam/models/vlans.py:228 +#: netbox/ipam/models/ip.py:244 netbox/ipam/models/ip.py:538 +#: netbox/ipam/models/ip.py:767 netbox/ipam/models/vlans.py:228 #: netbox/virtualization/models/clusters.py:70 #: netbox/virtualization/models/virtualmachines.py:80 #: netbox/vpn/models/l2vpn.py:36 netbox/vpn/models/tunnels.py:38 @@ -1536,7 +1438,7 @@ msgstr "кінець каналу зв'язку" msgid "circuit terminations" msgstr "кінці каналу зв'язку" -#: netbox/circuits/models/circuits.py:360 +#: netbox/circuits/models/circuits.py:367 msgid "A circuit termination must attach to a terminating object." msgstr "Закриття ланцюга повинно приєднатися до кінцевого об'єкта." @@ -1640,7 +1542,7 @@ msgid "virtual circuits" msgstr "віртуальні схеми" #: netbox/circuits/models/virtual_circuits.py:135 netbox/ipam/models/ip.py:201 -#: netbox/ipam/models/ip.py:764 netbox/vpn/models/tunnels.py:109 +#: netbox/ipam/models/ip.py:774 netbox/vpn/models/tunnels.py:109 msgid "role" msgstr "роль" @@ -1688,30 +1590,13 @@ msgstr "завершення віртуальних схем" #: netbox/ipam/tables/vlans.py:33 netbox/ipam/tables/vlans.py:86 #: netbox/ipam/tables/vlans.py:205 netbox/ipam/tables/vrfs.py:26 #: netbox/ipam/tables/vrfs.py:65 netbox/netbox/tables/tables.py:325 -#: netbox/netbox/ui/panels.py:198 netbox/netbox/ui/panels.py:207 -#: netbox/templates/circuits/circuitgroup.html:28 -#: netbox/templates/circuits/circuittype.html:22 -#: netbox/templates/circuits/provideraccount.html:28 -#: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/circuits/virtualcircuittype.html:22 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:17 +#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 #: netbox/templates/core/plugin.html:54 #: netbox/templates/core/rq_worker.html:43 -#: netbox/templates/dcim/consoleport.html:28 -#: netbox/templates/dcim/consoleserverport.html:28 -#: netbox/templates/dcim/devicebay.html:24 -#: netbox/templates/dcim/frontport.html:28 #: netbox/templates/dcim/inc/interface_vlans_table.html:5 #: netbox/templates/dcim/inc/panels/inventory_items.html:18 -#: netbox/templates/dcim/interface.html:38 -#: netbox/templates/dcim/interface.html:240 -#: netbox/templates/dcim/inventoryitem.html:28 -#: netbox/templates/dcim/inventoryitemrole.html:18 -#: netbox/templates/dcim/modulebay.html:30 -#: netbox/templates/dcim/poweroutlet.html:28 -#: netbox/templates/dcim/powerport.html:28 -#: netbox/templates/dcim/rearport.html:28 -#: netbox/templates/dcim/virtualdevicecontext.html:18 +#: netbox/templates/dcim/panels/component_inventory_items.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:64 #: netbox/templates/extras/configcontext.html:13 #: netbox/templates/extras/configcontextprofile.html:13 #: netbox/templates/extras/configtemplate.html:13 @@ -1725,18 +1610,6 @@ msgstr "завершення віртуальних схем" #: netbox/templates/extras/savedfilter.html:13 #: netbox/templates/extras/tableconfig.html:13 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 -#: netbox/templates/ipam/asnrange.html:15 -#: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 -#: netbox/templates/ipam/role.html:22 -#: netbox/templates/ipam/routetarget.html:13 -#: netbox/templates/ipam/service.html:26 -#: netbox/templates/ipam/servicetemplate.html:15 -#: netbox/templates/ipam/vlan.html:35 netbox/templates/ipam/vlangroup.html:30 -#: netbox/templates/ipam/vlantranslationpolicy.html:14 -#: netbox/templates/tenancy/contact.html:35 -#: netbox/templates/tenancy/contactgroup.html:21 -#: netbox/templates/tenancy/contactrole.html:18 -#: netbox/templates/tenancy/tenantgroup.html:29 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:8 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:8 #: netbox/tenancy/tables/contacts.py:38 netbox/tenancy/tables/contacts.py:53 @@ -1766,17 +1639,13 @@ msgstr "Назва" #: netbox/circuits/tables/virtual_circuits.py:27 #: netbox/netbox/navigation/menu.py:278 netbox/netbox/navigation/menu.py:282 #: netbox/netbox/navigation/menu.py:284 -#: netbox/templates/circuits/provider.html:57 -#: netbox/templates/circuits/provideraccount.html:48 -#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Канали зв'язку" #: netbox/circuits/tables/circuits.py:53 #: netbox/circuits/tables/virtual_circuits.py:42 -#: netbox/templates/circuits/circuit.html:26 -#: netbox/templates/circuits/virtualcircuit.html:35 -#: netbox/templates/dcim/interface.html:192 +#: netbox/circuits/ui/panels.py:75 netbox/circuits/ui/panels.py:118 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:15 msgid "Circuit ID" msgstr "Ідентифікатор каналу зв'язку" @@ -1790,13 +1659,11 @@ msgid "Side Z" msgstr "Сторона Б" #: netbox/circuits/tables/circuits.py:78 -#: netbox/templates/circuits/circuit.html:65 msgid "Commit Rate" msgstr "Гарантований процент чи коефіцієнт доступності" #: netbox/circuits/tables/circuits.py:85 netbox/dcim/forms/filtersets.py:1973 -#: netbox/templates/tenancy/contact.html:94 -#: netbox/tenancy/tables/contacts.py:67 +#: netbox/tenancy/tables/contacts.py:67 netbox/tenancy/views.py:416 msgid "Assignments" msgstr "Завдання" @@ -1818,10 +1685,7 @@ msgid "Site Group" msgstr "Група тех. майданчиків" #: netbox/circuits/tables/circuits.py:145 -#: netbox/templates/circuits/providernetwork.html:17 -#: netbox/templates/circuits/virtualcircuit.html:27 -#: netbox/templates/circuits/virtualcircuittermination.html:30 -#: netbox/templates/dcim/interface.html:188 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:11 msgid "Provider Network" msgstr "Мережа провайдера" @@ -1837,8 +1701,7 @@ msgstr "Кількість рахунків" msgid "ASN Count" msgstr "Кількість ASN" -#: netbox/circuits/tables/virtual_circuits.py:64 -#: netbox/templates/circuits/virtualcircuit.html:87 +#: netbox/circuits/tables/virtual_circuits.py:64 netbox/circuits/views.py:802 #: netbox/vpn/tables/tunnels.py:59 netbox/vpn/views.py:139 #: netbox/vpn/views.py:685 msgid "Terminations" @@ -1867,9 +1730,9 @@ msgstr "Кінці" #: netbox/dcim/forms/filtersets.py:1868 netbox/dcim/forms/filtersets.py:1880 #: netbox/dcim/forms/filtersets.py:1895 netbox/dcim/forms/filtersets.py:1937 #: netbox/dcim/forms/filtersets.py:2032 netbox/dcim/forms/filtersets.py:2056 -#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:748 -#: netbox/dcim/forms/model_forms.py:963 netbox/dcim/forms/model_forms.py:1375 -#: netbox/dcim/forms/model_forms.py:1869 netbox/dcim/forms/model_forms.py:1942 +#: netbox/dcim/forms/filtersets.py:2080 netbox/dcim/forms/model_forms.py:774 +#: netbox/dcim/forms/model_forms.py:989 netbox/dcim/forms/model_forms.py:1401 +#: netbox/dcim/forms/model_forms.py:1895 netbox/dcim/forms/model_forms.py:1968 #: netbox/dcim/forms/object_create.py:207 netbox/dcim/tables/connections.py:23 #: netbox/dcim/tables/connections.py:42 netbox/dcim/tables/connections.py:61 #: netbox/dcim/tables/devices.py:293 netbox/dcim/tables/devices.py:388 @@ -1881,24 +1744,11 @@ msgstr "Кінці" #: netbox/dcim/tables/modules.py:82 netbox/extras/forms/filtersets.py:405 #: netbox/ipam/forms/bulk_import.py:309 netbox/ipam/forms/filtersets.py:649 #: netbox/ipam/forms/model_forms.py:325 netbox/ipam/tables/vlans.py:156 -#: netbox/templates/circuits/virtualcircuittermination.html:56 -#: netbox/templates/dcim/consoleport.html:20 -#: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device_edit.html:12 -#: netbox/templates/dcim/devicebay.html:20 -#: netbox/templates/dcim/devicebay.html:48 -#: netbox/templates/dcim/frontport.html:20 -#: netbox/templates/dcim/interface.html:30 -#: netbox/templates/dcim/interface.html:236 -#: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/modulebay.html:20 +#: netbox/templates/dcim/panels/installed_device.html:9 +#: netbox/templates/dcim/panels/interface_connection.html:60 #: netbox/templates/dcim/panels/virtual_chassis_members.html:8 -#: netbox/templates/dcim/poweroutlet.html:20 -#: netbox/templates/dcim/powerport.html:20 -#: netbox/templates/dcim/rearport.html:20 -#: netbox/templates/dcim/virtualchassis.html:55 #: netbox/templates/dcim/virtualchassis_edit.html:63 -#: netbox/templates/dcim/virtualdevicecontext.html:22 #: netbox/templates/wireless/panels/wirelesslink_interface.html:8 #: netbox/virtualization/filtersets.py:160 #: netbox/virtualization/forms/bulk_edit.py:108 @@ -1916,6 +1766,15 @@ msgstr "Кінці" msgid "Device" msgstr "Пристрій" +#: netbox/circuits/ui/panels.py:37 netbox/netbox/navigation/menu.py:301 +msgid "Group Assignments" +msgstr "Групи завдань" + +#: netbox/circuits/ui/panels.py:46 netbox/ipam/ui/panels.py:36 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Призначити у групу" + #: netbox/core/api/views.py:51 msgid "This user does not have permission to synchronize this data source." msgstr "Цей користувач не має дозволу на синхронізацію цього джерела даних." @@ -1962,14 +1821,14 @@ msgid "Syncing" msgstr "Синхронізація" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:43 netbox/templates/core/job.html:59 +#: netbox/core/tables/jobs.py:43 msgid "Completed" msgstr "Завершено" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35 #: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259 -#: netbox/dcim/choices.py:1992 netbox/dcim/choices.py:2082 +#: netbox/dcim/choices.py:2013 netbox/dcim/choices.py:2103 #: netbox/virtualization/choices.py:48 msgid "Failed" msgstr "Збій" @@ -1993,7 +1852,6 @@ msgstr "Очікується" #: netbox/core/choices.py:55 netbox/core/constants.py:24 #: netbox/core/tables/jobs.py:34 netbox/core/tables/tasks.py:39 -#: netbox/templates/core/job.html:46 msgid "Scheduled" msgstr "Заплановано" @@ -2032,10 +1890,9 @@ msgstr "30 днів" #: netbox/core/choices.py:102 netbox/core/tables/jobs.py:31 #: netbox/core/tables/tasks.py:80 netbox/extras/tables/tables.py:436 #: netbox/extras/tables/tables.py:742 -#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision.html:23 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:42 netbox/templates/core/rq_task.html:16 -#: netbox/templates/core/rq_task.html:73 +#: netbox/templates/core/rq_task.html:16 netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 #: netbox/templates/extras/journalentry.html:22 @@ -2057,7 +1914,6 @@ msgid "Finished" msgstr "Закінчено" #: netbox/core/constants.py:22 netbox/core/tables/jobs.py:40 -#: netbox/templates/core/job.html:55 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Почато" @@ -2089,13 +1945,12 @@ msgid "Warning" msgstr "Попередження" #: netbox/core/constants.py:33 netbox/netbox/tables/columns.py:589 -#: netbox/templates/core/job.html:26 msgid "Error" msgstr "Помилка" #: netbox/core/data_backends.py:46 netbox/core/tables/plugins.py:54 #: netbox/templates/core/plugin.html:88 -#: netbox/templates/dcim/interface.html:291 +#: netbox/templates/dcim/panels/interface_wireless.html:10 msgid "Local" msgstr "Місцеві" @@ -2154,7 +2009,7 @@ msgid "User name" msgstr "Ім'я користувача" #: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47 -#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2040 +#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2061 #: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386 #: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712 #: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233 @@ -2165,8 +2020,6 @@ msgstr "Ім'я користувача" #: netbox/extras/tables/tables.py:188 netbox/extras/tables/tables.py:319 #: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:520 #: netbox/netbox/preferences.py:46 netbox/netbox/preferences.py:71 -#: netbox/templates/core/datasource.html:42 -#: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 #: netbox/templates/extras/eventrule.html:17 #: netbox/templates/extras/savedfilter.html:25 @@ -2180,7 +2033,7 @@ msgid "Enabled" msgstr "Увімкнено" #: netbox/core/forms/bulk_edit.py:30 netbox/core/forms/filtersets.py:54 -#: netbox/core/tables/data.py:31 netbox/templates/core/datasource.html:50 +#: netbox/core/tables/data.py:31 netbox/core/ui/panels.py:12 msgid "Sync interval" msgstr "Інтервал синхронізації" @@ -2194,17 +2047,17 @@ msgstr "Інтервал синхронізації" msgid "Parameters" msgstr "Параметри" -#: netbox/core/forms/bulk_edit.py:37 netbox/templates/core/datasource.html:72 +#: netbox/core/forms/bulk_edit.py:37 netbox/core/ui/panels.py:22 msgid "Ignore rules" msgstr "Ігнорувати правила" #: netbox/core/forms/filtersets.py:33 netbox/core/forms/model_forms.py:100 -#: netbox/extras/forms/model_forms.py:280 +#: netbox/core/ui/panels.py:7 netbox/extras/forms/model_forms.py:280 #: netbox/extras/forms/model_forms.py:613 #: netbox/extras/forms/model_forms.py:702 #: netbox/extras/forms/model_forms.py:755 netbox/extras/tables/tables.py:230 #: netbox/extras/tables/tables.py:600 netbox/extras/tables/tables.py:630 -#: netbox/extras/tables/tables.py:672 netbox/templates/core/datasource.html:31 +#: netbox/extras/tables/tables.py:672 #: netbox/templates/core/inc/datafile_panel.html:7 #: netbox/templates/extras/configtemplate.html:37 #: netbox/templates/extras/object_render_config.html:19 @@ -2231,15 +2084,14 @@ msgstr "Творчість" #: netbox/extras/forms/filtersets.py:580 netbox/extras/tables/tables.py:283 #: netbox/extras/tables/tables.py:350 netbox/extras/tables/tables.py:376 #: netbox/extras/tables/tables.py:395 netbox/extras/tables/tables.py:427 -#: netbox/extras/tables/tables.py:747 netbox/templates/core/job.html:11 -#: netbox/templates/core/objectchange.html:52 +#: netbox/extras/tables/tables.py:747 #: netbox/templates/extras/tableconfig.html:21 #: netbox/tenancy/tables/contacts.py:84 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Тип об'єкта" #: netbox/core/forms/filtersets.py:95 netbox/core/tables/jobs.py:46 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:61 +#: netbox/core/ui/panels.py:65 netbox/templates/core/rq_task.html:61 msgid "Queue" msgstr "Черга" @@ -2276,11 +2128,10 @@ msgid "Completed before" msgstr "Завершено раніше" #: netbox/core/forms/filtersets.py:141 netbox/core/forms/filtersets.py:170 -#: netbox/dcim/forms/bulk_edit.py:458 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/model_forms.py:336 netbox/extras/forms/filtersets.py:575 -#: netbox/extras/forms/filtersets.py:595 netbox/extras/tables/tables.py:403 -#: netbox/extras/tables/tables.py:443 -#: netbox/templates/core/objectchange.html:36 +#: netbox/core/ui/panels.py:73 netbox/dcim/forms/bulk_edit.py:458 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:362 +#: netbox/extras/forms/filtersets.py:575 netbox/extras/forms/filtersets.py:595 +#: netbox/extras/tables/tables.py:403 netbox/extras/tables/tables.py:443 #: netbox/templates/extras/savedfilter.html:21 #: netbox/templates/extras/tableconfig.html:29 #: netbox/templates/inc/user_menu.html:31 netbox/users/filtersets.py:135 @@ -2293,7 +2144,6 @@ msgstr "Користувач" #: netbox/core/forms/filtersets.py:149 netbox/core/tables/change_logging.py:16 #: netbox/core/tables/jobs.py:72 netbox/extras/tables/tables.py:785 #: netbox/extras/tables/tables.py:840 -#: netbox/templates/core/objectchange.html:32 msgid "Time" msgstr "Час" @@ -2307,21 +2157,19 @@ msgstr "Раніше" #: netbox/core/forms/filtersets.py:163 netbox/core/tables/change_logging.py:30 #: netbox/extras/forms/model_forms.py:490 -#: netbox/templates/core/objectchange.html:46 #: netbox/templates/extras/eventrule.html:71 msgid "Action" msgstr "Дія" #: netbox/core/forms/model_forms.py:55 netbox/core/tables/data.py:57 -#: netbox/templates/core/datafile.html:21 #: netbox/templates/extras/report/base.html:33 #: netbox/templates/extras/script/base.html:32 msgid "Source" msgstr "Джерело" #: netbox/core/forms/model_forms.py:57 -#: netbox/templates/core/datasource.html:14 -#: netbox/templates/core/datasource.html:20 +#: netbox/templates/core/datasource.html:10 +#: netbox/templates/core/datasource.html:16 #: netbox/utilities/templatetags/buttons.py:156 msgid "Sync" msgstr "Синхронізація" @@ -2347,7 +2195,7 @@ msgstr "Потрібно вивантажити файл або вибрати msgid "Rack Elevations" msgstr "Висота стійки" -#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1911 +#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1932 #: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340 #: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144 #: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320 @@ -2490,13 +2338,13 @@ msgid "Config revision #{id}" msgstr "Ревізія конфігурації #{id}" #: netbox/core/models/data.py:45 netbox/dcim/models/cables.py:50 -#: netbox/dcim/models/device_component_templates.py:210 -#: netbox/dcim/models/device_component_templates.py:245 -#: netbox/dcim/models/device_component_templates.py:281 -#: netbox/dcim/models/device_component_templates.py:346 -#: netbox/dcim/models/device_component_templates.py:437 -#: netbox/dcim/models/device_component_templates.py:583 -#: netbox/dcim/models/device_component_templates.py:656 +#: netbox/dcim/models/device_component_templates.py:200 +#: netbox/dcim/models/device_component_templates.py:235 +#: netbox/dcim/models/device_component_templates.py:271 +#: netbox/dcim/models/device_component_templates.py:336 +#: netbox/dcim/models/device_component_templates.py:427 +#: netbox/dcim/models/device_component_templates.py:573 +#: netbox/dcim/models/device_component_templates.py:646 #: netbox/dcim/models/device_components.py:370 #: netbox/dcim/models/device_components.py:397 #: netbox/dcim/models/device_components.py:428 @@ -2510,15 +2358,14 @@ msgstr "Ревізія конфігурації #{id}" msgid "type" msgstr "тип" -#: netbox/core/models/data.py:50 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:183 netbox/extras/tables/tables.py:850 -#: netbox/templates/core/datasource.html:62 -#: netbox/templates/core/plugin.html:66 +#: netbox/core/models/data.py:50 netbox/core/ui/panels.py:17 +#: netbox/extras/choices.py:37 netbox/extras/models/models.py:183 +#: netbox/extras/tables/tables.py:850 netbox/templates/core/plugin.html:66 msgid "URL" msgstr "URL" #: netbox/core/models/data.py:60 -#: netbox/dcim/models/device_component_templates.py:442 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:605 #: netbox/extras/models/models.py:81 netbox/extras/models/models.py:319 #: netbox/extras/models/models.py:507 netbox/extras/models/models.py:586 @@ -2592,7 +2439,7 @@ msgstr "доріжка" msgid "File path relative to the data source's root" msgstr "Шлях до файлу відносно кореня джерела даних" -#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:509 +#: netbox/core/models/data.py:308 netbox/ipam/models/ip.py:519 msgid "size" msgstr "розмір" @@ -2742,27 +2589,24 @@ msgid "Full Name" msgstr "П.І.Б." #: netbox/core/tables/change_logging.py:38 netbox/core/tables/jobs.py:23 -#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:286 -#: netbox/extras/tables/tables.py:379 netbox/extras/tables/tables.py:398 -#: netbox/extras/tables/tables.py:430 netbox/extras/tables/tables.py:514 -#: netbox/extras/tables/tables.py:583 netbox/extras/tables/tables.py:752 -#: netbox/extras/tables/tables.py:793 netbox/extras/tables/tables.py:847 -#: netbox/netbox/tables/tables.py:343 -#: netbox/templates/core/objectchange.html:58 +#: netbox/core/ui/panels.py:83 netbox/extras/choices.py:41 +#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:379 +#: netbox/extras/tables/tables.py:398 netbox/extras/tables/tables.py:430 +#: netbox/extras/tables/tables.py:514 netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:752 netbox/extras/tables/tables.py:793 +#: netbox/extras/tables/tables.py:847 netbox/netbox/tables/tables.py:343 #: netbox/templates/extras/eventrule.html:78 #: netbox/templates/extras/journalentry.html:18 #: netbox/tenancy/tables/contacts.py:87 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "Об'єкт" -#: netbox/core/tables/change_logging.py:43 -#: netbox/templates/core/objectchange.html:74 +#: netbox/core/tables/change_logging.py:43 netbox/core/ui/panels.py:89 msgid "Request ID" msgstr "Ідентифікатор запиту" #: netbox/core/tables/change_logging.py:46 netbox/core/tables/jobs.py:79 #: netbox/extras/tables/tables.py:796 netbox/extras/tables/tables.py:853 -#: netbox/templates/core/objectchange.html:68 msgid "Message" msgstr "Повідомлення" @@ -2775,11 +2619,11 @@ msgstr "Є активним" msgid "Last Synced" msgstr "Востаннє синхронізовано" -#: netbox/core/tables/data.py:37 netbox/templates/core/datasource.html:118 +#: netbox/core/tables/data.py:37 msgid "Files" msgstr "Файли" -#: netbox/core/tables/data.py:61 netbox/templates/core/datafile.html:25 +#: netbox/core/tables/data.py:61 msgid "Path" msgstr "Шлях" @@ -2803,7 +2647,7 @@ msgstr "Ідентифікатор" msgid "Interval" msgstr "Інтервал" -#: netbox/core/tables/jobs.py:49 +#: netbox/core/tables/jobs.py:49 netbox/core/views.py:255 msgid "Log Entries" msgstr "Записи журналу" @@ -2823,7 +2667,7 @@ msgstr "Немає записів журналу" msgid "Version" msgstr "Версія" -#: netbox/core/tables/plugins.py:21 netbox/templates/core/datafile.html:32 +#: netbox/core/tables/plugins.py:21 msgid "Last Updated" msgstr "Останнє оновлення" @@ -2919,7 +2763,61 @@ msgstr "PID" msgid "No workers found" msgstr "Робочих процессів не знайдено" -#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:447 +#: netbox/core/ui/panels.py:13 +msgid "Last synced" +msgstr "Востаннє синхронізовано" + +#: netbox/core/ui/panels.py:29 +msgid "Backend" +msgstr "Бекенд" + +#: netbox/core/ui/panels.py:33 netbox/extras/tables/tables.py:234 +#: netbox/extras/tables/tables.py:604 netbox/extras/tables/tables.py:634 +#: netbox/extras/tables/tables.py:676 +#: netbox/templates/core/inc/datafile_panel.html:4 +#: netbox/templates/core/inc/datafile_panel.html:17 +#: netbox/templates/extras/configtemplate.html:47 +#: netbox/templates/extras/object_render_config.html:23 +#: netbox/templates/generic/bulk_import.html:35 +msgid "Data File" +msgstr "Файл даних" + +#: netbox/core/ui/panels.py:38 +msgid "SHA256 hash" +msgstr "Хеш SHA256" + +#: netbox/core/ui/panels.py:43 +msgid "Content" +msgstr "Зміст" + +#: netbox/core/ui/panels.py:47 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 +msgid "Job" +msgstr "Завдання" + +#: netbox/core/ui/panels.py:50 netbox/core/ui/panels.py:79 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 +#: netbox/extras/forms/filtersets.py:335 +#: netbox/extras/forms/model_forms.py:338 +#: netbox/extras/forms/model_forms.py:398 +#: netbox/extras/forms/model_forms.py:435 +#: netbox/tenancy/forms/filtersets.py:121 +msgid "Object type" +msgstr "Тип об'єкта" + +#: netbox/core/ui/panels.py:56 +msgid "Created by" +msgstr "Створено" + +#: netbox/core/ui/panels.py:60 +msgid "Scheduling" +msgstr "Планування" + +#: netbox/core/ui/panels.py:69 netbox/users/ui/panels.py:53 +msgid "Change" +msgstr "Змінити" + +#: netbox/core/utils.py:85 netbox/core/utils.py:151 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Завдання {job_id} не знайдено" @@ -2929,55 +2827,63 @@ msgstr "Завдання {job_id} не знайдено" msgid "Job {id} not found." msgstr "Завдання {id} не знайдено." -#: netbox/core/views.py:95 +#: netbox/core/views.py:125 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Завдання у черзі #{id} синхронізовано з {datasource}" -#: netbox/core/views.py:199 netbox/templates/extras/htmx/script_result.html:43 +#: netbox/core/views.py:237 netbox/extras/forms/filtersets.py:179 +#: netbox/extras/forms/filtersets.py:380 netbox/extras/forms/filtersets.py:403 +#: netbox/extras/forms/filtersets.py:499 +#: netbox/extras/forms/model_forms.py:696 +#: netbox/templates/extras/eventrule.html:84 +msgid "Data" +msgstr "Дані" + +#: netbox/core/views.py:248 netbox/templates/extras/htmx/script_result.html:43 msgid "Log" msgstr "Журнал" -#: netbox/core/views.py:383 +#: netbox/core/views.py:467 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Відновлена версія конфігурації #{id}" -#: netbox/core/views.py:486 +#: netbox/core/views.py:570 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Завдання {id} було видалено." -#: netbox/core/views.py:488 +#: netbox/core/views.py:572 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Помилка при видаленні завдання {id}: {error}" -#: netbox/core/views.py:497 +#: netbox/core/views.py:581 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Завдання {id} було знову поставлено в чергу." -#: netbox/core/views.py:506 +#: netbox/core/views.py:590 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Завдання {id} був поставлений у чергу." -#: netbox/core/views.py:515 +#: netbox/core/views.py:599 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Завдання {id} було зупинено." -#: netbox/core/views.py:517 +#: netbox/core/views.py:601 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Не вдалося зупинити завдання {id}" -#: netbox/core/views.py:671 +#: netbox/core/views.py:755 msgid "Plugins catalog could not be loaded" msgstr "Не вдалося завантажити каталог плагінів" -#: netbox/core/views.py:707 +#: netbox/core/views.py:791 #, python-brace-format msgid "Plugin {name} not found" msgstr "Плагін {name} не знайдено" @@ -3000,7 +2906,7 @@ msgstr "Режим інтерфейсу не підтримує теговані msgid "Position (U)" msgstr "Позиція (U)" -#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:47 +#: netbox/dcim/api/serializers_/racks.py:113 netbox/dcim/ui/panels.py:49 msgid "Facility ID" msgstr "Ідентифікатор об'єкта" @@ -3027,8 +2933,8 @@ msgid "Staging" msgstr "Підготовка" #: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208 -#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1934 -#: netbox/dcim/choices.py:2083 netbox/virtualization/choices.py:23 +#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1955 +#: netbox/dcim/choices.py:2104 netbox/virtualization/choices.py:23 #: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282 msgid "Decommissioning" msgstr "Виведення з експлуатації" @@ -3094,7 +3000,7 @@ msgstr "Застарілий" msgid "Millimeters" msgstr "Міліметри" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1956 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1977 msgid "Inches" msgstr "Дюйми" @@ -3122,21 +3028,17 @@ msgstr "Несвіжі" #: netbox/dcim/forms/bulk_import.py:1211 netbox/dcim/forms/filtersets.py:265 #: netbox/dcim/forms/filtersets.py:780 netbox/dcim/forms/filtersets.py:796 #: netbox/dcim/forms/model_forms.py:93 netbox/dcim/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:188 netbox/dcim/forms/model_forms.py:514 -#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1709 +#: netbox/dcim/forms/model_forms.py:214 netbox/dcim/forms/model_forms.py:540 +#: netbox/dcim/forms/model_forms.py:561 netbox/dcim/forms/model_forms.py:1252 +#: netbox/dcim/forms/model_forms.py:1735 #: netbox/dcim/forms/object_import.py:177 netbox/dcim/tables/devices.py:702 #: netbox/dcim/tables/devices.py:737 netbox/dcim/tables/devices.py:965 #: netbox/dcim/tables/devices.py:1052 netbox/dcim/tables/devices.py:1205 #: netbox/ipam/forms/bulk_import.py:601 netbox/ipam/forms/model_forms.py:758 #: netbox/ipam/tables/fhrp.py:56 netbox/ipam/tables/ip.py:329 #: netbox/ipam/tables/services.py:42 netbox/netbox/tables/tables.py:329 -#: netbox/netbox/ui/panels.py:206 netbox/templates/dcim/interface.html:113 -#: netbox/templates/ipam/service.html:30 -#: netbox/templates/tenancy/contactgroup.html:29 -#: netbox/templates/tenancy/tenantgroup.html:37 -#: netbox/tenancy/forms/bulk_edit.py:33 netbox/tenancy/forms/bulk_edit.py:62 -#: netbox/tenancy/forms/bulk_import.py:31 +#: netbox/netbox/ui/panels.py:207 netbox/tenancy/forms/bulk_edit.py:33 +#: netbox/tenancy/forms/bulk_edit.py:62 netbox/tenancy/forms/bulk_import.py:31 #: netbox/tenancy/forms/bulk_import.py:64 #: netbox/tenancy/forms/model_forms.py:26 #: netbox/tenancy/forms/model_forms.py:67 @@ -3170,7 +3072,7 @@ msgid "Rear" msgstr "Ззаду" #: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258 -#: netbox/dcim/choices.py:2081 netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:2102 netbox/virtualization/choices.py:47 msgid "Staged" msgstr "Підготовлено" @@ -3203,7 +3105,7 @@ msgid "Top to bottom" msgstr "Зверху вниз" #: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280 -#: netbox/dcim/choices.py:1566 +#: netbox/dcim/choices.py:1587 msgid "Passive" msgstr "Пасивний" @@ -3232,8 +3134,8 @@ msgid "Proprietary" msgstr "Пропрієтарний" #: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853 -#: netbox/dcim/choices.py:1478 netbox/dcim/choices.py:1480 -#: netbox/dcim/choices.py:1716 netbox/dcim/choices.py:1718 +#: netbox/dcim/choices.py:1499 netbox/dcim/choices.py:1501 +#: netbox/dcim/choices.py:1737 netbox/dcim/choices.py:1739 #: netbox/netbox/navigation/menu.py:212 msgid "Other" msgstr "Інше" @@ -3246,348 +3148,350 @@ msgstr "ITA/Міжнародні" msgid "Physical" msgstr "Фізичний" -#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1153 +#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1162 msgid "Virtual" msgstr "Віртуальний" -#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1355 +#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 -#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1125 -#: netbox/dcim/forms/model_forms.py:1589 netbox/netbox/navigation/menu.py:150 -#: netbox/netbox/navigation/menu.py:154 -#: netbox/templates/dcim/interface.html:285 +#: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1151 +#: netbox/dcim/forms/model_forms.py:1615 netbox/dcim/ui/panels.py:546 +#: netbox/netbox/navigation/menu.py:150 netbox/netbox/navigation/menu.py:154 msgid "Wireless" msgstr "Бездротові мережі" -#: netbox/dcim/choices.py:1151 +#: netbox/dcim/choices.py:1160 msgid "Virtual interfaces" msgstr "Віртуальні інтерфейси" -#: netbox/dcim/choices.py:1154 netbox/dcim/forms/bulk_edit.py:1399 -#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1107 -#: netbox/dcim/tables/devices.py:741 netbox/templates/dcim/interface.html:117 +#: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 +#: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1133 +#: netbox/dcim/tables/devices.py:741 #: netbox/virtualization/forms/bulk_edit.py:177 #: netbox/virtualization/forms/bulk_import.py:171 #: netbox/virtualization/tables/virtualmachines.py:137 msgid "Bridge" msgstr "Міст" -#: netbox/dcim/choices.py:1155 +#: netbox/dcim/choices.py:1164 msgid "Link Aggregation Group (LAG)" msgstr "Група агрегації каналів (LAG)" -#: netbox/dcim/choices.py:1159 +#: netbox/dcim/choices.py:1168 msgid "FastEthernet (100 Mbps)" msgstr "Швидкий Ethernet (100 Мбіт/с)" -#: netbox/dcim/choices.py:1168 +#: netbox/dcim/choices.py:1177 msgid "GigabitEthernet (1 Gbps)" msgstr "ГігабітEthernet (1 Гбіт/с)" -#: netbox/dcim/choices.py:1186 +#: netbox/dcim/choices.py:1195 msgid "2.5/5 Gbps Ethernet" msgstr "2,5/5 Гбіт/с Ethernet" -#: netbox/dcim/choices.py:1193 +#: netbox/dcim/choices.py:1202 msgid "10 Gbps Ethernet" msgstr "10 Гбіт/с Ethernet" -#: netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1218 msgid "25 Gbps Ethernet" msgstr "25 Гбіт/с Ethernet" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1228 msgid "40 Gbps Ethernet" msgstr "40 Гбіт/с Ethernet" -#: netbox/dcim/choices.py:1230 +#: netbox/dcim/choices.py:1239 msgid "50 Gbps Ethernet" msgstr "50 Гбіт/с Ethernet" -#: netbox/dcim/choices.py:1240 +#: netbox/dcim/choices.py:1249 msgid "100 Gbps Ethernet" msgstr "100 Гбіт/с Ethernet" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1270 msgid "200 Gbps Ethernet" msgstr "200 Гбіт/с Ethernet" -#: netbox/dcim/choices.py:1275 +#: netbox/dcim/choices.py:1284 msgid "400 Gbps Ethernet" msgstr "400 Гбіт/с Ethernet" -#: netbox/dcim/choices.py:1293 +#: netbox/dcim/choices.py:1302 msgid "800 Gbps Ethernet" msgstr "800 Гбіт/с Ethernet" -#: netbox/dcim/choices.py:1302 +#: netbox/dcim/choices.py:1311 +msgid "1.6 Tbps Ethernet" +msgstr "1, 6 Тбіт/с Ethernet" + +#: netbox/dcim/choices.py:1319 msgid "Pluggable transceivers" msgstr "Приймачі, що підключаються" -#: netbox/dcim/choices.py:1339 +#: netbox/dcim/choices.py:1359 msgid "Backplane Ethernet" msgstr "Передня панель Ethernet" -#: netbox/dcim/choices.py:1371 +#: netbox/dcim/choices.py:1392 msgid "Cellular" msgstr "Стільниковий" -#: netbox/dcim/choices.py:1423 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/choices.py:1444 netbox/dcim/forms/filtersets.py:425 #: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112 #: netbox/dcim/forms/filtersets.py:1910 -#: netbox/templates/dcim/inventoryitem.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:66 msgid "Serial" msgstr "Серійний" -#: netbox/dcim/choices.py:1438 +#: netbox/dcim/choices.py:1459 msgid "Coaxial" msgstr "Коаксіальний" -#: netbox/dcim/choices.py:1459 +#: netbox/dcim/choices.py:1480 msgid "Stacking" msgstr "Стекований" -#: netbox/dcim/choices.py:1511 +#: netbox/dcim/choices.py:1532 msgid "Half" msgstr "Половинний" -#: netbox/dcim/choices.py:1512 +#: netbox/dcim/choices.py:1533 msgid "Full" msgstr "Повний" -#: netbox/dcim/choices.py:1513 netbox/netbox/preferences.py:32 +#: netbox/dcim/choices.py:1534 netbox/netbox/preferences.py:32 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Авто" -#: netbox/dcim/choices.py:1525 +#: netbox/dcim/choices.py:1546 msgid "Access" msgstr "Доступ" -#: netbox/dcim/choices.py:1526 netbox/ipam/tables/vlans.py:148 +#: netbox/dcim/choices.py:1547 netbox/ipam/tables/vlans.py:148 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "З мітками" -#: netbox/dcim/choices.py:1527 +#: netbox/dcim/choices.py:1548 msgid "Tagged (All)" msgstr "З мітками (Усі)" -#: netbox/dcim/choices.py:1528 netbox/templates/ipam/vlan_edit.html:26 +#: netbox/dcim/choices.py:1549 netbox/templates/ipam/vlan_edit.html:26 msgid "Q-in-Q (802.1ad)" msgstr "К-в-кв. (802.1ad)" -#: netbox/dcim/choices.py:1557 +#: netbox/dcim/choices.py:1578 msgid "IEEE Standard" msgstr "Стандарт IEEE" -#: netbox/dcim/choices.py:1568 +#: netbox/dcim/choices.py:1589 msgid "Passive 24V (2-pair)" msgstr "Пасивний 24В (2-парний)" -#: netbox/dcim/choices.py:1569 +#: netbox/dcim/choices.py:1590 msgid "Passive 24V (4-pair)" msgstr "Пасивний 24В (4-парний)" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1591 msgid "Passive 48V (2-pair)" msgstr "Пасивний 48В (2-парний)" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1592 msgid "Passive 48V (4-pair)" msgstr "Пасивний 48В (4-парний)" -#: netbox/dcim/choices.py:1644 +#: netbox/dcim/choices.py:1665 msgid "Copper" msgstr "Мідний" -#: netbox/dcim/choices.py:1667 +#: netbox/dcim/choices.py:1688 msgid "Fiber Optic" msgstr "Волоконно-оптичний" -#: netbox/dcim/choices.py:1703 netbox/dcim/choices.py:1917 +#: netbox/dcim/choices.py:1724 netbox/dcim/choices.py:1938 msgid "USB" msgstr "USB" -#: netbox/dcim/choices.py:1759 +#: netbox/dcim/choices.py:1780 msgid "Single" msgstr "Одномісний" -#: netbox/dcim/choices.py:1761 +#: netbox/dcim/choices.py:1782 msgid "1C1P" msgstr "1С1П" -#: netbox/dcim/choices.py:1762 +#: netbox/dcim/choices.py:1783 msgid "1C2P" msgstr "1С2П" -#: netbox/dcim/choices.py:1763 +#: netbox/dcim/choices.py:1784 msgid "1C4P" msgstr "1С4П" -#: netbox/dcim/choices.py:1764 +#: netbox/dcim/choices.py:1785 msgid "1C6P" msgstr "1С6П" -#: netbox/dcim/choices.py:1765 +#: netbox/dcim/choices.py:1786 msgid "1C8P" msgstr "1С8П" -#: netbox/dcim/choices.py:1766 +#: netbox/dcim/choices.py:1787 msgid "1C12P" msgstr "1С12П" -#: netbox/dcim/choices.py:1767 +#: netbox/dcim/choices.py:1788 msgid "1C16P" msgstr "1С16П" -#: netbox/dcim/choices.py:1771 +#: netbox/dcim/choices.py:1792 msgid "Trunk" msgstr "Стовбур" -#: netbox/dcim/choices.py:1773 +#: netbox/dcim/choices.py:1794 msgid "2C1P trunk" msgstr "2C1P багажник" -#: netbox/dcim/choices.py:1774 +#: netbox/dcim/choices.py:1795 msgid "2C2P trunk" msgstr "2C2P багажник" -#: netbox/dcim/choices.py:1775 +#: netbox/dcim/choices.py:1796 msgid "2C4P trunk" msgstr "2C4P багажник" -#: netbox/dcim/choices.py:1776 +#: netbox/dcim/choices.py:1797 msgid "2C4P trunk (shuffle)" msgstr "Багажник 2C4P (перемішування)" -#: netbox/dcim/choices.py:1777 +#: netbox/dcim/choices.py:1798 msgid "2C6P trunk" msgstr "2C6P багажник" -#: netbox/dcim/choices.py:1778 +#: netbox/dcim/choices.py:1799 msgid "2C8P trunk" msgstr "2C8P багажник" -#: netbox/dcim/choices.py:1779 +#: netbox/dcim/choices.py:1800 msgid "2C12P trunk" msgstr "2C12P багажник" -#: netbox/dcim/choices.py:1780 +#: netbox/dcim/choices.py:1801 msgid "4C1P trunk" msgstr "4C1P багажник" -#: netbox/dcim/choices.py:1781 +#: netbox/dcim/choices.py:1802 msgid "4C2P trunk" msgstr "4C2P багажник" -#: netbox/dcim/choices.py:1782 +#: netbox/dcim/choices.py:1803 msgid "4C4P trunk" msgstr "4C4P багажник" -#: netbox/dcim/choices.py:1783 +#: netbox/dcim/choices.py:1804 msgid "4C4P trunk (shuffle)" msgstr "Багажник 4C4P (перемішування)" -#: netbox/dcim/choices.py:1784 +#: netbox/dcim/choices.py:1805 msgid "4C6P trunk" msgstr "4C6P багажник" -#: netbox/dcim/choices.py:1785 +#: netbox/dcim/choices.py:1806 msgid "4C8P trunk" msgstr "4C8P багажник" -#: netbox/dcim/choices.py:1786 +#: netbox/dcim/choices.py:1807 msgid "8C4P trunk" msgstr "8C4P багажник" -#: netbox/dcim/choices.py:1790 +#: netbox/dcim/choices.py:1811 msgid "Breakout" msgstr "прорив" -#: netbox/dcim/choices.py:1792 +#: netbox/dcim/choices.py:1813 msgid "1C4P:4C1P breakout" msgstr "1С4П: 4С1П прорив" -#: netbox/dcim/choices.py:1793 +#: netbox/dcim/choices.py:1814 msgid "1C6P:6C1P breakout" msgstr "1С6П: 6С1П прорив" -#: netbox/dcim/choices.py:1794 +#: netbox/dcim/choices.py:1815 msgid "2C4P:8C1P breakout (shuffle)" msgstr "2C4P: 8C1P прорив (перемішування)" -#: netbox/dcim/choices.py:1852 +#: netbox/dcim/choices.py:1873 msgid "Copper - Twisted Pair (UTP/STP)" msgstr "Мідь - кручена пара (UTP/STP)" -#: netbox/dcim/choices.py:1866 +#: netbox/dcim/choices.py:1887 msgid "Copper - Twinax (DAC)" msgstr "Мідь - Твінакс (ЦАП)" -#: netbox/dcim/choices.py:1873 +#: netbox/dcim/choices.py:1894 msgid "Copper - Coaxial" msgstr "Мідь - Коаксіальна" -#: netbox/dcim/choices.py:1888 +#: netbox/dcim/choices.py:1909 msgid "Fiber - Multimode" msgstr "Волокно - багатомодовий" -#: netbox/dcim/choices.py:1899 +#: netbox/dcim/choices.py:1920 msgid "Fiber - Single-mode" msgstr "Волокно - одномодовий" -#: netbox/dcim/choices.py:1907 +#: netbox/dcim/choices.py:1928 msgid "Fiber - Other" msgstr "Волокно - Інше" -#: netbox/dcim/choices.py:1932 netbox/dcim/forms/filtersets.py:1402 +#: netbox/dcim/choices.py:1953 netbox/dcim/forms/filtersets.py:1402 msgid "Connected" msgstr "Підключений" -#: netbox/dcim/choices.py:1951 netbox/netbox/choices.py:177 +#: netbox/dcim/choices.py:1972 netbox/netbox/choices.py:177 msgid "Kilometers" msgstr "Кілометри" -#: netbox/dcim/choices.py:1952 netbox/netbox/choices.py:178 +#: netbox/dcim/choices.py:1973 netbox/netbox/choices.py:178 #: netbox/templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "Метри" -#: netbox/dcim/choices.py:1953 +#: netbox/dcim/choices.py:1974 msgid "Centimeters" msgstr "Сантиметри" -#: netbox/dcim/choices.py:1954 netbox/netbox/choices.py:179 +#: netbox/dcim/choices.py:1975 netbox/netbox/choices.py:179 msgid "Miles" msgstr "Милі" -#: netbox/dcim/choices.py:1955 netbox/netbox/choices.py:180 +#: netbox/dcim/choices.py:1976 netbox/netbox/choices.py:180 #: netbox/templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "Фути" -#: netbox/dcim/choices.py:2003 +#: netbox/dcim/choices.py:2024 msgid "Redundant" msgstr "Надлишковий" -#: netbox/dcim/choices.py:2024 +#: netbox/dcim/choices.py:2045 msgid "Single phase" msgstr "Однофазний" -#: netbox/dcim/choices.py:2025 +#: netbox/dcim/choices.py:2046 msgid "Three-phase" msgstr "Трифазний" -#: netbox/dcim/choices.py:2041 netbox/extras/choices.py:53 +#: netbox/dcim/choices.py:2062 netbox/extras/choices.py:53 #: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70 #: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Вимкнений" -#: netbox/dcim/choices.py:2042 +#: netbox/dcim/choices.py:2063 msgid "Faulty" msgstr "Несправний" @@ -3869,8 +3773,9 @@ msgstr "Це повна глибина" #: netbox/dcim/filtersets.py:1323 netbox/dcim/forms/filtersets.py:920 #: netbox/dcim/forms/filtersets.py:1634 netbox/dcim/forms/filtersets.py:1979 -#: netbox/dcim/forms/model_forms.py:1915 netbox/dcim/models/devices.py:1313 -#: netbox/dcim/models/devices.py:1336 netbox/virtualization/filtersets.py:230 +#: netbox/dcim/forms/model_forms.py:1941 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1336 netbox/dcim/ui/panels.py:366 +#: netbox/dcim/ui/panels.py:504 netbox/virtualization/filtersets.py:230 #: netbox/virtualization/filtersets.py:318 #: netbox/virtualization/forms/filtersets.py:191 #: netbox/virtualization/forms/filtersets.py:245 @@ -3958,7 +3863,6 @@ msgstr "Віртуальне шасі (ідентифікатор)" #: netbox/dcim/forms/object_create.py:329 netbox/dcim/tables/devices.py:215 #: netbox/netbox/navigation/menu.py:82 #: netbox/templates/dcim/device_edit.html:95 -#: netbox/templates/dcim/virtualchassis.html:10 #: netbox/templates/dcim/virtualchassis_edit.html:28 msgid "Virtual Chassis" msgstr "Віртуальне шасі" @@ -4018,7 +3922,7 @@ msgstr "призначається" msgid "Is primary" msgstr "Є первинним" -#: netbox/dcim/filtersets.py:2060 netbox/templates/dcim/interface.html:81 +#: netbox/dcim/filtersets.py:2060 #: netbox/virtualization/forms/model_forms.py:386 #: netbox/virtualization/ui/panels.py:62 msgid "802.1Q Mode" @@ -4035,27 +3939,25 @@ msgstr "Призначений VID" #: netbox/dcim/filtersets.py:2074 netbox/dcim/forms/bulk_edit.py:1512 #: netbox/dcim/forms/bulk_import.py:1034 netbox/dcim/forms/filtersets.py:1687 -#: netbox/dcim/forms/model_forms.py:1555 +#: netbox/dcim/forms/model_forms.py:1581 #: netbox/dcim/models/device_components.py:867 -#: netbox/dcim/tables/devices.py:667 netbox/ipam/filtersets.py:360 -#: netbox/ipam/filtersets.py:372 netbox/ipam/filtersets.py:511 -#: netbox/ipam/filtersets.py:618 netbox/ipam/filtersets.py:630 -#: netbox/ipam/forms/bulk_edit.py:190 netbox/ipam/forms/bulk_edit.py:240 -#: netbox/ipam/forms/bulk_edit.py:281 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:248 netbox/ipam/forms/bulk_import.py:284 -#: netbox/ipam/forms/filtersets.py:70 netbox/ipam/forms/filtersets.py:194 -#: netbox/ipam/forms/filtersets.py:348 netbox/ipam/forms/model_forms.py:68 -#: netbox/ipam/forms/model_forms.py:203 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:303 netbox/ipam/forms/model_forms.py:466 -#: netbox/ipam/forms/model_forms.py:480 netbox/ipam/forms/model_forms.py:494 -#: netbox/ipam/models/ip.py:224 netbox/ipam/models/ip.py:518 -#: netbox/ipam/models/ip.py:747 netbox/ipam/models/vrfs.py:61 -#: netbox/ipam/tables/ip.py:187 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:311 netbox/ipam/tables/ip.py:413 -#: netbox/templates/dcim/interface.html:170 -#: netbox/templates/ipam/ipaddress.html:18 -#: netbox/templates/ipam/iprange.html:47 netbox/templates/ipam/prefix.html:19 -#: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 +#: netbox/dcim/tables/devices.py:667 netbox/dcim/ui/panels.py:507 +#: netbox/ipam/filtersets.py:360 netbox/ipam/filtersets.py:372 +#: netbox/ipam/filtersets.py:511 netbox/ipam/filtersets.py:618 +#: netbox/ipam/filtersets.py:630 netbox/ipam/forms/bulk_edit.py:190 +#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:281 +#: netbox/ipam/forms/bulk_import.py:163 netbox/ipam/forms/bulk_import.py:248 +#: netbox/ipam/forms/bulk_import.py:284 netbox/ipam/forms/filtersets.py:70 +#: netbox/ipam/forms/filtersets.py:194 netbox/ipam/forms/filtersets.py:348 +#: netbox/ipam/forms/model_forms.py:68 netbox/ipam/forms/model_forms.py:203 +#: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:303 +#: netbox/ipam/forms/model_forms.py:466 netbox/ipam/forms/model_forms.py:480 +#: netbox/ipam/forms/model_forms.py:494 netbox/ipam/models/ip.py:224 +#: netbox/ipam/models/ip.py:528 netbox/ipam/models/ip.py:757 +#: netbox/ipam/models/vrfs.py:61 netbox/ipam/tables/ip.py:187 +#: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:311 +#: netbox/ipam/tables/ip.py:413 netbox/ipam/ui/panels.py:102 +#: netbox/ipam/ui/panels.py:111 netbox/ipam/ui/panels.py:139 #: netbox/virtualization/forms/bulk_edit.py:226 #: netbox/virtualization/forms/bulk_import.py:218 #: netbox/virtualization/forms/filtersets.py:250 @@ -4078,9 +3980,9 @@ msgid "L2VPN (ID)" msgstr "L2VPN (ідентифікатор)" #: netbox/dcim/filtersets.py:2092 netbox/dcim/forms/filtersets.py:1692 -#: netbox/dcim/tables/devices.py:607 netbox/ipam/filtersets.py:1087 -#: netbox/ipam/forms/filtersets.py:613 netbox/ipam/tables/vlans.py:116 -#: netbox/templates/dcim/interface.html:104 netbox/templates/ipam/vlan.html:82 +#: netbox/dcim/tables/devices.py:607 netbox/dcim/ui/panels.py:487 +#: netbox/ipam/filtersets.py:1087 netbox/ipam/forms/filtersets.py:613 +#: netbox/ipam/tables/vlans.py:116 netbox/ipam/ui/panels.py:206 #: netbox/virtualization/forms/filtersets.py:255 #: netbox/vpn/forms/bulk_import.py:285 netbox/vpn/forms/filtersets.py:268 #: netbox/vpn/forms/model_forms.py:407 netbox/vpn/forms/model_forms.py:425 @@ -4094,10 +3996,9 @@ msgid "VLAN Translation Policy (ID)" msgstr "Політика перекладу VLAN (ідентифікатор)" #: netbox/dcim/filtersets.py:2105 netbox/dcim/forms/filtersets.py:1658 -#: netbox/dcim/forms/model_forms.py:1572 +#: netbox/dcim/forms/model_forms.py:1598 #: netbox/dcim/models/device_components.py:668 #: netbox/ipam/forms/filtersets.py:531 netbox/ipam/forms/model_forms.py:703 -#: netbox/templates/ipam/vlantranslationpolicy.html:11 #: netbox/virtualization/forms/bulk_edit.py:231 #: netbox/virtualization/forms/filtersets.py:265 #: netbox/virtualization/forms/model_forms.py:364 @@ -4138,9 +4039,6 @@ msgid "LAG interface (ID)" msgstr "Інтерфейс LAG (ідентифікатор)" #: netbox/dcim/filtersets.py:2185 netbox/dcim/tables/devices.py:1194 -#: netbox/templates/dcim/interface.html:149 -#: netbox/templates/dcim/macaddress.html:11 -#: netbox/templates/dcim/macaddress.html:14 #: netbox/virtualization/ui/panels.py:71 msgid "MAC Address" msgstr "MAC-адреса" @@ -4149,15 +4047,14 @@ msgstr "MAC-адреса" msgid "Primary MAC address (ID)" msgstr "Основна MAC-адреса (ідентифікатор)" -#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1559 +#: netbox/dcim/filtersets.py:2198 netbox/dcim/forms/model_forms.py:1585 #: netbox/virtualization/filtersets.py:331 #: netbox/virtualization/forms/model_forms.py:302 msgid "Primary MAC address" msgstr "Основна MAC-адреса" #: netbox/dcim/filtersets.py:2225 netbox/dcim/filtersets.py:2237 -#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1895 -#: netbox/templates/dcim/virtualdevicecontext.html:15 +#: netbox/dcim/forms/filtersets.py:1594 netbox/dcim/forms/model_forms.py:1921 msgid "Virtual Device Context" msgstr "Контекст віртуального пристрою" @@ -4216,6 +4113,7 @@ msgstr "Панель живлення (ідентифікатор)" #: netbox/netbox/forms/bulk_import.py:27 netbox/netbox/forms/mixins.py:131 #: netbox/netbox/tables/columns.py:495 #: netbox/templates/circuits/inc/circuit_termination.html:29 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:29 #: netbox/templates/generic/bulk_edit.html:78 #: netbox/templates/inc/panels/tags.html:5 #: netbox/utilities/forms/fields/fields.py:101 @@ -4223,14 +4121,12 @@ msgid "Tags" msgstr "Мітки" #: netbox/dcim/forms/bulk_create.py:116 netbox/dcim/forms/filtersets.py:1842 -#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:595 -#: netbox/dcim/forms/model_forms.py:661 netbox/dcim/forms/object_create.py:155 +#: netbox/dcim/forms/filtersets.py:1855 netbox/dcim/forms/model_forms.py:621 +#: netbox/dcim/forms/model_forms.py:687 netbox/dcim/forms/object_create.py:155 #: netbox/dcim/forms/object_create.py:256 netbox/dcim/tables/devices.py:169 -#: netbox/templates/dcim/frontport.html:132 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/panels/front_port_mappings.html:9 +#: netbox/templates/dcim/panels/rear_port_mappings.html:9 #: netbox/templates/dcim/panels/virtual_chassis_members.html:9 -#: netbox/templates/dcim/rearport.html:126 -#: netbox/templates/dcim/virtualchassis.html:56 #: netbox/templates/dcim/virtualchassis_edit.html:67 msgid "Position" msgstr "Позиція" @@ -4261,7 +4157,7 @@ msgid "Contact E-mail" msgstr "Контактна адреса електронної пошти" #: netbox/dcim/forms/bulk_edit.py:152 netbox/dcim/forms/bulk_import.py:138 -#: netbox/dcim/forms/model_forms.py:147 +#: netbox/dcim/forms/model_forms.py:157 msgid "Time zone" msgstr "Часовий пояс" @@ -4276,17 +4172,16 @@ msgstr "Часовий пояс" #: netbox/dcim/forms/filtersets.py:546 netbox/dcim/forms/filtersets.py:695 #: netbox/dcim/forms/filtersets.py:801 netbox/dcim/forms/filtersets.py:884 #: netbox/dcim/forms/filtersets.py:1096 netbox/dcim/forms/filtersets.py:1907 -#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:223 -#: netbox/dcim/forms/model_forms.py:354 netbox/dcim/forms/model_forms.py:366 -#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:540 -#: netbox/dcim/forms/model_forms.py:1239 netbox/dcim/forms/model_forms.py:1722 +#: netbox/dcim/forms/filtersets.py:1947 netbox/dcim/forms/model_forms.py:249 +#: netbox/dcim/forms/model_forms.py:380 netbox/dcim/forms/model_forms.py:392 +#: netbox/dcim/forms/model_forms.py:462 netbox/dcim/forms/model_forms.py:566 +#: netbox/dcim/forms/model_forms.py:1265 netbox/dcim/forms/model_forms.py:1748 #: netbox/dcim/forms/object_import.py:188 netbox/dcim/tables/devices.py:101 #: netbox/dcim/tables/devices.py:176 netbox/dcim/tables/devices.py:1035 #: netbox/dcim/tables/devicetypes.py:87 netbox/dcim/tables/devicetypes.py:322 #: netbox/dcim/tables/modules.py:47 netbox/dcim/tables/modules.py:90 #: netbox/dcim/tables/racks.py:51 netbox/dcim/tables/racks.py:121 -#: netbox/templates/dcim/inventoryitem.html:48 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/panels/installed_module.html:13 #: netbox/templates/dcim/panels/module_type.html:7 msgid "Manufacturer" msgstr "Виробник" @@ -4311,7 +4206,7 @@ msgid "Height (U)" msgstr "Висота (U)" #: netbox/dcim/forms/bulk_edit.py:244 netbox/dcim/forms/bulk_edit.py:387 -#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:39 +#: netbox/dcim/forms/filtersets.py:309 netbox/dcim/ui/panels.py:41 msgid "Descending units" msgstr "Юніти у низхідному порядку" @@ -4345,10 +4240,10 @@ msgstr "Глибина монтажу" #: netbox/dcim/forms/filtersets.py:362 netbox/dcim/forms/filtersets.py:441 #: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:651 #: netbox/dcim/forms/filtersets.py:683 netbox/dcim/forms/filtersets.py:755 -#: netbox/dcim/forms/model_forms.py:237 netbox/dcim/forms/model_forms.py:318 +#: netbox/dcim/forms/model_forms.py:263 netbox/dcim/forms/model_forms.py:344 #: netbox/dcim/tables/devicetypes.py:110 netbox/dcim/tables/modules.py:55 #: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:162 -#: netbox/dcim/views.py:891 netbox/dcim/views.py:1019 +#: netbox/dcim/views.py:893 netbox/dcim/views.py:1021 #: netbox/extras/forms/bulk_edit.py:57 netbox/extras/forms/bulk_edit.py:137 #: netbox/extras/forms/bulk_edit.py:191 netbox/extras/forms/bulk_edit.py:219 #: netbox/extras/forms/bulk_edit.py:315 netbox/extras/forms/bulk_edit.py:341 @@ -4359,7 +4254,7 @@ msgstr "Глибина монтажу" #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 #: netbox/templates/extras/tableconfig.html:41 -#: netbox/templates/extras/tag.html:32 netbox/templates/ipam/role.html:30 +#: netbox/templates/extras/tag.html:32 msgid "Weight" msgstr "Вага" @@ -4378,18 +4273,18 @@ msgid "Weight unit" msgstr "Вага юніта" #: netbox/dcim/forms/bulk_edit.py:290 netbox/dcim/forms/filtersets.py:335 -#: netbox/dcim/forms/model_forms.py:233 netbox/dcim/forms/model_forms.py:272 +#: netbox/dcim/forms/model_forms.py:259 netbox/dcim/forms/model_forms.py:298 msgid "Rack Type" msgstr "Тип стійки" #: netbox/dcim/forms/bulk_edit.py:292 netbox/dcim/forms/bulk_edit.py:440 -#: netbox/dcim/forms/model_forms.py:236 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/model_forms.py:262 netbox/dcim/forms/model_forms.py:343 msgid "Outer Dimensions" msgstr "Зовнішні розміри" -#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:238 -#: netbox/dcim/forms/model_forms.py:319 netbox/dcim/ui/panels.py:135 -#: netbox/dcim/views.py:885 netbox/dcim/views.py:1017 +#: netbox/dcim/forms/bulk_edit.py:295 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:345 netbox/dcim/ui/panels.py:137 +#: netbox/dcim/views.py:887 netbox/dcim/views.py:1019 #: netbox/extras/tables/tables.py:278 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 #: netbox/templates/extras/imageattachment.html:40 @@ -4397,8 +4292,8 @@ msgid "Dimensions" msgstr "Габарити" #: netbox/dcim/forms/bulk_edit.py:297 netbox/dcim/forms/filtersets.py:336 -#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:240 -#: netbox/dcim/views.py:890 netbox/dcim/views.py:1018 +#: netbox/dcim/forms/filtersets.py:361 netbox/dcim/forms/model_forms.py:266 +#: netbox/dcim/views.py:892 netbox/dcim/views.py:1020 #: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "Нумерація" @@ -4409,13 +4304,14 @@ msgid "Rack type" msgstr "Тип стійки" #: netbox/dcim/forms/bulk_edit.py:363 netbox/dcim/forms/bulk_edit.py:708 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/templates/dcim/modulebay.html:70 +#: netbox/dcim/forms/bulk_edit.py:763 msgid "Serial Number" msgstr "Серійний номер" #: netbox/dcim/forms/bulk_edit.py:366 netbox/dcim/forms/filtersets.py:429 #: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1116 #: netbox/dcim/forms/filtersets.py:1914 +#: netbox/templates/dcim/panels/installed_module.html:25 msgid "Asset tag" msgstr "Призначеня міток" @@ -4436,13 +4332,12 @@ msgstr "Потік повітря" #: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/filtersets.py:501 #: netbox/dcim/forms/filtersets.py:874 netbox/dcim/forms/filtersets.py:1086 #: netbox/dcim/forms/filtersets.py:1186 netbox/dcim/forms/filtersets.py:1325 -#: netbox/dcim/forms/model_forms.py:282 netbox/dcim/forms/model_forms.py:326 -#: netbox/dcim/forms/model_forms.py:586 netbox/dcim/forms/model_forms.py:871 +#: netbox/dcim/forms/model_forms.py:308 netbox/dcim/forms/model_forms.py:352 +#: netbox/dcim/forms/model_forms.py:612 netbox/dcim/forms/model_forms.py:897 #: netbox/dcim/forms/object_create.py:303 netbox/dcim/tables/devices.py:165 #: netbox/dcim/tables/power.py:67 netbox/dcim/tables/racks.py:204 #: netbox/ipam/forms/filtersets.py:486 #: netbox/templates/dcim/inc/cable_termination.html:16 -#: netbox/templates/dcim/powerfeed.html:28 #: netbox/templates/dcim/rack/base.html:4 #: netbox/virtualization/forms/model_forms.py:107 msgid "Rack" @@ -4452,14 +4347,14 @@ msgstr "Стійка" #: netbox/dcim/forms/filtersets.py:360 netbox/dcim/forms/filtersets.py:440 #: netbox/dcim/forms/filtersets.py:532 netbox/dcim/forms/filtersets.py:677 #: netbox/dcim/forms/filtersets.py:822 netbox/dcim/forms/filtersets.py:1043 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:787 -#: netbox/dcim/forms/model_forms.py:1790 +#: netbox/dcim/forms/model_forms.py:470 netbox/dcim/forms/model_forms.py:813 +#: netbox/dcim/forms/model_forms.py:1816 #: netbox/templates/dcim/device_edit.html:22 msgid "Hardware" msgstr "Апаратне забезпечення" #: netbox/dcim/forms/bulk_edit.py:490 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/filtersets.py:551 netbox/dcim/forms/model_forms.py:397 msgid "Default platform" msgstr "Платформа за замовчуванням" @@ -4476,29 +4371,29 @@ msgstr "Висота U" msgid "Exclude from utilization" msgstr "Виключити з утилізації" -#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:385 -#: netbox/dcim/forms/model_forms.py:1022 netbox/dcim/forms/model_forms.py:1064 -#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1119 -#: netbox/dcim/forms/model_forms.py:1140 netbox/dcim/forms/model_forms.py:1180 -#: netbox/dcim/forms/model_forms.py:1198 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/model_forms.py:411 +#: netbox/dcim/forms/model_forms.py:1048 netbox/dcim/forms/model_forms.py:1090 +#: netbox/dcim/forms/model_forms.py:1117 netbox/dcim/forms/model_forms.py:1145 +#: netbox/dcim/forms/model_forms.py:1166 netbox/dcim/forms/model_forms.py:1206 +#: netbox/dcim/forms/model_forms.py:1224 #: netbox/dcim/forms/object_create.py:119 netbox/dcim/tables/devicetypes.py:84 -#: netbox/dcim/ui/panels.py:125 netbox/templates/dcim/devicebay.html:52 +#: netbox/dcim/ui/panels.py:127 msgid "Device Type" msgstr "Тип пристрою" -#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:412 -#: netbox/dcim/views.py:1590 netbox/extras/forms/model_forms.py:601 +#: netbox/dcim/forms/bulk_edit.py:543 netbox/dcim/forms/model_forms.py:438 +#: netbox/dcim/views.py:1592 netbox/extras/forms/model_forms.py:601 msgid "Schema" msgstr "схема" #: netbox/dcim/forms/bulk_edit.py:549 netbox/dcim/forms/bulk_edit.py:556 #: netbox/dcim/forms/bulk_edit.py:787 netbox/dcim/forms/bulk_import.py:460 #: netbox/dcim/forms/bulk_import.py:1459 netbox/dcim/forms/filtersets.py:690 -#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:418 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/tables/modules.py:43 +#: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:444 +#: netbox/dcim/forms/model_forms.py:457 netbox/dcim/tables/modules.py:43 #: netbox/extras/forms/filtersets.py:413 #: netbox/extras/forms/model_forms.py:626 netbox/extras/tables/tables.py:627 -#: netbox/templates/account/base.html:7 netbox/templates/dcim/cable.html:23 +#: netbox/templates/account/base.html:7 #: netbox/templates/extras/configcontext.html:21 #: netbox/templates/inc/user_menu.html:38 netbox/vpn/forms/bulk_edit.py:213 #: netbox/vpn/forms/filtersets.py:203 netbox/vpn/forms/model_forms.py:378 @@ -4506,22 +4401,21 @@ msgid "Profile" msgstr "Профіль" #: netbox/dcim/forms/bulk_edit.py:588 netbox/dcim/forms/filtersets.py:1379 -#: netbox/dcim/forms/model_forms.py:443 netbox/dcim/forms/model_forms.py:1023 -#: netbox/dcim/forms/model_forms.py:1065 netbox/dcim/forms/model_forms.py:1092 -#: netbox/dcim/forms/model_forms.py:1120 netbox/dcim/forms/model_forms.py:1141 -#: netbox/dcim/forms/model_forms.py:1181 netbox/dcim/forms/model_forms.py:1199 +#: netbox/dcim/forms/model_forms.py:469 netbox/dcim/forms/model_forms.py:1049 +#: netbox/dcim/forms/model_forms.py:1091 netbox/dcim/forms/model_forms.py:1118 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1167 +#: netbox/dcim/forms/model_forms.py:1207 netbox/dcim/forms/model_forms.py:1225 #: netbox/dcim/forms/object_create.py:120 netbox/dcim/tables/modules.py:52 -#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2848 -#: netbox/templates/dcim/modulebay.html:66 +#: netbox/dcim/tables/modules.py:95 netbox/dcim/views.py:2851 msgid "Module Type" msgstr "Тип модуля" -#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:388 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:414 msgid "Chassis" msgstr "Шасі" #: netbox/dcim/forms/bulk_edit.py:611 netbox/dcim/models/devices.py:390 -#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:142 +#: netbox/dcim/tables/devices.py:76 netbox/dcim/ui/panels.py:144 msgid "VM role" msgstr "Роль віртуальної машини" @@ -4531,8 +4425,8 @@ msgstr "Роль віртуальної машини" #: netbox/dcim/forms/bulk_import.py:561 netbox/dcim/forms/bulk_import.py:686 #: netbox/dcim/forms/bulk_import.py:690 netbox/dcim/forms/filtersets.py:775 #: netbox/dcim/forms/filtersets.py:806 netbox/dcim/forms/filtersets.py:925 -#: netbox/dcim/forms/model_forms.py:509 netbox/dcim/forms/model_forms.py:546 -#: netbox/dcim/forms/model_forms.py:670 +#: netbox/dcim/forms/model_forms.py:535 netbox/dcim/forms/model_forms.py:572 +#: netbox/dcim/forms/model_forms.py:696 #: netbox/virtualization/forms/bulk_import.py:145 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/filtersets.py:207 @@ -4542,20 +4436,21 @@ msgstr "Шаблон конфігурації" #: netbox/dcim/forms/bulk_edit.py:657 netbox/dcim/forms/bulk_edit.py:1040 #: netbox/dcim/forms/bulk_import.py:592 netbox/dcim/forms/filtersets.py:133 -#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:616 -#: netbox/dcim/forms/model_forms.py:986 netbox/dcim/forms/model_forms.py:1003 +#: netbox/dcim/forms/filtersets.py:1370 netbox/dcim/forms/model_forms.py:642 +#: netbox/dcim/forms/model_forms.py:1012 netbox/dcim/forms/model_forms.py:1029 #: netbox/extras/filtersets.py:729 +#: netbox/templates/dcim/panels/installed_device.html:13 msgid "Device type" msgstr "Тип пристрою" #: netbox/dcim/forms/bulk_edit.py:668 netbox/dcim/forms/bulk_import.py:573 -#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:624 +#: netbox/dcim/forms/filtersets.py:138 netbox/dcim/forms/model_forms.py:650 msgid "Device role" msgstr "Роль пристрою" #: netbox/dcim/forms/bulk_edit.py:691 netbox/dcim/forms/bulk_import.py:598 #: netbox/dcim/forms/filtersets.py:789 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/model_forms.py:557 netbox/dcim/forms/model_forms.py:629 +#: netbox/dcim/forms/model_forms.py:583 netbox/dcim/forms/model_forms.py:655 #: netbox/dcim/tables/devices.py:191 netbox/extras/filtersets.py:745 #: netbox/virtualization/forms/bulk_edit.py:131 #: netbox/virtualization/forms/bulk_import.py:135 @@ -4567,7 +4462,7 @@ msgstr "Платформа" #: netbox/dcim/forms/bulk_edit.py:716 netbox/dcim/forms/bulk_import.py:617 #: netbox/dcim/forms/filtersets.py:830 netbox/dcim/forms/filtersets.py:1000 -#: netbox/dcim/forms/model_forms.py:638 netbox/dcim/tables/devices.py:211 +#: netbox/dcim/forms/model_forms.py:664 netbox/dcim/tables/devices.py:211 #: netbox/extras/filtersets.py:778 netbox/extras/forms/filtersets.py:406 #: netbox/ipam/forms/filtersets.py:457 netbox/ipam/forms/filtersets.py:491 #: netbox/virtualization/filtersets.py:148 @@ -4596,7 +4491,8 @@ msgid "Virtualization" msgstr "Віртуалізація" #: netbox/dcim/forms/bulk_edit.py:744 netbox/dcim/forms/bulk_import.py:759 -#: netbox/dcim/forms/model_forms.py:765 netbox/dcim/forms/model_forms.py:1011 +#: netbox/dcim/forms/model_forms.py:791 netbox/dcim/forms/model_forms.py:1037 +#: netbox/templates/dcim/panels/installed_module.html:17 msgid "Module type" msgstr "Тип модуля" @@ -4606,25 +4502,15 @@ msgstr "Тип модуля" #: netbox/dcim/forms/bulk_edit.py:1146 netbox/dcim/forms/bulk_edit.py:1173 #: netbox/dcim/forms/bulk_edit.py:1200 netbox/dcim/forms/bulk_edit.py:1218 #: netbox/dcim/forms/bulk_edit.py:1236 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/object_create.py:48 netbox/templates/dcim/cable.html:36 -#: netbox/templates/dcim/consoleport.html:32 -#: netbox/templates/dcim/consoleserverport.html:32 -#: netbox/templates/dcim/devicebay.html:28 -#: netbox/templates/dcim/frontport.html:32 +#: netbox/dcim/forms/object_create.py:48 #: netbox/templates/dcim/inc/panels/inventory_items.html:19 -#: netbox/templates/dcim/interface.html:42 -#: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:34 -#: netbox/templates/dcim/poweroutlet.html:32 -#: netbox/templates/dcim/powerport.html:32 -#: netbox/templates/dcim/rearport.html:32 +#: netbox/templates/dcim/panels/component_inventory_items.html:9 #: netbox/templates/extras/customfield.html:26 #: netbox/templates/generic/bulk_import.html:193 msgid "Label" msgstr "Етикетка" #: netbox/dcim/forms/bulk_edit.py:807 netbox/dcim/forms/filtersets.py:1224 -#: netbox/templates/dcim/cable.html:54 msgid "Length" msgstr "Довжина" @@ -4634,34 +4520,29 @@ msgid "Length unit" msgstr "Довжина юніта" #: netbox/dcim/forms/bulk_edit.py:830 -#: netbox/templates/dcim/virtualchassis.html:13 msgid "Domain" msgstr "Домен" #: netbox/dcim/forms/bulk_edit.py:886 netbox/dcim/forms/bulk_import.py:1646 -#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:865 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/model_forms.py:891 msgid "Power panel" msgstr "Панель живлення" #: netbox/dcim/forms/bulk_edit.py:908 netbox/dcim/forms/bulk_import.py:1682 #: netbox/dcim/forms/filtersets.py:1338 -#: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Постачання" #: netbox/dcim/forms/bulk_edit.py:914 netbox/dcim/forms/bulk_import.py:1687 #: netbox/dcim/forms/filtersets.py:1343 -#: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Фаза" #: netbox/dcim/forms/bulk_edit.py:920 netbox/dcim/forms/filtersets.py:1348 -#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Напруга" #: netbox/dcim/forms/bulk_edit.py:924 netbox/dcim/forms/filtersets.py:1352 -#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Сила струму" @@ -4674,7 +4555,7 @@ msgid "Maximum draw" msgstr "Максимальна потужність" #: netbox/dcim/forms/bulk_edit.py:1018 -#: netbox/dcim/models/device_component_templates.py:292 +#: netbox/dcim/models/device_component_templates.py:282 #: netbox/dcim/models/device_components.py:440 msgid "Maximum power draw (watts)" msgstr "Максимальна споживана потужність (Вт)" @@ -4684,14 +4565,14 @@ msgid "Allocated draw" msgstr "Виділена потужність" #: netbox/dcim/forms/bulk_edit.py:1024 -#: netbox/dcim/models/device_component_templates.py:299 +#: netbox/dcim/models/device_component_templates.py:289 #: netbox/dcim/models/device_components.py:447 msgid "Allocated power draw (watts)" msgstr "Виділена споживана потужність (Вт)" #: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_import.py:892 -#: netbox/dcim/forms/model_forms.py:1080 netbox/dcim/forms/model_forms.py:1445 -#: netbox/dcim/forms/model_forms.py:1774 netbox/dcim/forms/object_import.py:56 +#: netbox/dcim/forms/model_forms.py:1106 netbox/dcim/forms/model_forms.py:1471 +#: netbox/dcim/forms/model_forms.py:1800 netbox/dcim/forms/object_import.py:56 msgid "Power port" msgstr "Порт живлення" @@ -4700,23 +4581,23 @@ msgid "Feed leg" msgstr "Фідер живлення" #: netbox/dcim/forms/bulk_edit.py:1112 netbox/dcim/forms/bulk_edit.py:1433 -#: netbox/dcim/forms/filtersets.py:1719 +#: netbox/dcim/forms/filtersets.py:1719 netbox/dcim/ui/panels.py:478 msgid "Management only" msgstr "Тільки управління" #: netbox/dcim/forms/bulk_edit.py:1122 netbox/dcim/forms/bulk_edit.py:1439 #: netbox/dcim/forms/bulk_import.py:985 netbox/dcim/forms/filtersets.py:1643 #: netbox/dcim/forms/filtersets.py:1728 netbox/dcim/forms/object_import.py:91 -#: netbox/dcim/models/device_component_templates.py:462 -#: netbox/dcim/models/device_components.py:839 +#: netbox/dcim/models/device_component_templates.py:452 +#: netbox/dcim/models/device_components.py:839 netbox/dcim/ui/panels.py:480 msgid "PoE mode" msgstr "Режим PoE" #: netbox/dcim/forms/bulk_edit.py:1128 netbox/dcim/forms/bulk_edit.py:1445 #: netbox/dcim/forms/bulk_import.py:991 netbox/dcim/forms/filtersets.py:1648 #: netbox/dcim/forms/filtersets.py:1733 netbox/dcim/forms/object_import.py:96 -#: netbox/dcim/models/device_component_templates.py:469 -#: netbox/dcim/models/device_components.py:846 +#: netbox/dcim/models/device_component_templates.py:459 +#: netbox/dcim/models/device_components.py:846 netbox/dcim/ui/panels.py:481 msgid "PoE type" msgstr "Тип PoE" @@ -4725,36 +4606,26 @@ msgstr "Тип PoE" msgid "Wireless role" msgstr "Бездротова роль" -#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:786 -#: netbox/dcim/forms/model_forms.py:1390 netbox/dcim/tables/devices.py:330 -#: netbox/templates/dcim/consoleport.html:24 -#: netbox/templates/dcim/consoleserverport.html:24 -#: netbox/templates/dcim/frontport.html:24 -#: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/modulebay.html:26 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/poweroutlet.html:24 -#: netbox/templates/dcim/powerport.html:24 -#: netbox/templates/dcim/rearport.html:24 +#: netbox/dcim/forms/bulk_edit.py:1271 netbox/dcim/forms/model_forms.py:812 +#: netbox/dcim/forms/model_forms.py:1416 netbox/dcim/tables/devices.py:330 +#: netbox/templates/dcim/panels/installed_module.html:9 msgid "Module" msgstr "Модуль" #: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/tables/devices.py:746 -#: netbox/templates/dcim/interface.html:134 +#: netbox/dcim/ui/panels.py:495 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1472 +#: netbox/dcim/forms/bulk_edit.py:1418 netbox/dcim/forms/model_forms.py:1498 msgid "Virtual device contexts" msgstr "Контексти віртуальних пристроїв" #: netbox/dcim/forms/bulk_edit.py:1424 netbox/dcim/forms/bulk_import.py:819 #: netbox/dcim/forms/bulk_import.py:845 netbox/dcim/forms/filtersets.py:1429 #: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1607 -#: netbox/dcim/tables/devices.py:651 -#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 -#: netbox/templates/dcim/consoleport.html:40 -#: netbox/templates/dcim/consoleserverport.html:40 +#: netbox/dcim/tables/devices.py:651 netbox/dcim/ui/panels.py:474 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:64 msgid "Speed" msgstr "Швидкість" @@ -4771,7 +4642,7 @@ msgid "Mode" msgstr "Режим" #: netbox/dcim/forms/bulk_edit.py:1461 netbox/dcim/forms/bulk_import.py:1000 -#: netbox/dcim/forms/model_forms.py:1521 netbox/ipam/forms/bulk_import.py:177 +#: netbox/dcim/forms/model_forms.py:1547 netbox/ipam/forms/bulk_import.py:177 #: netbox/ipam/forms/filtersets.py:582 netbox/ipam/models/vlans.py:93 #: netbox/virtualization/forms/bulk_edit.py:205 #: netbox/virtualization/forms/bulk_import.py:184 @@ -4780,16 +4651,15 @@ msgid "VLAN group" msgstr "Група VLAN" #: netbox/dcim/forms/bulk_edit.py:1470 netbox/dcim/forms/bulk_import.py:1007 -#: netbox/dcim/forms/model_forms.py:1527 netbox/dcim/tables/devices.py:616 -#: netbox/templates/dcim/interface.html:91 -#: netbox/virtualization/forms/bulk_edit.py:213 +#: netbox/dcim/forms/model_forms.py:1553 netbox/dcim/tables/devices.py:616 +#: netbox/dcim/ui/panels.py:484 netbox/virtualization/forms/bulk_edit.py:213 #: netbox/virtualization/forms/bulk_import.py:191 #: netbox/virtualization/forms/model_forms.py:331 msgid "Untagged VLAN" msgstr "VLAN без міток" #: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/bulk_import.py:1014 -#: netbox/dcim/forms/model_forms.py:1536 netbox/dcim/tables/devices.py:622 +#: netbox/dcim/forms/model_forms.py:1562 netbox/dcim/tables/devices.py:622 #: netbox/virtualization/forms/bulk_edit.py:221 #: netbox/virtualization/forms/bulk_import.py:198 #: netbox/virtualization/forms/model_forms.py:340 @@ -4805,30 +4675,29 @@ msgid "Remove tagged VLANs" msgstr "Видалити мітки з VLAN'ів" #: netbox/dcim/forms/bulk_edit.py:1502 netbox/dcim/forms/bulk_import.py:1027 -#: netbox/dcim/forms/model_forms.py:1545 +#: netbox/dcim/forms/model_forms.py:1571 #: netbox/virtualization/forms/bulk_import.py:211 #: netbox/virtualization/forms/model_forms.py:349 msgid "Q-in-Q Service VLAN" msgstr "Сервісна локальна мережа Q-in-Q" -#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1508 +#: netbox/dcim/forms/bulk_edit.py:1517 netbox/dcim/forms/model_forms.py:1534 #: netbox/wireless/forms/filtersets.py:26 msgid "Wireless LAN group" msgstr "Група бездротової локальної мережі" -#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1513 -#: netbox/dcim/tables/devices.py:660 netbox/netbox/navigation/menu.py:156 -#: netbox/templates/dcim/interface.html:355 +#: netbox/dcim/forms/bulk_edit.py:1522 netbox/dcim/forms/model_forms.py:1539 +#: netbox/dcim/tables/devices.py:660 netbox/dcim/ui/panels.py:561 +#: netbox/netbox/navigation/menu.py:156 #: netbox/wireless/tables/wirelesslan.py:20 msgid "Wireless LANs" msgstr "Бездротові локальні мережі" #: netbox/dcim/forms/bulk_edit.py:1531 netbox/dcim/forms/filtersets.py:1574 -#: netbox/dcim/forms/model_forms.py:1579 netbox/ipam/forms/bulk_edit.py:227 -#: netbox/ipam/forms/bulk_edit.py:313 netbox/ipam/forms/filtersets.py:191 -#: netbox/netbox/navigation/menu.py:112 -#: netbox/templates/dcim/interface.html:146 -#: netbox/templates/ipam/prefix.html:91 +#: netbox/dcim/forms/model_forms.py:1605 netbox/dcim/ui/panels.py:499 +#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/bulk_edit.py:313 +#: netbox/ipam/forms/filtersets.py:191 netbox/netbox/navigation/menu.py:112 +#: netbox/templates/ipam/panels/prefix_addressing.html:4 #: netbox/virtualization/forms/filtersets.py:218 #: netbox/virtualization/forms/model_forms.py:369 #: netbox/virtualization/ui/panels.py:68 @@ -4836,26 +4705,25 @@ msgid "Addressing" msgstr "Адресація" #: netbox/dcim/forms/bulk_edit.py:1532 netbox/dcim/forms/filtersets.py:821 -#: netbox/dcim/forms/model_forms.py:1580 +#: netbox/dcim/forms/model_forms.py:1606 #: netbox/virtualization/forms/model_forms.py:370 msgid "Operation" msgstr "Операція" #: netbox/dcim/forms/bulk_edit.py:1533 netbox/dcim/forms/filtersets.py:1575 -#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1124 -#: netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/forms/filtersets.py:1702 netbox/dcim/forms/model_forms.py:1150 +#: netbox/dcim/forms/model_forms.py:1608 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1581 -#: netbox/templates/dcim/interface.html:110 -#: netbox/virtualization/forms/bulk_edit.py:237 +#: netbox/dcim/forms/bulk_edit.py:1534 netbox/dcim/forms/model_forms.py:1607 +#: netbox/dcim/ui/panels.py:491 netbox/virtualization/forms/bulk_edit.py:237 #: netbox/virtualization/forms/model_forms.py:371 msgid "Related Interfaces" msgstr "Пов'язані інтерфейси" #: netbox/dcim/forms/bulk_edit.py:1536 netbox/dcim/forms/filtersets.py:1576 -#: netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1611 #: netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/filtersets.py:219 #: netbox/virtualization/forms/model_forms.py:374 @@ -4963,7 +4831,7 @@ msgstr "Батьківський тех. майданчик" msgid "Rack's location (if any)" msgstr "Розташування стійки (якщо є)" -#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:331 +#: netbox/dcim/forms/bulk_import.py:368 netbox/dcim/forms/model_forms.py:357 #: netbox/dcim/tables/racks.py:209 #: netbox/templates/dcim/rackreservation.html:7 msgid "Units" @@ -5044,7 +4912,7 @@ msgid "Assigned platform" msgstr "Призначена платформа" #: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/bulk_import.py:614 -#: netbox/dcim/forms/model_forms.py:651 +#: netbox/dcim/forms/model_forms.py:677 msgid "Virtual chassis" msgstr "Віртуальне шасі" @@ -5060,7 +4928,7 @@ msgstr "Призначене місце розташування (якщо є)" msgid "Assigned rack (if any)" msgstr "Призначена стійка (якщо така є)" -#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:660 netbox/dcim/forms/model_forms.py:634 msgid "Face" msgstr "Лицева сторона" @@ -5086,7 +4954,7 @@ msgstr "" msgid "The device in which this module is installed" msgstr "Пристрій, в якому встановлений даний модуль" -#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:755 +#: netbox/dcim/forms/bulk_import.py:753 netbox/dcim/forms/model_forms.py:781 msgid "Module bay" msgstr "Відсік для модулів" @@ -5098,7 +4966,7 @@ msgstr "Відсік для модуля, в якому встановлений msgid "The type of module" msgstr "Тип модуля" -#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:773 +#: netbox/dcim/forms/bulk_import.py:770 netbox/dcim/forms/model_forms.py:799 msgid "Replicate components" msgstr "Повторювання компонентів" @@ -5110,11 +4978,11 @@ msgstr "" "Автоматично заповнювати компоненти, пов'язані з цим типом модуля (увімкнено " "за замовчуванням)" -#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:779 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/model_forms.py:805 msgid "Adopt components" msgstr "Прийняти компоненти" -#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:782 +#: netbox/dcim/forms/bulk_import.py:777 netbox/dcim/forms/model_forms.py:808 msgid "Adopt already existing components" msgstr "Прийняти вже існуючі компоненти" @@ -5139,13 +5007,13 @@ msgstr "Локальний порт живлення, який живить цю msgid "Electrical phase (for three-phase circuits)" msgstr "Електрична фаза (для трифазних ланцюгів)" -#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1483 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/model_forms.py:1509 #: netbox/virtualization/forms/bulk_import.py:168 #: netbox/virtualization/forms/model_forms.py:310 msgid "Parent interface" msgstr "Батьківський інтерфейс" -#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1491 +#: netbox/dcim/forms/bulk_import.py:953 netbox/dcim/forms/model_forms.py:1517 #: netbox/virtualization/forms/bulk_import.py:175 #: netbox/virtualization/forms/model_forms.py:318 msgid "Bridged interface" @@ -5378,6 +5246,7 @@ msgid "Side B name" msgstr "Назва сторони B" #: netbox/dcim/forms/bulk_import.py:1456 +#: netbox/templates/dcim/panels/connection.html:60 #: netbox/wireless/forms/bulk_import.py:133 msgid "Connection status" msgstr "Статус підключення" @@ -5411,11 +5280,9 @@ msgstr "" "{color} не відповідав жодному використаному назві кольору і мав більше шести" " символів: недійсний шістнадцятковий." -#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:900 +#: netbox/dcim/forms/bulk_import.py:1594 netbox/dcim/forms/model_forms.py:926 #: netbox/dcim/tables/devices.py:1124 #: netbox/templates/dcim/panels/virtual_chassis_members.html:10 -#: netbox/templates/dcim/virtualchassis.html:17 -#: netbox/templates/dcim/virtualchassis.html:57 msgid "Master" msgstr "Майстер" @@ -5443,9 +5310,8 @@ msgstr "Тип живлення (змінній/постійний струм)" msgid "Single or three-phase" msgstr "Однофазний або трифазний (струм)" -#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1875 -#: netbox/dcim/ui/panels.py:108 -#: netbox/templates/dcim/virtualdevicecontext.html:30 +#: netbox/dcim/forms/bulk_import.py:1739 netbox/dcim/forms/model_forms.py:1901 +#: netbox/dcim/ui/panels.py:110 netbox/dcim/ui/panels.py:354 #: netbox/virtualization/ui/panels.py:28 msgid "Primary IPv4" msgstr "Первинна адреса IPv4" @@ -5454,9 +5320,8 @@ msgstr "Первинна адреса IPv4" msgid "IPv4 address with mask, e.g. 1.2.3.4/24" msgstr "IPv4 адреса з маскою, наприклад 1.2.3.4/24" -#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1884 -#: netbox/dcim/ui/panels.py:113 -#: netbox/templates/dcim/virtualdevicecontext.html:41 +#: netbox/dcim/forms/bulk_import.py:1746 netbox/dcim/forms/model_forms.py:1910 +#: netbox/dcim/ui/panels.py:115 netbox/dcim/ui/panels.py:359 #: netbox/virtualization/ui/panels.py:33 msgid "Primary IPv6" msgstr "Первинна адреса IPv6" @@ -5466,8 +5331,7 @@ msgid "IPv6 address with prefix length, e.g. 2001:db8::1/64" msgstr "IPv6 адреса з довжиною префікса, наприклад 2001:db8::1/64" #: netbox/dcim/forms/common.py:19 netbox/dcim/models/device_components.py:615 -#: netbox/templates/dcim/interface.html:57 -#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/dcim/ui/panels.py:476 netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/ui/panels.py:61 msgid "MTU" msgstr "MTU" @@ -5510,18 +5374,15 @@ msgstr "" msgid "A {model} named {name} already exists" msgstr "А {model} названий {name} вже існує" -#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:853 +#: netbox/dcim/forms/connections.py:59 netbox/dcim/forms/model_forms.py:879 #: netbox/dcim/tables/power.py:63 #: netbox/templates/dcim/inc/cable_termination.html:40 -#: netbox/templates/dcim/powerfeed.html:24 -#: netbox/templates/dcim/powerpanel.html:19 #: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "Панель живлення" -#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:880 -#: netbox/templates/dcim/powerfeed.html:21 -#: netbox/templates/dcim/powerport.html:80 +#: netbox/dcim/forms/connections.py:68 netbox/dcim/forms/model_forms.py:906 +#: netbox/dcim/views.py:3106 msgid "Power Feed" msgstr "Живлення живлення" @@ -5549,12 +5410,12 @@ msgstr "Кількість стійок" msgid "Function" msgstr "Функція" -#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:341 -#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1164 +#: netbox/dcim/forms/filtersets.py:461 netbox/dcim/forms/model_forms.py:367 +#: netbox/dcim/tables/racks.py:189 netbox/dcim/views.py:1166 msgid "Reservation" msgstr "Бронювання" -#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:390 +#: netbox/dcim/forms/filtersets.py:534 netbox/dcim/forms/model_forms.py:416 #: netbox/netbox/views/generic/feature_views.py:97 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" @@ -5577,7 +5438,7 @@ msgstr "Роль підпристрою" msgid "Module count" msgstr "Кількість модулів" -#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/forms/filtersets.py:769 netbox/dcim/forms/model_forms.py:548 msgid "Device Role" msgstr "Роль пристрою" @@ -5615,16 +5476,9 @@ msgstr "Зайнятий" #: netbox/dcim/forms/filtersets.py:1420 netbox/dcim/forms/filtersets.py:1460 #: netbox/dcim/forms/filtersets.py:1500 netbox/dcim/forms/filtersets.py:1535 #: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/tables/devices.py:381 -#: netbox/dcim/tables/devices.py:682 netbox/ipam/tables/vlans.py:174 +#: netbox/dcim/tables/devices.py:682 netbox/dcim/ui/panels.py:377 +#: netbox/dcim/ui/panels.py:516 netbox/ipam/tables/vlans.py:174 #: netbox/templates/circuits/inc/circuit_termination_fields.html:16 -#: netbox/templates/dcim/consoleport.html:55 -#: netbox/templates/dcim/consoleserverport.html:55 -#: netbox/templates/dcim/frontport.html:66 -#: netbox/templates/dcim/interface.html:215 -#: netbox/templates/dcim/powerfeed.html:110 -#: netbox/templates/dcim/poweroutlet.html:73 -#: netbox/templates/dcim/powerport.html:59 -#: netbox/templates/dcim/rearport.html:66 msgid "Connection" msgstr "Підключення" @@ -5640,13 +5494,12 @@ msgstr "Вид" msgid "Mgmt only" msgstr "Тільки управління" -#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1567 -#: netbox/dcim/models/device_components.py:792 -#: netbox/templates/dcim/interface.html:160 +#: netbox/dcim/forms/filtersets.py:1638 netbox/dcim/forms/model_forms.py:1593 +#: netbox/dcim/models/device_components.py:792 netbox/dcim/ui/panels.py:506 msgid "WWN" msgstr "WWN (унікальний ідентифікатор)" -#: netbox/dcim/forms/filtersets.py:1653 +#: netbox/dcim/forms/filtersets.py:1653 netbox/dcim/ui/panels.py:482 #: netbox/virtualization/forms/filtersets.py:260 msgid "802.1Q mode" msgstr "Режим 802.1Q" @@ -5663,18 +5516,17 @@ msgstr "Частота каналу (МГц)" msgid "Channel width (MHz)" msgstr "Ширина каналу (МГц)" -#: netbox/dcim/forms/filtersets.py:1680 -#: netbox/templates/dcim/interface.html:96 +#: netbox/dcim/forms/filtersets.py:1680 netbox/dcim/ui/panels.py:485 msgid "Transmit power (dBm)" msgstr "Потужність передачі (дБм)" #: netbox/dcim/forms/filtersets.py:1751 netbox/dcim/forms/filtersets.py:1795 -#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable.html:12 -#: netbox/templates/dcim/cable_trace.html:46 -#: netbox/templates/dcim/frontport.html:74 +#: netbox/dcim/tables/devices.py:344 netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/htmx/cable_edit.html:53 #: netbox/templates/dcim/inc/connection_endpoints.html:4 -#: netbox/templates/dcim/rearport.html:74 +#: netbox/templates/dcim/panels/connection.html:14 +#: netbox/templates/dcim/panels/connection.html:51 +#: netbox/templates/dcim/panels/interface_connection.html:13 #: netbox/templates/dcim/trace/cable.html:7 msgid "Cable" msgstr "Кабель" @@ -5714,9 +5566,7 @@ msgstr "Тип сфери застосування" #: netbox/ipam/forms/bulk_edit.py:382 netbox/ipam/forms/filtersets.py:195 #: netbox/ipam/forms/model_forms.py:225 netbox/ipam/forms/model_forms.py:603 #: netbox/ipam/forms/model_forms.py:613 netbox/ipam/tables/ip.py:193 -#: netbox/ipam/tables/vlans.py:40 netbox/templates/ipam/prefix.html:48 -#: netbox/templates/ipam/vlangroup.html:38 -#: netbox/virtualization/forms/bulk_edit.py:74 +#: netbox/ipam/tables/vlans.py:40 netbox/virtualization/forms/bulk_edit.py:74 #: netbox/virtualization/forms/filtersets.py:53 #: netbox/virtualization/forms/model_forms.py:73 #: netbox/virtualization/tables/clusters.py:81 @@ -5739,28 +5589,28 @@ msgstr "Тип сфери застосування (додаток і модел #: netbox/dcim/forms/mixins.py:126 msgid "Scope name" -msgstr "" +msgstr "Назва сфери застосування" #: netbox/dcim/forms/mixins.py:127 msgid "Name of the assigned scope object (if not using ID)" -msgstr "" +msgstr "Назва призначеного об'єкту сфери (якщо не використовується ID)" #: netbox/dcim/forms/mixins.py:139 msgid "scope_name and scope_id are mutually exclusive." -msgstr "" +msgstr "scope_name і scope_id є взаємовиключними." #: netbox/dcim/forms/mixins.py:143 msgid "scope_type must be specified when using scope_name" -msgstr "" +msgstr "під час використання назва_scope_type має бути вказано" #: netbox/dcim/forms/mixins.py:145 msgid "scope_type must be specified when using scope_id" -msgstr "" +msgstr "під час використання scope_id має бути вказано тип scope_type" #: netbox/dcim/forms/mixins.py:154 #, python-brace-format msgid "{scope_type} \"{name}\" not found." -msgstr "" +msgstr "{scope_type} «{name}«Не знайдено." #: netbox/dcim/forms/mixins.py:162 #, python-brace-format @@ -5768,6 +5618,8 @@ msgid "" "Multiple {scope_type} objects match \"{name}\". Use scope_id to specify the " "intended object." msgstr "" +"Кілька {scope_type} об'єкти збігаються»{name}». Використовуйте scope_id, щоб" +" вказати призначений об'єкт." #: netbox/dcim/forms/mixins.py:180 netbox/dcim/tables/devices.py:260 msgid "Rear ports" @@ -5782,31 +5634,31 @@ msgstr "" "Загальна кількість позицій фронтальних портів ({frontport_count}) повинен " "відповідати вибраному числу позицій заднього порту ({rearport_count})." -#: netbox/dcim/forms/model_forms.py:158 +#: netbox/dcim/forms/model_forms.py:169 msgid "Contact Info" msgstr "Контактна інформація" -#: netbox/dcim/forms/model_forms.py:211 +#: netbox/dcim/forms/model_forms.py:237 msgid "Rack Role" msgstr "Роль стійки" -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:380 -#: netbox/dcim/forms/model_forms.py:551 +#: netbox/dcim/forms/model_forms.py:254 netbox/dcim/forms/model_forms.py:406 +#: netbox/dcim/forms/model_forms.py:577 #: netbox/utilities/forms/fields/fields.py:58 msgid "Slug" msgstr "Скорочення" -#: netbox/dcim/forms/model_forms.py:276 +#: netbox/dcim/forms/model_forms.py:302 msgid "Select a pre-defined rack type, or set physical characteristics below." msgstr "" "Виберіть попередньо визначений тип стійки або встановіть фізичні " "характеристики нижче." -#: netbox/dcim/forms/model_forms.py:284 +#: netbox/dcim/forms/model_forms.py:310 msgid "Inventory Control" msgstr "Контроль запасів" -#: netbox/dcim/forms/model_forms.py:333 +#: netbox/dcim/forms/model_forms.py:359 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -5814,35 +5666,35 @@ msgstr "" "Список ідентифікаторів числових юнітів, розділених комами. Діапазон можна " "вказати за допомогою дефіса." -#: netbox/dcim/forms/model_forms.py:414 netbox/extras/forms/model_forms.py:603 +#: netbox/dcim/forms/model_forms.py:440 netbox/extras/forms/model_forms.py:603 msgid "Enter a valid JSON schema to define supported attributes." msgstr "Введіть дійсну схему JSON для визначення підтримуваних атрибутів." -#: netbox/dcim/forms/model_forms.py:445 +#: netbox/dcim/forms/model_forms.py:471 msgid "Profile & Attributes" msgstr "Профіль та атрибути" -#: netbox/dcim/forms/model_forms.py:597 netbox/dcim/models/devices.py:579 +#: netbox/dcim/forms/model_forms.py:623 netbox/dcim/models/devices.py:579 msgid "The lowest-numbered unit occupied by the device" msgstr "Юніт з найменшим номером, зайнятим пристроєм" -#: netbox/dcim/forms/model_forms.py:662 +#: netbox/dcim/forms/model_forms.py:688 msgid "The position in the virtual chassis this device is identified by" msgstr "Положення у віртуальному шасі цього пристрою визначається" -#: netbox/dcim/forms/model_forms.py:667 +#: netbox/dcim/forms/model_forms.py:693 msgid "The priority of the device in the virtual chassis" msgstr "Пріоритет пристрою в віртуальному шасі" -#: netbox/dcim/forms/model_forms.py:776 +#: netbox/dcim/forms/model_forms.py:802 msgid "Automatically populate components associated with this module type" msgstr "Автоматично заповнювати компоненти, пов'язані з цим типом модуля" -#: netbox/dcim/forms/model_forms.py:882 +#: netbox/dcim/forms/model_forms.py:908 msgid "Characteristics" msgstr "Характеристики" -#: netbox/dcim/forms/model_forms.py:1038 +#: netbox/dcim/forms/model_forms.py:1064 #, python-brace-format msgid "" "Alphanumeric ranges are supported for bulk creation. Mixed cases and types " @@ -5856,107 +5708,95 @@ msgstr "" "[ге, хе] -0/0/ [0-9]). Жетон {module}, якщо є, " "буде автоматично замінено значенням позиції при створенні нового модуля." -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "Шаблон порту консолі" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "Шаблон порту консольного сервера" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "Шаблон фронтального порту" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "Шаблон інтерфейсу" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "Шаблон електрічної розетки" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "Шаблон порту живлення" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "Шаблон порту ззаду" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "Порт консолі" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "Порт консольного сервера" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "Передній порт" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "Порт ззаду" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "Порт живлення" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "Електрична розетка" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "Призначення компонентів" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "Елемент інвентаря можна призначити лише одному компоненту." -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "Інтерфейс LAG" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "Фільтр VLAN'ів, доступних для призначення за групами." -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "Підпорядкований пристрій" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -5964,43 +5804,41 @@ msgstr "" "Підпорядковані пристрої спочатку повинні бути створені та присвоєні до тех. " "майданчику та стійки батьківського пристрою." -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "Консольний порт" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "Порт консольного сервера" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "Передній порт" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "Розетка живлення" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "Задній порт" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "Елемент інвентаря" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "Роль елемента інвентаря" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "Інтерфейс VM" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -6014,7 +5852,7 @@ msgstr "Інтерфейс VM" msgid "Virtual Machine" msgstr "Віртуальна машина" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "MAC-адресу можна призначити лише одному об'єкту." @@ -6038,9 +5876,9 @@ msgstr "" "очікуються." #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "Члени" @@ -6238,41 +6076,41 @@ msgid "" msgstr "" "Шаблон компонента повинен бути пов'язаний з типом пристрою або типом модуля." -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "шаблон порту консолі" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "шаблони портів консолі" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "шаблон порту консольного сервера" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "шаблони портів консольного сервера" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "максимальна потужність" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "виділена потужність" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "шаблон порту живлення" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "шаблони портів живлення" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." @@ -6280,93 +6118,93 @@ msgstr "" "Виділена потужність не може перевищувати максимальну потужність " "({maximum_draw}Вт)." -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "фідер живлення" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "Фаза (для трифазних подач)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "шаблон розетки" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "шаблони розеток" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Батьківський порт живлення ({power_port}) повинен належати до одного типу " "пристрою" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Батьківський порт живлення ({power_port}) повинен належати до одного типу " "модуля" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "тільки управління" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "інтерфейс моста" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "бездротова роль" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "шаблон інтерфейсу" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "шаблони інтерфейсу" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" "Інтерфейс моста ({bridge}) повинні складатися з пристроїв одного типу " -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Інтерфейс моста ({bridge}) повинні складатися з модулів одного типу " -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "Задній порт ({rear_port}) повинні належати до одного типу пристрою" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "позиції" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "шаблон переднього порту" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "шаблони передніх портів" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " @@ -6375,15 +6213,15 @@ msgstr "" "Кількість позицій не може бути меншою за кількість відображених шаблонів " "заднього порту ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "шаблон порту ззаду" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "шаблони портів ззаду" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " @@ -6392,34 +6230,34 @@ msgstr "" "Кількість позицій не може бути меншою за кількість відображених шаблонів " "передніх портів ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "позиція" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "" "Ідентифікатор для посилання при перейменуванні встановлених компонентів" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "шаблон відсіку модуля" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "шаблони відсіків модулів" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "шаблон відсіку пристрою" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "шаблони відсіків пристроїв" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -6428,21 +6266,21 @@ msgstr "" "Роль підпристрою типу пристрою ({device_type}) має бути встановлено значення" " \"батько\", щоб дозволити відсіки пристрою." -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "Ідентифікатор частини" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "Ідентифікатор деталі, призначений виробником" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "шаблон елемента інвентаря" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "шаблони елемента інвентаря" @@ -6574,10 +6412,10 @@ msgid "tagged VLANs" msgstr "VLAN'и з мітками" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "Q-в-Q SVLAN" @@ -7740,11 +7578,11 @@ msgstr "Додати компоненти" msgid "Disconnect Selected" msgstr "Відключити вибране" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "Кінець А" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "Кінець Б" @@ -7789,6 +7627,8 @@ msgstr "Назва кольору" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "Доступний" @@ -7825,7 +7665,7 @@ msgstr "Висота юніта(U)" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "IP-адреса" @@ -7874,16 +7714,14 @@ msgid "Power outlets" msgstr "Розетки" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7916,18 +7754,17 @@ msgid "Device Site" msgstr "Сайт пристрою" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "Резервуар модулів" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "Елементи інвентаря" @@ -7951,13 +7788,13 @@ msgstr "Максимальна потужність (Вт)" msgid "Allocated draw (W)" msgstr "Виділена потужність (Вт)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "IP-адреси" @@ -7965,18 +7802,18 @@ msgstr "IP-адреси" msgid "Primary MAC" msgstr "Основний MAC" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "MAC-адреси" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Групи FHRP/VRRP" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -7985,7 +7822,6 @@ msgid "Tunnel" msgstr "Тунель" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Тільки управління" @@ -7993,7 +7829,7 @@ msgstr "Тільки управління" msgid "VDCs" msgstr "Джерела живлення постійного струму" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "Віртуальна схема" @@ -8002,7 +7838,7 @@ msgstr "Віртуальна схема" msgid "Mappings" msgstr "Відображення" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "Встановлений пристрій" @@ -8026,7 +7862,7 @@ msgstr "Встановлений серійний" msgid "Installed Asset Tag" msgstr "Тег встановленого ресурсу" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "Встановлений модуль" @@ -8043,7 +7879,6 @@ msgid "Module Status" msgstr "Статус модуля" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "Компонент" @@ -8061,7 +7896,7 @@ msgstr "Типи стійки" msgid "Device Types" msgstr "Типи пристроїв" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "Типи модулів" @@ -8084,8 +7919,8 @@ msgstr "Повна глибина" msgid "Device Count" msgstr "Кількість пристроїв" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -8095,8 +7930,8 @@ msgstr "Кількість пристроїв" msgid "Console Ports" msgstr "Консольні порти" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -8106,8 +7941,8 @@ msgstr "Консольні порти" msgid "Console Server Ports" msgstr "Порти консольного сервера" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -8117,8 +7952,8 @@ msgstr "Порти консольного сервера" msgid "Power Ports" msgstr "Порти живлення" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -8128,8 +7963,8 @@ msgstr "Порти живлення" msgid "Power Outlets" msgstr "Розетки" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -8138,8 +7973,8 @@ msgstr "Розетки" msgid "Front Ports" msgstr "Передні порти" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -8149,16 +7984,16 @@ msgstr "Передні порти" msgid "Rear Ports" msgstr "Задні порти" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Відсіки для пристроїв" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8173,11 +8008,10 @@ msgid "Module Count" msgstr "Кількість модулів" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Подачі живлення" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "Максимальне використання (живлення)" @@ -8192,7 +8026,7 @@ msgid "Racks" msgstr "Стійки" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Висота" @@ -8240,85 +8074,123 @@ msgstr "Групи VLAN" msgid "Test case must set peer_termination_type" msgstr "Тестовий випадок повинен встановити peer_termination_type" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} міліметрів" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "Серійний номер" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "Максимальна вага" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "Керування" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "Позадіапазонний IP" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "Батька/дитина" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "Назва моделі" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "Батьківський елемент" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "Ідентифікатор частини" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "Підключений пристрій" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "Утилізація (виділено)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "Електричні характеристики" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{} V" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{} А" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "Основний для інтерфейсу" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "Віртуальні члени шасі" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "Використання електроенергії" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "Переклад VLAN" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "Відключено {count} {type}" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "Підпорядковані регіони" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "Підпорядковані групи" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "Пристрої без можливості кріплення у стійку" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "Підпорядковані місцезнаходження" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "Бронювання" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "Ролі дочірніх пристроїв" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "Дитячі платформи" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "Послуги додатків" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8326,41 +8198,69 @@ msgstr "Послуги додатків" msgid "Config Context" msgstr "Контекст конфігурації" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "Відтворення конфігурації" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "Віртуальні машини" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "Контексти віртуальних пристроїв" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "VLAN'и" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "Члени LAG" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "Переклад VLAN" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "Мостові інтерфейси" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "Дочірні інтерфейси" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Встановлений пристрій {device} в бухті {device_bay}." -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Видалений пристрій {device} з бухти {device_bay}." -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "Підпорядкований" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "Доданий член {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "Неможливо видалити головний пристрій {device} від віртуального шасі." -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Вилучено {device} з віртуального шасі {chassis}" @@ -8456,10 +8356,9 @@ msgstr "Так" msgid "No" msgstr "Ні" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "Посилання" @@ -8918,15 +8817,6 @@ msgstr "Один або кілька присвоєних типів об'єкт msgid "Field data type (e.g. text, integer, etc.)" msgstr "Тип даних поля (наприклад, текст, ціле число тощо)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "Тип об'єкта" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "Тип об'єкта (для об'єктів або полів з кількома об'єктами)" @@ -9031,7 +8921,7 @@ msgstr "Класифікація вступу" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -9057,15 +8947,14 @@ msgstr "Імена користувачів, розділені комами, у #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "Групи" @@ -9091,13 +8980,6 @@ msgstr "Тип поля" msgid "Choices" msgstr "Вибір" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "Дані" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10390,17 +10272,6 @@ msgstr "Розширення файлу" msgid "As Attachment" msgstr "Як вкладення" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "Файл даних" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10416,9 +10287,8 @@ msgstr "Зображення" msgid "Filename" msgstr "Назва файлу" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "Розмір" @@ -10473,6 +10343,7 @@ msgstr "" "інформаційної панелі." #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10616,7 +10487,7 @@ msgstr "Cisco" msgid "Plaintext" msgstr "Простий текст" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "Сервіс" @@ -10679,7 +10550,6 @@ msgstr "Експорт L2VPN (ідентифікатор)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "Префікс" @@ -10729,7 +10599,6 @@ msgstr "Номер VLAN (1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "Адреса" @@ -10786,7 +10655,7 @@ msgstr "Група FHRP (ID)" msgid "IP address (ID)" msgstr "IP-адреса (ідентифікатор)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "IP-адреса" @@ -10853,8 +10722,8 @@ msgstr "Є приватним" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "RIR" @@ -10865,15 +10734,13 @@ msgstr "Дата додавання" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Група VLAN" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10888,7 +10755,7 @@ msgid "Prefix length" msgstr "Довжина префікса" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "Чи є пулом" @@ -10907,23 +10774,21 @@ msgstr "Призначення VLAN" msgid "Treat as populated" msgstr "Ставтеся до населених" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "Ім'я DNS" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Протокол" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "Ідентифікатор групи" @@ -10944,9 +10809,8 @@ msgid "Authentication key" msgstr "Ключ аутентифікації" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -10975,23 +10839,22 @@ msgstr "Тех. майданчик і група" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "Політика" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "Порти" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "Імпортувати маршрути до цілей" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "Експортувати маршрути до цілей" @@ -11021,7 +10884,6 @@ msgstr "Ідентифікатор області застосування" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "Група FHRP/VRRP" @@ -11139,7 +11001,7 @@ msgid "Exported by VRF" msgstr "Експортувати з VRF" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "Приватний" @@ -11148,7 +11010,7 @@ msgstr "Приватний" msgid "Address family" msgstr "Сімейство адрес" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "Діапазон" @@ -11176,18 +11038,10 @@ msgstr "Пристрій/віртуальна машина" msgid "Parent Prefix" msgstr "Батьківський префікс" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "Ім'я DNS" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLAN'и" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "Містить ідентифікатор VLAN" @@ -11205,26 +11059,24 @@ msgid "Q-in-Q/802.1ad" msgstr "Контроль Q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "Ідентифікатор VLAN" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "Маршрут до цілі" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "Агрегат" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "Діапазон ASN" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "Діапазон IP" @@ -11279,8 +11131,7 @@ msgstr "Віртуальна IP-адреса" msgid "Assignment already exists" msgstr "Призначення вже існує" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "Ідентифікатори VLAN" @@ -11298,7 +11149,6 @@ msgstr "" "випуску. Користувачам пропонується використовувати для цієї мети групи VLAN." #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "Правило перекладу VLAN" @@ -11311,7 +11161,6 @@ msgstr "" "можна вказати за допомогою дефіса." #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "Шаблон служби додатків" @@ -11486,7 +11335,7 @@ msgstr "є у пулі" msgid "All IP addresses within this prefix are considered usable" msgstr "Усі IP-адреси в цьому префіксі вважаються придатними для використання" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "використовувана марка" @@ -11498,12 +11347,12 @@ msgstr "мережеві префікси" msgid "Cannot create prefix with /0 mask." msgstr "Неможливо створити префікс з маскою /0." -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "глобальна таблиця" @@ -11512,129 +11361,129 @@ msgstr "глобальна таблиця" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "Дублікат префікса знайдений у {table}: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "стартова адреса" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "Адреса IPv4 або IPv6 (з маскою)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "кінцева адреса" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "Експлуатаційний стан даного діапазону" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "Основна функція цього діапазону" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "позначка заповнена" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "Запобігання створенню IP-адрес в цьому діапазоні" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "Повідомте про простір як повністю використаний" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "Діапазон IP" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "Діапазони IP" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "Початкова та кінцева версії IP-адреси повинні збігатися" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "Початкові та кінцеві маски IP-адреси повинні збігатися" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" "Кінцева адреса повинна бути більшою за початкову адресу ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" "Визначені адреси перекриваються з діапазоном {overlapping_range} в VRF {vrf}" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" "Визначений діапазон перевищує максимальний підтримуваний розмір ({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "адреса" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "Операційний стан цього IP" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "Функціональна роль цього IP" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT (внутрішній)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "IP, для якого ця адреса є \"зовнішньою\"" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "Ім'я хоста або FQDN (не залежить від регістру регістру)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "IP-адреси" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "Не вдається створити IP-адресу з маскою /0." -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "" "{ip} це ідентифікатор мережі, який не може бути присвоєний інтерфейсу." -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "{ip} це широкомовна адреса, яка може не бути присвоєна інтерфейсу." -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "Дублікати IP-адреси знайдено в {table}: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "Не вдається створити IP-адресу {ip} внутрішній діапазон {range}." -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" @@ -11642,7 +11491,7 @@ msgstr "" "Не вдається перепризначити IP-адресу, поки вона призначена як первинний IP " "для батьківського об'єкта" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" @@ -11650,7 +11499,7 @@ msgstr "" "Не вдається перепризначити IP-адресу, поки вона позначена як IP-адреса OOB " "для батьківського об'єкта" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "Статус SLAAC може бути призначений лише адресам IPv6" @@ -11850,17 +11699,17 @@ msgid "Added" msgstr "Додано" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "Мережеві префікси" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "Утилізація" @@ -11887,7 +11736,7 @@ msgid "Pool" msgstr "Пул" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "Позначено як використане" @@ -11895,7 +11744,7 @@ msgstr "Позначено як використане" msgid "Start address" msgstr "Початкова адреса" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "Позначено заселеним" @@ -11925,17 +11774,14 @@ msgid "VID" msgstr "VID" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "Правила" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "Локальний VID" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "Віддалений VID" @@ -11955,16 +11801,71 @@ msgstr "Імпортувати цілі" msgid "Export Targets" msgstr "Експортувати цілі" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "Створити групу" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Призначити у групу" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "Розрізнювач маршруту" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "Унікальний IP простір" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "Номер AS" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Сім'я" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "Дата додавання" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "Початкова адреса" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "Кінцева адреса" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT (зовні)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "Первинний IP" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "OOB IP" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "Тип аутентифікації" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "Ключ аутентифікації" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Роль Q-in-Q" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "Клієнтські VLAN" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "Додати VLAN" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -12002,26 +11903,79 @@ msgstr "" "У назвах DNS дозволені лише буквено-цифрові символи, зірочки, дефіси, крапки" " та підкреслення" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "Інтерфейси пристрою" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "Інтерфейси віртуальної машини" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "Імпортування VRF" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "Експорт VRF" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "Імпорт L2VPN'ів" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "Експорт L2VPN'ів" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "Дублікати префіксів" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "Батьківські префікси" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "Підпорядковані мережеві префікси" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "Підпорядковані діапазони" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "Дублювання IP-адрес" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "Послуги прикладних програм" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "Пов'язані IP-адреси" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "Правила перекладу VLAN" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "Додати правило" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "Віртуальні IP-адреси" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "Додати IP-адресу" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "Додати префікс" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "Це поле не може бути порожнім." @@ -12526,7 +12480,6 @@ msgid "Contact Groups" msgstr "Контактні групи" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Контактні ролі" @@ -12546,11 +12499,6 @@ msgstr "Графічний вид" msgid "Modules" msgstr "Модулі" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "Контексти віртуальних пристроїв" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "Профілі типу модуля" @@ -12564,12 +12512,11 @@ msgid "Device Components" msgstr "Компоненти пристрою" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Ролі елементів інвентаря" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "З'єднання" @@ -12610,7 +12557,6 @@ msgid "VLAN Translation Policies" msgstr "Політика перекладу VLAN" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "Правила перекладу VLAN" @@ -12689,7 +12635,6 @@ msgid "Circuit Terminations" msgstr "Кінці каналу зв'язку" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "Віртуальні схеми" @@ -12705,18 +12650,11 @@ msgstr "Закінчення віртуальних схем" msgid "Circuit Groups" msgstr "Групи каналів зв'язку" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "Групи завдань" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "Провайдери" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Облікові записи провайдера" @@ -12812,7 +12750,7 @@ msgid "Journal Entries" msgstr "Записи журналу" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Журнал змін" @@ -12865,6 +12803,7 @@ msgstr "Фонові завдання" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12883,8 +12822,9 @@ msgstr "Клонувати" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -12896,8 +12836,9 @@ msgstr "Редагувати" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -13169,7 +13110,7 @@ msgstr "Фіктивний плагін" msgid "Copy" msgstr "Копіювати" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" @@ -13177,11 +13118,19 @@ msgstr "" "Невірний варіант декодування: {decoding}! Повинен бути одним з " "{image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "" +"Некоректне значення max_items: {max_items}! Повинен бути додатним цілим " +"числом або Ні." + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "GPS-координати" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "Пов'язані об'єкти" @@ -13457,8 +13406,7 @@ msgid "Account Details" msgstr "Реквізити рахунку" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "Електронна скринька" @@ -13480,16 +13428,15 @@ msgid "Assigned Groups" msgstr "Призначені групи" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13564,55 +13511,21 @@ msgstr "Вихідний код" msgid "Community" msgstr "Спільнота" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "Дата встановлення" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "Дата припинення" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "Поміняти місцями кінці каналу зв'язку" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "Поміняти місцями кінці для каналу зв'язку %(circuit)s?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "Сторона А" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Сторона Б" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "Призначити канал зв'язку" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "Призначення групи каналів зв'язку" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "Додати канал зв'язку" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "Тип каналу зв'язку" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "Точка закінчення" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "Позначено як підключений" @@ -13622,13 +13535,14 @@ msgstr "до" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "Слід" @@ -13642,37 +13556,30 @@ msgstr "Видаліть кабель" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "Відключити" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "Підключити" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "За течією" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "Вгору за течією" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "Перехресне з'єднання" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "Патч-панель/порт" @@ -13680,39 +13587,10 @@ msgstr "Патч-панель/порт" msgid "Add circuit" msgstr "Додати канал зв'язку" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "Обліковий запис постачальника" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "Додати віртуальну схему" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "Додати кінець" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "Припинення віртуальної схеми" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "Додати віртуальну схему" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "Тип віртуальної схеми" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "Дані конфігурації" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "Коментар" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13735,31 +13613,11 @@ msgstr "Нова цінність" msgid "Changed" msgstr "Змінено" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "байтів" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "Хеш SHA256" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "Зміст" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "Востаннє синхронізовано" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "Бекенд" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "Параметри не визначені" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "Висота стійки" @@ -13818,70 +13676,11 @@ msgstr "Файл даних, пов'язаний з цим об'єктом, ви msgid "Data Synced" msgstr "Дані синхронізовані" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "Завдання" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "Створено" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "Планування" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "кожен %(interval)s хвилини" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "Змінити" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "Різниця" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "Попередній" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "Наступний" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "Об'єкт створений" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "Об'єкт видалений" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "Немає змін" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "Дані перед зміною" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "Попередження: Порівняння неатомних змін з попереднім записом змін" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "Дані після зміни" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Дивитись все %(count)s Зміни" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -13897,6 +13696,59 @@ msgstr "днів" msgid "Indefinite" msgstr "Невизначений" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "Коментар" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "Дані конфігурації" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "Параметри не визначені" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "Різниця" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "Попередній" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "Наступний" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "Об'єкт створений" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "Об'єкт видалений" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "Немає змін" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "Дані після зміни" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "Дані перед зміною" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "Попередження: Порівняння неатомних змін з попереднім записом змін" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Дивитись все %(count)s Зміни" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "Не встановлено" @@ -14183,22 +14035,13 @@ msgstr "Сегменти" msgid "Incomplete" msgstr "Неповні" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "Не підключено" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT для" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "НАТ" @@ -14206,7 +14049,7 @@ msgstr "НАТ" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "Копіювати в буфер обміну" @@ -14256,10 +14099,6 @@ msgstr "Видалити" msgid "Local Config Context Data" msgstr "Контекстні дані локальної конфігурації" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "Відсік для пристроїв" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -14287,34 +14126,6 @@ msgstr "Відсік" msgid "Add Device" msgstr "Додати пристрій" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "Позиції" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "Позначено як підключений" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "Статус підключення" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "Відображення портів" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "Не визначено відображення" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "Сторона А" @@ -14340,6 +14151,8 @@ msgid "Path Status" msgstr "Статус шляху" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "Недосяжний" @@ -14348,8 +14161,6 @@ msgid "Path Endpoints" msgstr "Кінцеві точки контуру" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "Не підключено" @@ -14395,94 +14206,10 @@ msgstr "Висота стійки" msgid "Loading..." msgstr "Завантаження..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "Додати дочірній інтерфейс" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "Швидкість/Дуплекс" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "Режим PoE" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "Тип PoE" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "Мостові інтерфейси" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "Переклад VLAN" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "Бездротове з'єднання" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "Канал" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "Частота каналу" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "МГц" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "Ширина каналу" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "Додати IP-адресу" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "Додати MAC-адресу" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "Батьківський елемент" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "Ідентифікатор частини" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "Призначеня мітки" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "Основний для інтерфейсу" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "Додати тип пристрою" @@ -14491,6 +14218,64 @@ msgstr "Додати тип пристрою" msgid "Add Module Type" msgstr "Додати тип модуля" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "Статус шляху" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "Кінцеві точки контуру" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "Не підключено" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "Відображення портів" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "Не визначено відображення" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "Бездротове з'єднання" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "Канал" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "Частота каналу" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "МГц" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "Ширина каналу" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "Профіль не призначений" @@ -14510,7 +14295,7 @@ msgstr "Виділено" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "ВА" @@ -14534,44 +14319,6 @@ msgstr "Лише зображення" msgid "Labels only" msgstr "Тільки етикетки" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "Підключений пристрій" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "Утилізація (виділено" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "Електричні характеристики" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "В" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "А" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "Фідер живлення" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "Додати подачі живлення" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "Максимальна потужність" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "Виділена потужність" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "Додати бронювання" @@ -14611,10 +14358,6 @@ msgstr "Додати тех. майданчик" msgid "Attachment" msgstr "Вкладення" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "Додати учасника" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14666,10 +14409,6 @@ msgstr "" "Ви впевнені, що хочете видалити %(device)s з віртуального " "шасі %(name)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "Ідентифікатор" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -15006,6 +14745,10 @@ msgstr "" msgid "Journal Entry" msgstr "Запис журналу" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "Створено" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "Група повідомлень" @@ -15500,37 +15243,15 @@ msgstr "Вийти" msgid "Log In" msgstr "Увійти" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Сім'я" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "Дата додавання" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "Додати префікс" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "Номер AS" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "Тип аутентифікації" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "Ключ аутентифікації" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "Віртуальні IP-адреси" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "Глобальний" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15565,15 +15286,6 @@ msgstr "Показати Доступно" msgid "Show All" msgstr "Показати все" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "Глобальний" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT (зовні)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "Призначити IP-адресу" @@ -15590,51 +15302,43 @@ msgstr "Результати пошуку" msgid "Bulk Add IP Addresses" msgstr "Масове додавання IP-адрес" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "Початкова адреса" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "Кінцева адреса" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "Деталі адресації" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "Позначений повністю використаний" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "Підпорядковані IP-адреси" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "Доступні IP-адреси" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "Перший доступний IP" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "Деталі префікса" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "Мережева адреса" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "Мережева маска" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "Маска підстановки" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "Широкомовна адреса" @@ -15646,58 +15350,14 @@ msgstr "Додати діапазон IP" msgid "Hide Depth Indicators" msgstr "Приховати індикатори глибини" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "Додати агрегат" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "Імпортування VRF" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "Експорт VRF" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "Імпорт L2VPN'ів" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "Експорт L2VPN'ів" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Роль Q-in-Q" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "Додати префікс" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "Клієнтські VLAN" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "Додати VLAN" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "Додати VLAN" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "Додати правило" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "Розрізнювач маршруту" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "Унікальний IP простір" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15766,61 +15426,14 @@ msgstr "" "Клацніть тут щоб спробувати завантажити NetBox " "знову." -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "Контакт" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "Назва" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "Телефон" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "Контактна група" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "Додати групу контактів" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "Контактна роль" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "Додати контакт" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "Додати орендаря" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "Група орендарів" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "Додати групу орендарів" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -15931,16 +15544,28 @@ msgstr "Політика IPsec" msgid "PFS Group" msgstr "Група PFS" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "Додати кінець" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "Додати тунель" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "Частота каналу" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "МГц" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "Ширина каналу" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "Додати бездротову локальну мережу" @@ -15975,6 +15600,20 @@ msgstr "Роль контакту (ідентифікатор)" msgid "Contact role (slug)" msgstr "Контактна роль (скорочення)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "Контакт" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "Контактна роль" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "Контактна група" @@ -16007,6 +15646,15 @@ msgstr "Додати групи" msgid "Remove groups" msgstr "Вилучити групи" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "Назва" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "Телефон" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -16019,6 +15667,17 @@ msgstr "" msgid "Assigned contact" msgstr "Призначений контакт" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "Група орендарів" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "Контактна група" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "контактна група" @@ -16120,6 +15779,14 @@ msgstr "Посилання контакту" msgid "Contact Description" msgstr "Опис контакту" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "Додати групу орендарів" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "Додати групу контактів" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -17409,10 +17076,6 @@ msgstr "Додано {count} пристроїв для кластеризаці msgid "Assigned VLANs" msgstr "Призначені VLAN" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "Дочірні інтерфейси" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPsec - Транспорт" diff --git a/netbox/translations/zh/LC_MESSAGES/django.mo b/netbox/translations/zh/LC_MESSAGES/django.mo index a020d02178302c7ffee541384f8e6768d76a2920..127b98a0ffdfa51a84da2a11c0bfe5f36ea94985 100644 GIT binary patch delta 76016 zcmXWkcfgm^|M>BDcSEJp9u#-$ZtqQd50z4BC=x;`6^i5?l8izk6cUO^vPz}oW3=q- zQHhLfk`X@7=Y3wkKYovM&ULPHUT0m`^}hM|-uhapuiq?{{j6-E+cW&Xt4n4wRk7j3 zOr~VnOs4$@mS!>+BF$3o9%;iyVE!x2?k$)(B0&QR;R>WOsL;KNy55@HYwNt(<+QIR-80+EX zxD|V0`@FP7b1++vf;UOD#=r1HY*wd0rU*{NHaHC}e-u060UUyPbqi!p#hG{^zJWcl zL%jl-^KcG!!|%gp^$TR0lfNW%+sdvLtL^ViZh|{8i{KzX@II zTd@K@fXCx==n{Q^oZQSFbhCYrcJvpz84ET`*N?_y$X5yLh1qr_yrB=;;9#`D5#e}r zlU;%~cojOe*Q50}q9c3}ZRZvA{x{HL_9=S*&*4Al=_uAbe_+{6WfIOneKf*WSRH$y zH;zYdn1+t(`>k@fP$r-j4>h9$l)J(ZJtFJK7)De?VvEZ>)mFT2jyRUz3C#H9>Fah6XeM z?Pv@d(B!y21KnKLpu6~bbcUY7`uHL`L*Iv)Rs}Nc$d^MmZGUWnb1-Yc(bVs&c9PulL9wU zD|Dpo(1^QYO}qkY;WG3=^fGq9OxrZ&9nt5+DQL$xqceIJIy0-$z&BxMd;@)imu|=T zcdZ(=E09@;?Qj|HLLbE!o|qcCI=lmIXjS+;-b4OPtX3eCnRHTt%wY02wNFpTJ?JTE z*&)r?N$3E(pfle$OTq`sRZ*}RedHcOAGM7-7RXe>3(>W{7V~foIz#WFGgrD(fy`(u zk1pX@k*?QFGW84ISEJlUs%3#inJd30BVBn?v^+OyI^m83VpvH!I3zo zOPc!U&|Ut&@U1A{gD%B4QT_+gZZ=b-Yr3%<8b~#CikhRF?<8~t{UU#McyTxfy>C(Y z2>K4$j0S!f?YL04lrM({n2Y5+|BXplp)0x<2BDAI(P#tH(A_;7J@2dTXaeOK-(?ZC!0Pf%J)gf<{~uW8R(5SqHBLols}G+ zaBJk>M338k^mrZ&EA&mrvJ=`-H#`ITqMLga`UHI{8;R%85pF>veF?4jHae1z(I?-R z=m>KArTVSV4o*bx>kYoc;13O51tJ_M0fuYv|gvdsl#dLTXO|Y!=32q=yYoOdR~lKKLkD}(F)5B zDUcb8y>SHIi>Klr=nS1al!)VV&@H_=h?a%1i{e|v{BE!=ZmP4ns8am~*F#p2@Jq?}E_x})dX>LQOehHSthp;6+ z7uSD4kN5AxIsa~=q9am4Mf7!B7k#~UMrY`9wB9PT!S(2j?Lq^|8JRjRiw@{mwB7(T z;Iq(8dLib&Q_xd4I~xVJp%E`bH`^+-;f>)=^uhBn+Q7GHK!?#8D?BRgl``l6+Txjb z3Z9K?(U(=l)6)a56*}YDTS+)&ccYOm4_BkdY<*n+2%D1s92;V}(P>FKqxbhh0~&}1 zI6Cqdpn=ao+rJK-nT5#GWiu;Cc;iNNO17s9nNQGj`!o6$EIuavxU7YCFace|8R%>E z2DIUa(2+fdPWg-BHgtwx4?nF9{(ME)jp z0C%AyT^Z%iM*083x6lFZK{xF$SjzK%)S0Q_is*=Hq9bXAHrxjt(P?PMXQF|fhfe7v zY=M`dn|3u??<=&uAJO^+#-`1D6b>fe2D5&<-9W+{zC=6v9^Hh$qnqofv(m`Qq35^; zI+77lJ`tUvnc=nQ=Dith=e{U^0v-7Vbf(@oi}P>dvnco;yO2MEZnlo&(%Wh>T5k<{ zeKR`p%-QM3=+S7t1Nxlkjn*HCzQo3$OMD3$*!=LGv$LsSH3dfcJo(ktB-cn8EtqVI+JI__3>!Cv%&>&{XTTYR%YYET66?2qHFdVI`wJlS zeE*?=lsGq)ABzUq7`@&N4eS)O-nr=g7o*?*^U(Saq3vfkkTBv`&<0*dNAfY|cO3qQ zja)-RO+#m3CfeTh=-#*kt#=Pr@cchc;sgp_LO;R2Ks)>f8{yyR z@u_!yYM==kXlu0LerSio(Iq?+?RWyV!OPGYS{v72Ku_6DEa~~*O~N(%99@$?(1r_L zkQyq3=1)NDHN-mD6&=w9Xa`f!db82pJ|FYf8VzUz+Wt1Q-fql)|L-H=>$A*+^j13s zeOb&!XW}6=;&o_8FQDH6Z=ekyJu%H(6?CSK#~iGM-d88CH;sI&u;auy|Gg;i#$o7) zP7lYSQ+ffq#+P9Jt_^QQJ6Mb^-7>V^Lvei#I?|1i--b=e??&qtzL4|ph>p21y*`ge zJLnPlLFhN&j3{4=Zl34SP5V05#eLWui%&`qqz-r-`N`-E-5B152D%dM=dmmaN4P%x zANC~wI<~|LlhdbHU-aYgI&`L9MmOC~bO7(5$M*9m{{;>7FU((}i&DM{y4mZadnwzO zgq!6|%)=Szn%{>uuokWOB3kbQ^cenxejgN?lJa@z)SigW%mi$LSE2ztj_2VfG|<{p z^Y>Ub(~5*&vqR9eoQ^$kHhR8aLH9&vTDtKlbmW!L08c=_o|~fg4Zv2o2y<~qco3cG z5*H^cVgCES1_`IM8QNf*us6C!Bd|N3gXiF?C@+0U3alzxuO>RuCg?yqggxW>Ky+qD zp_}qT^Pd09NjN1pp$#pK3J;?JJrm`xpdGv&`MqdE-=QP>6FXy}OH(^Na0>ZB=u-R- zt^aG7na=rlElZNHGRHeU&BO1>6aJ`~*>XQB;`M^DKm z=n_1I*4u;z_9}WTKaTRlmvR0*4mp>nb6Eooqz-yxGjtQSM+3VQ2jG?HjJ<}r_#t`> z|H6S-Y-akYHUbSOiw5*O8t5zN{ky&3jeF7E`y={*Xmv$ef)mjZjzJ%}=b#PUk51(( zbVTdWfZvJo&(Ql0q7SBD(2i@*N`JmNBfs{h)S3zg42IgXY^mDx*(qA@nE(vc~h&Fsrx{!GQ{foyN z*b|G-PG7Bq(9QTDdYqm?A55>Jn{p5OJoz2RVwI~>05j15uR-66x8}?FTS3B(Hllw@ z{T*GKztDh+T%DGv1iBZF!_#mm_Qlocp7{fPQs!KfrnWNLQGav>&I&I;XJ#rsKCB_y@j3e=(*|d04HN(@;BqfxEWo_7T2Zr zZa`;h3uYbRdn9u46Lc#7K_jm)FP-1|=m@%@o2nmreK0!W@#x3pEc8))H@c+j(V6^T z_(qg}9QgzDIR6IlOBDQpu2G@u)0CD)A0SmR4_l!>SWZU+T89R-1?}(^G_beOQ*{7+ zvK~VBOyL_+z9L#L?*=xP9i9{geb5`nM8ylkS?CDoqYbS>@7svh-;NFO12mArH>QqC zqnk7ror&h?^^S49PnLvJI09Xh$!Nv7=&@ReZkEMSz6>4lV`v~xp-c7>IwPN;Gx`Nu z@7uWkbL5NNl-esDW~-2}qZ-%<>!1-2MMpRueRN)e26jE#!R>K<3Dzh72s*Oe=mTdD z+HTqTX@)AHrz8(;r)etBX4=Pve&`eqMR)Jj=*ZVb`3AJ(uh1vo_h`Mp(6?K?1?inJ z0(+9b7q7=J(V3ZibK3pW(RLrh{D1!c3<;ljuc9OP2z`Kji8fsHmh=tS7L9xgT7MS0 z+iyXq`f+r|oHa+QzP9LFuy>Y(@9%Nwh|D`>bI~W%t>_3> zpd)(}t+x&hY%?0@ZZyEp(UJca7Pun?TncTc4myJkBcE+eqBaF5p$(5k&+mEY-dKV; zcprAc<>&}M$EKKBoSux$&_D*D0i2Ew{jg{7tljJ(2$r^8-Q$a`atkFH}SCYlc2AI-yHC7;S&Ndj2mZ;f>d#4KI!g zE2I3`$ZtbCdLQfH7nqAB?oJIiLVvb*MeB{lmN*G*{{i$v=NZhypD^2sM5QI^E44qm z2X4d%aUt4Jo2BXecSlc2U$ntd*cC5C?|UN3*P&Cs9S!JR%*Ef(dKK#-GJ3J*Sj7Fz$YUF35Q+GRB|3S2arz8Ik`kLO42Aa7y-CqX1?*w!YG)4nyb1&!L z8R$rXo9AL|joHXQ8x^;rdt)2g@N4K3@iX*M{RJBMcj$BAPxN?}yf4+S8MZ`ct_K>> zY1z1NZWK(93Uj0UPPCy%(D(cnY>e+md68x5-{q=`O(;JP4d_lZpk?T8UyXLS4jsTN z=n`e$kHmhoqaU#u7QR3IQMnB^BtHQg;hoqNUqN^EVRYt-FHa+{fR3;pI@Kqko3ML$ z8QRa|Sj+SO5{c>*e1rAy=m!eqZS57d;b3+;f;eHDUcb5ORx+6hpu^-Rq5Q0Kp!BB z&;TDn*ZggC)8;&yY==I=FG82<0ql;u(Y;XRv9v@rG3%yiMZ!qCqa6%KkJp9aEcC|t z=%!j6J{aX|(WTfJ`S;PywJ*xQNAD}PIvvM~Xuq{qbN<~tEhx~A=@u{#ZI z@N}$?=i&2s8~Uj>=<&4KE=C713tjt#==G=38GawH#_DURSAgfonrwQ@J@-V4?0K}K zooGPsqYZu@*AK__!fVs}y9_$=hUg~k9p&TE8NC{P|KEWQWHq+JC((g^oh9K^|Aap2 zGEb(pE`>f?`(O*a2|ZRXpiA*K8sH~r!(YYq?;`&%I)eqDO7)7NOHdx&E7j5Cn;lNV zh9^Y9EVSWU&`0DF^gCcVIx{QKK%Yb#cmds9@1Px4emd1V9=)$V=09@LcH2b0YszOc z{YcpGFf_um&=F2f6*8Aaehyl10b1{FbQ7&ar}9}eu+8YH*@X_^3#^9+F&8U5liF#G zg+2dWN!UPdG{RG&!l=lPN2hoydfcW*er5O=`qEj8-v2tfq#vRK`39YVU$HG7LHld< zEcHGA9Y{EJz0vRa0eAwQhc++|9oa%W8<$}&7G9U019@o21JTVm67BF(^u8<_(0sJs zJ>kQcZAigWB;2igu{ZvPZn_TZQvg%Ysh)|h=?$2_6zCM+jgIJkw8KZxQ?oA0ccDwR z8?C<&4e;yr@%#U03i?xU7;U)6bE%<0X#NbWg%i+vx5V|&(15-}XX>Z$uP86HAuU}| zbhDO3-+sB+0Gn;#{QHO;O+kHJfbH=)bgF(wr>?-pWEpfM)zMSa7@fJ!SR03+GjKWD z;XE|JCFqFn3m-;jbZs^gFQ5&-5&2KhNDra`96>uOu_?VibJ3Y;jZSIT$oD}57#fa4 zXJ!gIpqXfUb0eRHS9~aidg)QilYe!t)htANCcqJbDd%EY! zpNbA-1Uitj(SRnPGc`S~&$Ha~e;Wzc{ysF2$HEO(AioVgPP@^1-=H1*j`^E&YpPcU zyTM3o9A|%i0iRA)_y5{vkk{4)(OH|W$K_i}n*^}sgdFTXp!xygEr_c?}^?&8r?Hf(7Kiv^-pk2A+L^gcaXJclW30 z$oHdr;VbmX^(Pv6&W^MfDx;gQM%W15?QPMKcETL&9@l%J0Srd>&RC@VY-TD6zt!eo zLtGIR-oeh~zd+Zz_Rchwr(sL-7oan7AKLJn=nU*Z1N}A1i|tBFS{dDAdFW~CgH=5L zV@P=840K9vLL*#?HoQ9AgihtoxV|6l=r{CrUHr8aV10B3I-tj_D>_rBpzV!{@(a}S zKO+j}qHDJ(^2^X0A4eN}4qd9v=%(6<2L4&(e?bE*{CeuR8hUISU>|IS{_!e{jqy&* zx@NDEu;bU!{6}cy`_PDg4F5&zm3$*zuY%_5ge}kjJE8ZT9F9Vd=>_Nq$|Cf>C*I)v zd#*Q8;97o%-dOF;)KEh--ws{7-smx#fIc^-p__9Jx@p(P^-btNUP3$CiEhUCu`hmv z?z!4;asJOG(d(`B+wXBSkiXIIfQE0U2hsW1j{H&_hwq^Qo%l}rO*k4|qNV7}-H!&k z23>-6=$_h&F5TPcp7}CM!bl45E|C9CR|j45-q;OK4Hu&$`WW54pQ9r`j81vx-E_Sq zdW_3Q{#bMdtD`f~6b+<3dSAAGTo@Uii$*pTb8%thpF(eV2Mus9+Tg+PFgoIb@1;PF zM(dSDPgONE;6`YGt{!hY&d!Y>uK_fg9ovJBueNL3$iq>0>&dB5F6h9Mg3Adwr z;vIBp-jDnz=#1>eqdosWM#0}<@%K~YRnP!xp~tKZ+EKr_J`@e$%*c;N*M2H`-|X-< zbjeo4^^M_nJi+t-K8d<`7@exz57IlJDSBM`qI=|A^iQwzuqLj+hPVT3Mp$)A^ z1A7f^??d!S_fuHx(=?D8XuS^T%=Gz`^Pfjz90g9z4d^aj92M_F*YwdSe-7<%YxrJx zFwA_Gc6kN#rFA^Iw5LS=GW2gqkD{CW+bjv!_HT5TR@;+yXALycW|8lJ9;cI|{4{J% zejN71JJ8MeXTZa+dd z;oivqi=OL3`_j~xM2}Z3bYLye_J^W>Avp(Kx;aRI+05dU$Sg&V*ZpXukD?7fg)YG+ zw4ohn03V^p@{h=u_&nWTAHCiZJspG58Oox2;}tZ(PqC8c|2q=>DJZl*bvzh7UL(;5 z$dzaySBE!-i^6-*sb3MUMyLMixc(gGk$*ADzd;A|1LptxKSxLyaj7rTS~Wyxq9ZyJ zz0s*Z1zodYXh37p<9Y$Qd1s@WZaxmeE$AjI^JSXy8fc)c(DvG6*3HqCgbfct_rMuw zgA>q5XGHnjC|`)yzc0#Hq3t{y`EBU^yU_smq3s-w>xByqWx6)Dw`r}M1c*RghtvI zo#Np*9LHi^+$^uF^WKNTI|<>)577M+=0=s-Tql5kfZj0-v6 zqzlKO<<-%Vv_&KCjy~Cjqwj_(=oHUKA50IR0jx*&&em{yTz?A<-~c+1?5`x+lF0cs z-FOnZ`MRSW4?s83$hbZsycnISS?E&S7%o9a_9)uH^XUD%qWsgy|A++6`8$}N%@xs# z&Cn5bMMpFo4d_BN^68PEgYM=9Xh*k4{z0^zN6`UnLhsv#2KFxc=en;j|9}5i=(|+0 zGTKlr?1e4RV=@!%=qj|qc~~14MfnCaz^&mk+L;8!%jf6#!7{g5n;wpR&Vsv2nh=9u+D z`zYvz<_CqRqaBV%Z@d%-;9RtUcjNjVbjp7~>-`t`V}4A356DH!XX06SBet;qkDUJo zBx?MWcJ%-`Wj{ea25)GvKFR6Y@boX~c*SbGC!jYJZ7ex7u=+fSa2C@{b zw*npDvsn_Z)h2Z9{)aaF26nAD&p`*W7=3Q6 zKs(-mw!Z^CW!Vo%bSCiw`irN@p>)GUyp{ZHoPlM3Pb0q(ZTJqfqleG|tj9duf)3;W z`cnG^ouSf)Q^(cNfEpn6vYAdK8dJ~@o8aYWgR9Vp*P;z=MR)xkbOc{x{>LU-uk9ac zihHBajlozC$D{4titeF1(I?|NEbjAXOBC!tJ9rx#;>UOb7X35*6swCp$xlQdAWxwq zeG?twC+Pj(plkaJ8rUD`+86yRbzByGejJPWfB)|s7y6+$oErIY;RJNV)6iXf724oj zG=N*s4wuID<>(ZzL<8H1-oFh`#P_f}mie3W?~TJqIO5aMhOb9Y#ck+R-5ahzJA52H z?;Frfv@^>0Mfvwp{%@3*KayrF7aLK(1KRI|Bbr;NzKgs6kKu7<>`FG04Q(#Ba(FW$BYjj8CH=#4K z18wMCbW>&iO(Qu9UHg(~y^3M=up#=|ZiC);3L5xnSrR_U#)alR4NK4w?!X54Df+ja zV*jNjsg5>O4-L2}I%6Fp-#;9Mj`V!Ay=jr3i{78Tg@lnWM)$xnbcC;A9sC3R^vdNO zX1x>98@pjY?2FUz4)pa}yg*L=si}%R$+t&m+nxB;^H|u z`Oky$Xudnz@c?whL&I_C+D}0@>y>DSbI}psicRrBbO7(7?R=J>=lp+3!Ulgpr|<~6 zHb)oC$v@|nFpqpobn}fu8#oiaZ#-K6lJKf~iv^q+Z!gcaXLNAe-| zzys)r8Wu{|TcXG9B(&ZjG@vn&ABWD=MQA{mqwUTO=c6;TD7+8z|M&l^qTpHdG;BrJ z@-4KX{pi~Lh`E?4oUD!p(iJ_=1JQtnqJfNz{MqP0&PM~9g0?%Oa85SA!#Nb#z@n&l zH~I&M<=7cN!EsovNKWQVyb9fIDo`S|Qxx6Q z6(U~;^Z)lhEu)|tI+drOBODi=hi;+^(LgT6?l=d1rf)}Q;&XJQ-=Q7|9}VCj+TkIzy#l4ufQ~`) zHPH5&qI;z~=Kuabm4s`4PIzf}9UAGKkza*=LTyBs<|A}wzKZ-$SeN`i=nUo^lLBgh zFOzSB&Ag7DiYBEw|DN+HrE@ZK@lhO(&C8@?awB@fW^~Gb!hYDQY&wotp&j0XH{vUJ zHx4eBlmDgjJ$k)v`P9xJY)k$cY>1o6bN=rk@eKuy@wy5*`Tr*LvuK3XE9PWw$8qTO zKhfUaVuF?cfh**MwjI2b#ekdyx} zt=xh$$REO9I4L)ODYKbpNm!6mJtzO)@$QROybsUD$~AKG|7Ulzus`|zXvfWJrlpvG zeo(B$^YAP5OX-wa>BHna^wfNU?y;QOX$G#xiGKg@AmLiH$xFxOOmw8v&?$Zh4d^|* z3J2CnQ}-4+wWaH(FP#%{5c#Xn8F~i?V*Pq)$u7qS$-jxG;3f6Bp8x(Q;UlwRgPi$X||K@f&pWHEf(V@7d_muD}8KEuN3FZv|> z3hnq;wBrKJQ@#{B(5lTj|2`7)D6qp5(TW4H44#f&pM<6HYIJ693zwh)Jb>Q!Fgk!| z!k4i#`FGKQRBVv~ZydJCl5mYXV+)*$M!o`lyFD5C=Oe!zo!Z^#(tUtE@%Je2&@x@` zf{w5Uo{9r;GCqKfuw1LOSF&A5bfMrfY>6AuC)`gs6&torH{6E?_8J=4hgc84K&QM^ zn>6wY=*-nd2h;}LLldwfE)Ac;D!%`BknkJs3v>O#xNMI%J2Tr{qesp(W@H zJc)MnCRWEn?NWPr*qMBLbm?ZHpKuG%daE%1pa1P5;WPXLJOK}*o2$}^X|v>_YugxI z`;*WHyP*LLL1$npIzyMC_g{51*831$iZ9U_`W_AB2-;rZPHE)FAe$_ciw^KabPo+imwa-kY+9QI z6u7A#L_6MyuGuSSho9gu{2E=;PMuQ+L(mS+K|9Ez_bo=-TOIkA(EC0@H~Ej~QXcXK zN0!qiZMO304Ael&n`1fbj*fUZI;CfZXNTvZGcXaIflJT_Qx?5{4mz+q(LM1%n0-1D zFJlufyoW|uq-*-RErE^6*G5M;1Re22%)_~ui>q-EzK%|DZnsq40X8eGX9Rv#4+8|6jnm-uZ2!=ORSB3us%*kA82=DXM7JG zNTnX$$N6hQ!iYPeYj-+2MN`o=yasFH-RO;*(U;15=*#E}wBy6*UMbNt1ymVrr*7oi zq4oM;T^xfIJ^$B{aAfzQBUy(A@+x}6rk;@C4Uw=<=5b)cr)(6 zBK>kQ+wm>zic3yToBK0#GneY0HhG8s+0;O{C>V&&$WU~R=c1c$5xObwMbGU@bVN_1 z$LrO|e~jMuLwE$8sp13DUZ{dzuOGI}lJH-#=!vaxEc%vO92K5IN4^yu={9ugcB6aY z6ZE+Ljy8NGEIu&ZR~cQB6VQ>@#CkXwU83w2BzzR!iaxuaz%%eubk}z{B|SLCqJd0A z1DO{2EIJc&(ZKFP1G*obxs~XHXDu4YCbZrQ$joFj+ep~p`{)$!N2l~V^jKyFrA<=} zjrb&Vq^F=Aj6v@^4{dk~+TmsB)Xzcp(rxIedJGNtMa=)_fA5m;QTq*gUjL4KiNUG- zc=Y%*MQ5Nh8bB|!xyW;7TR7b zbaA?%J@-bZ;8b+3#-GMwS@8-AbRHVOqR8JL`PFEL8_)({L>t_W4q!Jrm!F|?_dPln zzoTT38F+WetY2SXOLCfgN;0^S#gxhN6+4i9TvBK?A)E?fBZbelzwZ{~)?s zeng+8MMk8Ka>G2d-G*p8ZL%bMSa(As9fJlk9o@EG&)=?CgZwgdg#SYu*cJH?&=KuJ zXW}a~z~95n$TYLX(Euu;_h)NFL1T1n+My%v9~I6*mt;~n6YXdo8pr~)!Nus(EJp)) z1l=p^1Wv0I3Jqj38rbD% zAlJn8h3LRmpyy^IR`z4<9THCUcj!-)BWTC}g~d)!5tj>d(Wz^McGM2tGhM?|(3u#6 zj`SR~-c)oC&5Y|=%>S`AmxKY_h&HqYt@wx)a5XyRPojaXM+0~f?cnt&{}}D)OEiEV z!b52NBk27_N2hknV%8ffk?=w;ny(-E7U+!~BHst?@KiL=Gts~&MfsIcej_^dcZCl} z`8u@z%jjl)cQohUfbmZrt?M+1Y z#&mS;Z$#T!7CttH^KXUqQDGN4!hL8*KcFM|JuG}i>aaZ8K^3%qEp#(BL)+_)4q$kA zF51q;XaLus_uZT&;Ru(;g%xq(N%V#-QT}?Ae}s1YRh0jNj{M)q7dkUFTpFE;YH0mh zVH5Ouav~aNwjT*cdIlQV__#0)o!aZr0B=GYx&y6uKicu?@F}$6=g|5)(7m)f@}Ht3 z{t7+rzoqN^$J)oH3&)^0Rz(}iLpyAPcGwkdU;z4J9)&(?r=U|k53P3xT5mae{~C0p z8_+%QI$Cc(=Komxk%UwIA39~F&PtJ2KpQ$fY=Ab@Hm;wH&fL&&G&+ED;`-!p20Eat z(2*~U{DbEGvGxoJZ+sPv_$_qmKZ){vXafh)2988|sd1@(W%T}I-; zNr6{HuOEl5eI7cH=I3Nng|-wJX$N$qy`sX&=m-Z#{tPt0bHZt8fLBHSdbESZXn+r( z_pgfU>!SSS$nVOMFp`hZihJY2_vky|?l@%(>I!nOSdozg?-$cmqz8ZM1aVKsCLo1z_cM>`lC`Elr} znG*Tg;R5VL`BJ~Ka4c55F#R*q8Q6yWTI_}2T*&$FOrqJOH04vno3SS4k6|r*6a9nR zAslc0$vOG=-Gyh7{|J4Kbhs#a5xUDCKu7vG=Hl1b6^l(t0i8UB^KYcrQqU0JM>{Sw zHT?;rE;{X2{fB|pM<;l z)9@e~*`H{KN6$zd93M6c+hZ=*`$c|YI1|192K1NJQna0QXg@o`5Ax;w9U$Qde#0BF z;AJ`a|Bb_&(Op{T@|^ttgu%(^THcPHg6FX%9zdt~xS46Q=AwJ12YRY5LO0!m*dD)% ze61_kBcA{9BzoYT7T{;$F|$&Gox^j`25&$c+>CZq;L7w`ZHQh!J-h`^CI1q3z{+g) zJRFABn}t~uYf0G9m)HnP&rWs>C!)vj?r=-^1$tkxtJ3*ziOtFP#l|=b^N%rleBVSL zbN)RR$5Y_0t%E*-8%2da=naFyQCOV(Ig!68yd1r64!ZWs&`0)@=rP@f zzQlH+kLq_Y2lrmhhz($WRQN6`{2FGiNjH>4cl)tuL-oUEalLKWBODyp&p>DN+{iBq zm!Jb#o+aVtTa9+G35{@9_+fYe-NnB~zQ~-EFNZEc9(vy(^qnvUZFe%-?v?1@7Z#xP zR-#LkeVT+7_s4}_!vDe&*QOh)pbh1Pt+nTOt zGrLI`(HH2G?B{eL^G{fEZu+rU4XxK1ZJ>YT&kQd_U&oh6ejys*edr!qjSX=fIzwMz zV}Ji2B4NX|u1hvU*Q_IY-Y23{yeQlf<=>)vr|i6R-*I7GbdR(`pPcP6e-opdbQId( zbj*MM&mmz$H(G#;(C5JtwBo+-hwyK-UeW8*^ZSUVG zKl%pFzYVn~;o5dXE1VknGtu|;Md-157+sm-NK0D3M+Q+6sE;AnJYXQL0Io3J*n#aw(puK$4!B=_bt z)lIQF`IFHZn1r^s9PRg!n>qhSk@$fEBmW)UM8$4NyR~|FVt6WAZ(^858(fI4@m=8q z=xcm6`sgijYx?_OU-bQdJ9^))ED1;aPPjMxKKv^@YGLZ2JmxXQRh)eq7H!K*BYC3Oz0d(T4s+M^xmtbiPZY$L2V6FEm6u=!kYW0IfeB zy?;tvzcO5a*1H$2w=R`uGh0dcPmA6{8~!QGS(MhWJT{@cDca$g=m;)Cmtt;s7uvyN z=w5jlJ#OEl0TsJFSuw1M=X?H}lCa^s(S}!HD|`W++TYOz{)v3?J5v2J=;o@9Uhfv3 z5{^dizX1IRof7#+E2lHsxF4AhDIiD-wt!U5=jhK3W+ zK(9id4+}8s7s)0P-uNfFHkmuqCM%9ENjWTpweb|JkJg`wHh6V-bGS5oBzzW~;s2rc zy@MX#kM7Lrng8U<+?6iW2^(X7Dzu9HHE2gSM1FC2ZrUrn=`NmP7W7_&!Fvm5Ppe1%6`H87yr`K-=L*D%6#3NOM%;RCVHUnK?8df zePTR`Hnx&i&>`8uq0e|nqr#A%dIzyY`iPr}B_)BP8qPn4U`0G`G{Sm=TDFUk!=+RbL} zA>or_7k0y(2h+b>+!JkhAsWy=G~$8}rB9NU=!nLKOVIn@#m-n|MVir(=**1|C!sTb zNq(M3NtT3DKR3J$eL^h5{D(Yx!@;BXSf^<^fAnu zc#eb(zY-Nbj0*eFx6Ds*{g_A6zd>6AhfqEPYvOC@QvHniGqEb!3k`HYI2`?Tc~)GX zwTkoar^y@&oRUZ4!du}7Xn=dr2g!G6gMWlMkEUmC3AA2?utwMfOHtk)%V9sve{O`6 zAI+v+o~6JBR-$Iv@Ms&3GDq7}uMvN%yrym!cDT z|A1sRGm3dM>cqq(yBIS<>tD+CGde{(8L!Tpa z@~?CLo{0)Cq8dYv=2(3Ro@^jFoxDorCxSNDO zM<2mT_%s^fF7*07^!wna$QOAk)vJJZ)F|>DZW}whT>gK_c4AzaiFSQsJ{15u$r}(oe-vvGJ1JL$PkMeQhMOhL~-K;2>AKo3V44*~=+lmJ8HG1DK zVa~b~U|Dp@8lcy^goDDd=y{rgp0n(763t1xi6>ye^=T$*q7k=7A8{Sf59vN=0CU4z z!n?x<(O++mqaW1kqI?s&1h0f|A?;@~pQJ=)KicrO;cwx;VbSN(^|EMSRl}O-)Yp&e zZNe_-4D`c>I0~&d58VT|V|9NVt%wWT(D&!N=oI~i22^`P+GI`88#|))2BI(eNof6B z(5c^wcKm+$6&mnibT9mi22x@p(toB3iLRK3ekGoduFXB+PPBnP(SS0WQoeXtCajEZ z;uFw%&C!n9qk;8_{26GyiI{aH*(kU-T#G*3UqZhCK1N6MJ9-L=JfCLb1oXYzH1fkE ze?A((t#~#rK?BKbP92xTT(Y^FIscBV3kBV=H~IpekCtykJANbbd(b5~fNs{q=vQT> zE$P!{5V|CnU_o4r2C^i42yJ&w`0SQ!itKp`Y4!|*^h62FF-t?9;+;jv+zuw~dK9DwebQIWqH$B5QG6~n@J#-|WM!w8T>3g_xcs$x*Ewp~K$hSrJK#wTThI7%SnUDV4 zi_6fxuo>Mu+pvh||7#LH;eJFr_!~XXMPE)GwZmNUozd%K(V3VO`RmXp<0AAly@k#3 zCp6HSucZ6xV>$9|BHs`5|1Vh&Ct<}!abXF%dmlz$CXdDS{pcqB7X768JIX7)nmRZh zZKnYmKy!4&=U``?jDEjAfqn$Oi~0X0>%U33W_7ovUj}W_*X(uZh&Q1PZO69w4%$(P z?diU9XuXg-5sIVPME z&IuQzYq|=3;OsyHX|gi~+79ifbJ!n!aE;uVO%<-D!1H`PdgGl@aXI=sc@6f)gJ?i4 zccpq0&`ov;`n;Hj?u~Wm480k?kB;~=T#G-T174PWEj_tjML)z3VkhkOdfL_3gwLbL z<}ez-NpGZ0H#J;?o}TaU3e0^o{cyhroyjlI87TW!3hV@|Nj{rLq9TdD==mKRPDe*D zKU{>a<&wDm1Xd;g3VOWuqa74@J6S3`F03223cDt=nSoJoI@;m+XdoA%n`JJZg%8K| zqu)vO%Ay@sL6;y8eZ97e@?PN(bn3^V1Dz7(^RT?<|8^4IxGFBJ4_`)acpH5_e1m?$ z976X46F~gpdG&w`M1%L zeu#GPU6dDkH$5+oM(;lceQj5ad^2>W+J-%%d@yF~abW}rBfBQNHM|dPaCP`J+R#Sy z3Aruuf1;1zBJZX8ozW@ph0fGz=zU|Od{UHO`5x!rm(M&3JdaPsg^$tlFVO%>zn>bc zgt_GFpu4v>+VRA21ztsdFM8iuAEb8AM+3PvT!Q`pdFX>U|LZ7lvu(y2xEFl_7W^=# z4&D7d(A_=~?O;Y+&!Ug)n<9Tpcu%+reZH(im++M+|IizqngeKrzlQ&WM}3q!Dic;l zr}hN&z9wP&un)SV!_dt-8x8D6G~k=VJJ9D%_8t;Gu@1$BQXi*tT>-tZIl2j3qf^!u zZD>e1Dm)9Ve?D6OLNvh3B0m=md|{L?N7~8qUoTA~e>QvpeUk0K{`hZ{pZrPcU>Fvn zd?b3@&Ok?c5!&(0D8DYs??h+z0W|Q{=n_1Q`Tr&RSEJxfbcFlEL+JbZs87?HABT>h z9ok?YbcCm(Gk9iPzbw2yyeoVJt@m8`Hs=3D;UEc*-!JGRmH)_2ex%jV4r)cd85%&_ zus1rA;gO#Z`I+d4$O6nCarkt&5#1v%V*dX);yV(482pZQc-)@!?+(<(9^@OKyMGFL z?&qSXU>!R3@1irZH}c=2OLGWqugKn1uN*pnb|sj8lVxkK?CWIPVwOI9JHeu zXua#uJ+la1+ZE`2ThJMMEy_Pf@B2F}{&~8uN|uCE(g1DnB(%fc=nbRLU3~#I#7nUz zK7e-oD!LROqV*1=zn}{4PgC3xU9zEQfOD}v-iJOpvpYx_K%p;kGB;y+G>`|;&9gT0 z>%*6^HRW%|^Z6;vE85N(=)lfJXXrAd-)!bO65hBNz43lDfalOD zd(ZKegGx%&U^8@Bh!D;9&R%+Hm2&Q-dYYC8-kmhG>KBBHsu7_#B4bHxe7*Safg9 zM+18xu0Ij3`8@}$`keR#?JryS-*ikWV?7E+pbcGvj_iiW-;H*7f8-wzpNaBKXn@w-ghlJ^|!0%|KYf>F)r*3KMQ|GBQBJaZp=kHY=OSdPejjoZ*=4%(GJfJr=T5Q z8Tkch0823Ig~#Kr_^ z?!o+}F2w&OZy$|6QQ$GET)1HVv$`3&C(b~p@+S0#yU_Z}(6!$d<=>+9evbUV=;kb3 zB+XFiux8jAt=}gbiDBWmsBjS)&^3`?8m>X7_QlBWMo0P;_QapjhT9%hF#W+I9Ep}s z4zECGI(t2d{M{HA9uA*DNBm;AJ<8w2#*}}Gc3h%p!TbkQMYNqMXy9`qe-HYl^F-u- z$A;vK70X|mY^F7daTJVA1(}z_pU|m3u6Ua2ZfO3T$j^`b8f-=R`;jksbgI`1{X`p$ zzJ8xX1KEr2iM$eV{s)op++K@rvOCa`+#RkCUqFxBJLm}a;ZgV(`sB+gncAs}Zo)?B z40b`=>m80l@1KOnc>b>=;rU*S?eHn=hu@{iZ+JA^809;|55h0QU&8;;`%08gRz;6%L-ccf2-^Ns^oLCrS>kNw ziMa4__%+(lA@nC$;R-3hy4Z|-6LgBlM)`zrD%!zi=>2n}{0=;Y{5|NB{eUN9>52vU zcQHACqe=Lou>@P<3+NN>5VpWtl?vwn=T(QJ_12=B^F4It3RF%V7Db;2mC^ECG@v?R zOLWS+pqp?w9_#s^Lc$wv!q#{j`W)C1<%O!GH9H!uR~>D*F1qPjMR~ihGde@P&`moC zt$$89HOylE_y0{KJSKOcQ?wp^Abo`1_ z^UzH={aDVwYc-z&|JHL4+VPWU`Rn0l;SXpB|As}6OZl>4Rdh!3un^WqpO{V1_Bx{j zIwc%^9OvJH3n*{|)8oRG=nXeU`I2yX_y`)v6X6DQs$W9y`v4u`*Kz${bViC+O#`fi z?x7Z05=J-%oq@^d=9q)Icn>-wo1^?A^jQ6hF4=L_k|(0~k3gU8lkiHMhYs+lNyXZ`O zh0Z{M>S;iw(3xwEB|ZN`N%+fT96GXz=nb>bJ#hmXz^&o^;o5L3TJJ6NL*oN<=8Duv z`NrrBosPDD8yeVynE&_x%_QvbMiVz zN6-L!nG@!4;U&13{kvi$V(rCR(Vf83)fCk(= z@beJoH#!ktN}7y)!DTLT6-MxH-ySj{Mu`vHK8<;}7WX`9IOG+ZuJ#o;eR~ zcLqA38_;$apn=>TW|v1|O}GiYVSD6X3qK0K3V%bFqCmaWV5P7YI_1qG-#r|J?*1{6 zpPcg9%oQZOVSZd#7OqA+*bwd9*IuWj%QQ?ga4dSE5!!H9G}1okjl(hj0fo-kEcD5D3mU-6a4kBZjpz(+L-)dG z=qCRO{k|yHDBl0wNaRlydgI7&JQ~QwaeXG*(6wm8izB}p9r>2{Elgy z?yu80-v1pa@WTJ=It%cquC;B?WPsolFD(+>p}4!dyAuKghXijJ+}%Ra;!>Q#;83G@ zkx~jp3j`}#tU%$vpV{x6FW>pD|Gm!QUhDO>_TDoSX-++;69|K9Xc$xjV{JXf*7Kmg z(phZl4Nxbu&Gg?xZR8A8!&jkx81)3|T9@XX80HC`OZ|x zVIHUxDF)SG1*pcWLp9h8Do=M~KPdkpP=!ZBZD_V}nbEt^CVQX)j@bGPRNz(E06sE( zxx&to)`q$%+d?(a59$((fo-U`!%+E-L%pD#g*t%?#y|b!`Fp}dNBJHW zf{BVb_d+?SoehQxoNSCXt}=ULTf0ho{6El4 zQkv(#AcpEFbj=1qB^U`a!8xYi0hRCo)JLh~wsx0s8c7OePYv~0WifqKsJGcVw(bV? zQrySZgUi_a{|FS?$vCKh&9Edq4r@YBS*NkOP&@AcRj{kABaFkKPH2>^XBihjedt^U zby5dSf6U87iO!hfs;zGupPBvx)J+<^X8BO`V&Gq7K3_WDhqXKYC=8dZA{-ivP<`p1=1@6p*;0^LafD)Z1!RsFP^}Rk%A;f>BWZ6OFT>5-x`F-)QSSQ1{d^ zsJQ25{|D+M<5l8b)AOH>i8?I?b+k=w9R{_-u}}#X8ka*I@j9r2yNo|T`JaJmFvj>4 zs=>EVc@kE3m>hc5$)`+IIIpoR)J;W9?d=2%PF-~nK zt~}H=uLJe=-5lnFvyF$KURVBt%IB#=<9hy+Fwu@u!E`XE46u^1rm+E3U~{NOJ3<|0 zZx{}vpyKWt9~)m9-$T{$)OGyQK(DTO1|~8TF++8z&vx~ou6-xdkB2He&A8C?Yhfnz zn_+Hv+U#%49=Dzoml&$ybhgf2kLO=EM{yMDytElA8S5L{KsDGM%5S)FG}NV=1na;B zP_F~Gp*}l4g4$sG`cC1D#sbFj^?Cl~P#=X7cQN)f4uIP6P^b?cY{i^gkE z4c#%mfc|UUz|kjxdfL)M=?i#mQqmkMn?obhheF-;y`f$i=Rr041JqF-xAkSH=l-VY z@7wwxs13LqI!p>x_;Xu(v)iOF)XplHLt|UFg=(NLRN-i-!b_nNZ-#nG_L)5fs=y<- z7rutN>$f*@K3yM!xmmx1L-qV;Z|uCOEQ2{PJcs#Ux+cymVs)qjUZ}zwpc>r^2fLc7asCU)JPtMLL<;kQt4*I8OSiK{}LKq%B#(_W|-s<}`{e;VpU-axM=nc6tl zs5(@K?Vui?K~RZiK{d1q>QX$1^2^ZHuG9+zD&IEFC5xy1U`iEV1*t|z3NbFZ(Ey$ z8hbz`?r-a5P|x`qs3YEC>myK~=g-3(@DfzQX+0hPxyI$j%}}ok`=Ijt1o8K}erKZR z`a0B0;}fWx&fUxDGy{~q2vmY9Q12P_pc-fdRk#Jz2axtq1$w}QFbXPeqH#9Vh8FwD z^S9m%yPz6440TD)`5pMG6{^5XTfet;g5FM|PmCFid7y6U5>R;t!eBVXI0uHXUIa_& z`QOh(9lwIwX@Wiu(?NBb8~WcRVRhD}p&qYMraxso3*~@3uRZU+XDzF38J>iA&8*l45 zP}h7RObNF_JxxEF{y9`!{DIENCG#@T5oLr5ECiLX2GkCkn!O9uQ4fal8xQ5T7^=bb zP$#zoD(*Hs3tyQ1$RMZi87TjYP%q)$n@sc)`W6Pkc7vV79ibBSwsjQL<24!TBi4MV z-;7=c^;PZ_7zf53;@s^Cp&q{!P<|Pp?5&|1=m7Z&%IgYeqQt|X9+UAf37igfGK--K zZZZ3AsFOHs>tCSaFB)$_|Lcg+J=D3kQbOGed7$hy{p9&;%|r!yLG5^;t;fMOtfxbL zt@i+`&^xFE!NVM;Gv+mxgZge)1E_-CpkAoPLFJzU6~74jzyH69i2`;(6*>*|zI`3) zs9r!l{~wG&!<}_JsKygQ`K5$9;tWuQvOwKzg`w`5Qc(9y16#L+-kc}~Fj0YpP&dU= zsJqq&6?n(^4(c&V{-vWY2CK8K1ND+U8|qzjv)L~}z2859YAjEb(@;UEMv6!A{Hwz% zrl<{7u!XIALmkyHD8H#tJDp?eB~bUmDyX;}FdaMw^)%dq#bBxt&b?F{s&G47_ZY$R zubV8&3^Sn;ErCk3!yHeU{RULQM^KmQJ=7&gLLN1i#ux(Ca2}|8rV!N0mV;`bxiQph zlYY?O2-J>eLfsQ9jC-Mef^iP2!6#6O;*NA)YEwYHG?#$71g)SN8Vi+gI#k@(X5R(% z3hTYeM2^9uoSP;&ROgwExu6mkgxYx{s75I{QLN#{U z_=oYH@ue|nymLayV18bITsfKOv1$fYU?^0lQ=wi7=Rlpva;V2_z1e>Pxe_dn_~(NXqi}=ehpNDJ;ozYjh#1MHr_PegZ_q%?~Ms2 zIr=nECy;d#kC6(OLLt^QhYrSGP=$utdZewV8RwdQ5!Ai24(hdjyV-Y}{SZ|Clg8_& zf9|!(N2o%HCp#UcG=@MuzxkmGRDklUWo!s_salx5qp=6n2}Bx48K)Z;LEY5ebxf3S zH&lT`#$!+k&Kqx-{t=Y_Yp9#^gRK)!adwyzDlUhy2$X+CTi1ZP$C^6yy84-6s_`r1 z8siS*VdE*N!k3{wV%;;oH~lA5o%j2UP_LN9jEzm-7plSWFafVWt~pF}6ibYo%;A9X zxalt%??Ro_Yp9*Mr#b8RP_K|Fpz>vgx|s_ZYnwjQ7$NHUAHzfm=NOkjC0+~F>1N|T z<54L83&!iFzi)g6)qrQZ^E!|cDqmWtn=m6(-a^o;cd_#3(7@Q-9NIwz^e{%5ex`AW zaf8uk{1K|)S>x|e4PS?PH@pwkz{~0O{0Gf&6bYaTrh$3|%MFz%zuAkLy%JQyre<$% z_AuiB(|c__9{Nuh>XIyhmEf)!_BQ$kg|;&uoz6rJ%r?Uc<3{5ysKSShr;L}4ca1NM?%7V^q);zRsf`(- z^5irYg*51ORdOb-noylLfZACrV=t%%y~Y_(e#@YCw%*p8j6SHHe`o8X#&gCiQ2Ao~ z;UI2|T2eg>t_3AK{~wk~1z^2Rz)jkGj-TVtrP2h`5{8%G$Y$gbyqfhKU7 zag8}_vh`l$cThV&YW8!czix~%{UckywY7V$(?C+==TP->LI3an6=b3#DQ>I|)p2uU zD9pyXpV{Y`ezkEsRAYyX$Dr=^^H7DZn?Ai_z3j{NrGtSX3Prp z(w)y(4l1rblz%f@cQAG}_BMMY)QNgWm|}`4<{4L*ehbw1@Ap6zI0LoAi?)6UwUg&i z34<0mOlC|Ebt!Ti%bLD{L$9l?DZ-6|paRAi=bL^#RH0qQBTx^cg?c-F z4|O7mzH7CsZEYQ9>}8CA+R!klypxU5 z(EszlRZMi3?uANx#&{9x`vcdYzJ!Xm$obJsAt=B0Pzl3~15EF=^?0aP#yO^shB~>W zPz|qJ#Pcu3HWW&<&m51M<1fZbroUx;0ClaO+4^5&oW)L_L{JTWYU@nKe8y5RA@=Hv z?fGwnLIG`zosHqfeoze#w)I$BPcbeq{c5PA-e}x!JZbhTw!Q_G?{BXeTuYpz2{tB& zYUpz)$1J8VX!=sNu4wDpP)FU!*3F>a@7vnCGt}1+;kF(Qb@JZPHkoRi4^{AM<0hy^ z_8Px49)LlVWb=Ik&@??VgK4T7tURQ1=y7}@!bzIrjHKBIY z9xAZ2F&wJFeo#+GlyRnUrEwRO-!WVNX1s6u_kQyHC0OQkn8p|aRWJ|Km)(V+?$%PK zuMCyA7Ss-#o4%{9dqaO?#+jyH2^F`)cv#f)f65e>jd!8GW%>f@C!B@8b{@ZV#`CZ+ z`VTOl?8_athb34~fqGnjFg}K1tkbPHL=JBAA=? z38?Suzl4Qgo>k7L<+jG*P_GjUp}yn!J=9OjZb0SxY_;>ls6nt1>z%Lw3|_M3vyp~g5`9HrDogkRWl0?VMi-DzXsQHFzPCo# zn_(gAFKMPM#plA(mSYU_fc$CmIW%^fMk-P`T6edJw=u;+DRv#l)+noDOu{ZdV;mu< zGQ}S=ZW7p+b!v*Vz}B0%!}#a69gk+d1$|f6tME@ub1U#ENWN%m;smxGG(Cs_^(tRN;UO$KBnaV_yl zK!K9X(-M~>&=7u?EMER6(HAF=U-bM>BH#xS9-{DHBp6P2Ss4czi71wYon*FRpOg4K zegRoetfYl);wvk9ixc|NiY__8!8t~i5B(F?3E(#r+r+#*d2%qmv1S^gFHHk=@p&Cr=Z~aCc?Tyq z0n1r8An|k7k_nuMhhh;l(~|XHjO5JEa|*%m4feMrFHer2VH4QePAebHkFpIF!Il)8 zq=N%jJOAHbWHEtc`g;9{8S=B+1tg!zxMhv3W*(3sBzuHURfp5^R_0 z7uG3lF58dRL>h7w)&Du|FN|;On9nem6rfli3P>6-UJ;awB-!x$iS-Vey3Z~rSaVY? zPCstRi0@uTUkdc0vDD1#+9~|aI<4jXgND7kQAoN`uqy>>+4>vfS@d-&6om65it$IV z{8A13R@+sm?K~s)28`$UZ?;SD5x-Pi&Yvvb0E*A1vAfu-2Cly{PD8O%iEs|cVRm(t z9rr}h&~}>Nc2d_)j6VV8YC}TFIC5MjW+ro;>`L@4pog&n-5}O)$^VqK3W{K7^GSiJlfkh2)N zVsNuHo&w)ryj&YeKN@&z2Ca|dxSt^@YA3SEnkaF|9FMG~?A}i7zK8`pq|g+)u1SFjR!mO65zrlOH+d&&+rP$Z0I%hMch z-~3?;E&~lOwwv%ex>+>+CF>C8W69N>hO46EgVKMbBKjkCvRrsRJkZ@$3PmsmQtUGl z-?N?6XD(Smp+<9--%UAZ(<)0RD42AIC@ES@}*^+Cvav`_QGj7iTdI+*^-~8 z<$NUV%;-mrTVeJL3`wM-n^$zcu(&C2$Y+vULBH zc_HkQNyOQ8_WwvSl9TMskmMrn2)V}*Q=6C^R$~s$`QNjqVthz}9VqrPKgN6}&XT`L za?%nVCNL>gexRX2j3dnN!AN2%!hkek_kAeZ%$l1_t}f(0KwinWY^)0QKKhyE)>wfu zmZ8Wr67MDGGzl88jv;WmHBp9O$!XRHY$sZ`wd4`lPcc3r_A!kmCI4lMsen%qg})-M zKe{kC$FX|Os9Pz$+env%9>1XUYs~uW{~T_^Js|&*G6}i`q7;k%0pl8)A1Fm>V)FWFD6YsBpf<{SoEk1`a*X*t2m2`Yg@LRgwcwlLZeB*}$t z8sm+#bnU@!2!*>dzQk`8@hh=Qw%8djvc?)&)3VJZUz&ve`+)nMB$Apq_NU7#7T{>P zMM;#xf(zTp)Izr)-~i{ck;24gWD_}APoR<9u{I~yFUZ@65ksz9tcQ4U_An%u=;(8s zI~sORl7FpWHiB|8vZ8y3Z)HX!{JXKfK|llB#A^zSCZ-&hpeweaFpn+=4SR{N#BG|0 z*pbj%568+(x?;b^2*@)WMlrSqk`fq@%XS^L9&62Q#{LC)_S%mBvP&SJugT%Y)`JMfA@C6{yBI_0dYL60q2x3akoqLb$?nb*D{062GxLqM26xe1 zUFMk>e`5b&_RJJ-i>`}4J4hy3z-tPAPEY}wSV=%7SP5Mt?8V?c_}&VpBH8L#r;>+b zkEEgE@GJbz%2u|gDiPlA`s*OH((&HM$IqD#U2 z9z*h&WJ!qmnYliHB*j0OCI1myJYs56;0bY;u&1}Ci*t%+nE%2_F2L?>g`zP-G7aao zH1nAqb5$!Q+b)vsW~{R!zY^Srae>0~gi-b12v%=eJYNAN=Cr6@L4b9AYQuSKpS z*1#~<-&+&o(O;$cD11Zl-ASE~Y%;a}cJnEAQ-lIL3G9z!7o3*j9G?VTVQmU+#%Gu% z%Yt6glLY!U{sZiiIoSWA`CqUvCr3aE;kSz1XU(sOok9o>{`;TrUAy989AU>>*$Pdy zfW~$j3nBgbWiv%GGds&@MX{H}4#RkbSiPwI$_@u|Sv$h7t>Ad(SMYnt;O}F)ZYQSx zYXas`C@IQ%c64t@-WPpWxCea|b|5)!4OK=Tkmc5#);|#cBXQd)7|MJ%u~X3BCTou_x8OQW#Z4rk41iDH5jP-0dgTztj|0bEFogHCH zTUUYINR|WJSH%86fjs!%XC1*#hoO_?VeBKgmZ1;AzDz-My~d7kCag;EI{c30A zT%WB5(})N5!~bXUOAa%y$cBEWF-bM$cJ|LBWF4KssTdu9ic=N}NeU9Qgz=Gt^-0V( zMqOPQanZHoXs5s+VkA>YIu@U8%!i|E>euonW=;H|qDT-MxJym%P5vp(;!Ae37^g)f z`<*7nS(mMFo??x7@r}T@Fn-yY-^Q;2ey50)=kKX5itkxkt8K&H~h+46DP0_ zWMtCUK||TWO%}Dy`6B`Pj%q;y`Vu(Il6Rt*WG}X#*nMe+YF}=4ZNedC2m?Pttpws@=bla$xh@AZyc@w*uyXvAS zOVC)xObUO)ab-X^gd};a>k1SvgS`{Bi}=Ka>(CXVXfK$`8oEZ2&nZ}EPNSzOy$>lD zTauG?4v}NXs-ITvA=7$BUi6YAL`w#eRT77aT{))+n4Bs}>?o#Vdtp97*z^OW%j6xZ z!Tce%9C~Z3%NAzX7A}zdjU75Z{-3u!W1X0w>hMq6{=m3SOmgf^(fxx>vKw71Y$qs| zk49Em@sZ^Igbmb(zgY9~uZQk}zQnIVg0^&Bn{hIhgPcBPJRtBhl1kb$3b5W`r?HKK zvE^&lUvQ#}QC1<}AT@~YNAhN(&Isc4ldC$cV`#9p9%4x?oC@I3ozBD2<+RJ9|0pCN znXG7F?IXz+bR`)>h!3H$I*bmCH#EGF9FLg~z%QDdYwbkzpIfD%F^PT%N6jC@r3~wvItzSK(S{@!qaM1HoX>7zj*@FM>*!!tb=PT(D==iF zSXQ`-16*<LoL8gc*wVrqljc1aY&fW(R*EuEXj1Xu@$E! z7LeSUTFKr6(x2e#B>4``h67-jomV#I#fUGDe_xIz#v1w6&Obl;2I$6_J~jG3+&l@# zDD)Wtv1J{*`JBcgt(n^x`!la%XSaj(4d$n9ot5O%7;bX)z^^0v^E7jgyp<_<7ypD- zW4>)n^)Blfy@er~ZW7~oKJZ;g|92u+;ChvP?Vz1Rq^n@%@(^(w{Xz6AIX6i=Y}@gl zOqR}M`-XPPVK2z}tV6$x^)Xso4hQ1XiFnCPbmPh4LnrYu65)e*T|c92#4H$xhOmqk z`>j5@Sn45lI=EtIv=eLsy@MZo`(Q`x4*7 zY`O}${GY(?V5r0*9Zd}4SlV%<9-Ly(-LfN8vI%y4*==Vpv2S8rA*Ma!8ortE`3K*n zG@hP(3CZ0UpFhd>fVhE-hpZ*H(0O~an*o;aOLkP9z_9RMSNH&Cce{g!b6sP1$ur(%{9x`!EC4@ zClEpGaOUM`tN`<$IGK<5{6uUn<`VYLj|Oql1*=7pz0Ch6VMpe_;+&MZB#5;nrxmHp zrIB>SKM}Fb%wEDyMz)qT8bKpF&^01YL;Mo38K3!7jpP4?0jG-#7;n*85J9;J%FkSq zLc2xYqHAfzwa&nnqk_di?$-UNVi{bki>fo-u`^cK+?h z#h7X5CCxp?WCH%c_Y_6ekkHM#8GaKFdlyAd5@sRM4-{EKa9ffU zvQC@hB$qk?P5*G8FvvdWq+kWIs#yCu!->EqaR@EPey@E0z zg)KovOI#Yq{$MAPk0Y(`s9itNTuXNQoyBj2@hJ2w_PNBYW^BZN z6s%^OdVzmU)_c)c^%5|cnYourvM*v3ZM=R@kc4Q-&~HLTB? z|4DWlk0b%vZl{$NpYb&R7o#9K8`)`AXZ}6SyfD9t{$CCz!4FnIiN1)HupjyfvDUJG zX(yriJPKX3lk3b}QWTD+c}X`K&OnZLj6~?mu9zk0M8MvV?iDlI(7j z6=+3p4c4F9X=I?0+e9V7@n35yK20r0H(j4my`z{Vpu}KCKjv-m$^j+GiRwk0dF?EI zw$i=Hkc)AQnEh1h%=n!39qb;spAM?pnU|%bpU^E}J(&wvp4=a)krDROXA?;7ug9wx)$My*QIQ(`n-^GaJY-%xj<1>^s|DA~Ib7KC*{~eShFzzAt zE_HI@)0@#<-yNz-P%ArN$DNOJIELZyJ&H~+loRO7#j67=QYb0@O*!+E@H=)l+HU7J z_)4}|zIWu7OlBmqc{Z9k$Oa_a_3$1-F~T}*!7)9-Sds*-DRdO4{1o_anMc7Pv6MxK z8I1o)b|-mEo&=1W#9k$LE^BDIF%SAbsqH;wg_pv@>?of(q+q9sNbo1)If+NXL@G+) zb-UZ*hwniq3 zY@+Z3j&>UM4n?{}+%o8dHO-2(lh>dOF zM5eNqEFvzw=DPp+Z?ar(F^(oE9*K5qH*{MWNIt`M*_pZq6O`F@^osc>_@^_Q5J!d4 z{Y3F*%)ci#8yon6^>A|jO0C=QdnoaKfpHcAm)Ox@=5t{^8u*UDE;!6XHwxz_By*GG zE=5a`U^Y!mw-YOhUvuJ~kY^b7&+-2e`&h-3rxd$?k8PwjhQuYVKl2v}_{!l|47Et! zouESIAgBCx#8;T_rQmgjyMwoc=db>TLfY<8`)>g$keI z-3jY-GBhIkdou23ory||vAv;_BwFSm!((AIV#aji<>G*lNaVHZvEm z8wn>7SIKep|C^olM4Fh*s6|XY{03s_!Mp;^q}8+a5Je5f*EmaVQ$+G9&Y=Xxw~Jg7 zwxP%&bPp+hmINDUYy-Q^3=a^Oj>HdiA{H~y=wu|;PW!oWgnmd_m=VqHzoLPGB+W|U z0_XyAj`=2R+bJ>tsziyO@6h55vRcsX!we$uSK!BK{pL4<)aN z??~>Q_+~{{4P8q8<^}(EmH&}b?C`&(rR|_H$s}7CuSqhJ5z2T$%z1XdltyC93GxnR zB*Q0-#V*6=9Ql5y*{$eT2Y&OWqjed~P9

    SxLH+H`gS{Ai z%}{`t!t6E&;}Q8nYm9nf~YBD2hI`lUa$qE%S=D zqw37dk?18mQ?47Z63k5Tnam5(dJ^Oe0MQc*&8~AZZKi`6&1c>#v#rj_*3+hO^sRtUD4jhV^k+2aZ7B zjkw+v`DlgP5p#*W-SL-%lWP_^_4&i~(u(iqc>6KP;ksehOZI-)(-F87o`FU2DPx!5 z9!z5K@@>NWHwr~jybL?v$T-QUL?fd~TpoLFa-78XyuP+NX~CONd`0I43H*%$0r{6k zysX<3+>&BDtg*Jt3z4+0Iew1M70cC@1~PF1Cy2=gSK;$F_5(EXr{&&6>|;IuC$%$* zF2X4;4w985KW_7{Sa-tt7}vNt^Zhir4u8ph9TgHnkvk-gOW`}j_Q1b1y4dm;x@F{? zXd5_<-x&RP|9d8qvKSi03i=V}HrOL6lAeOyD3FFGnlgSwe-!%>bcw8q{uEee$)lK$ zu_m4DJaYKgBJK}t6{wjNyZ`#1CBY1KB{|3rE;2r$$W9!dqAN|{P!fMhb3L$CCin>c z^%&%H4aPSKV;+8s8B^2*e1+c`iZy|o$#t2zwliW za|Dc~OGzR+8$m!HJCP^M1CopRc>Hq1C|H8nNVBh?U~c9K}}0(j~VhCeqON zUfacByN3Ho_9@O~2`WP)^*F|7tSiyrI?K3(buE$<#Qr-;9y3bdx076x&?hC95keZxP?%&8;Fh6J9bz(;g(Ncua@rzj+uN)rk3k<_$ZXT|3> z4P?b<5}U}t2&Y&&a!7U)kK~_DRI-)AN6mz=0HFa`6{bTeuUVI!gB@2l^vWXG`4g1ZrL z5ko+pW0U+!z*`cxXMNRl570H|H0I)8kfz&^JPh9l?!{72?| zdBgwPKRrmWnZS1hM8kz7i))2?b2?cqkpdf#IF+5!2y6Td`s3*Twd7;5pCRs<#bqR4 zI4339jx8CDkED*o{~F*-`2v!l3062SEKJ~gE0&h|aCYz|l-#j|^=x+uDOQrpw2wwk zk!JwwIy9Jx^`GSW*ZfzLFVbp|#_O75i=;TOr>lYlA7TDIfjw=9<rD6>~0r{n&8+J z-FG;ZBls*yCoVW@`th-ke=W+B%F=$a|%x+>2!);W}c1&!wJ|( zaGd|z$@oOCYNMY|jwt-Xu?1v`mqIZlC~3#;|0O7_ zH!N@*_N^q8v>-_YzH{MGk~P8>f-Mc~K||S@Uw~COfwC6!j$-x6y`OxGX(%8Uxep>( zc=aLf6$$bZl%DQdT6h0YNK%wUMND^vzd{UEVw%_K|ceTe5in13@l5a6CVqTxbedxRny1dwLlc+kr zlFQ5!VjGP<1HO%EWDPpWO-`gDv769;3mdTOIj{~pmxPhO74s4LYNfgzbyE^ZS{P>% zyoM2w%J@n$QzQhR?AUJE@k-x=W&$z|TZ!mLpYdCSkI{WWZOM4l=SkC^o>$|3fK&+> zBk3nMy7Z2lt0`%3GH=aZpIF({%zIMyk+s{5_%X!pwRRQSl>7(DB?)2vnV#^4BshrU zZzz9b(~bRR=bz8)KsJ%&CJ8%I_%9lfwp-+QLVih8;Dq}k~8nA@64U0a18>lkl-+ecZ~m*O4u)0V^f(+ zeuaBs19E(8%}M`~_`g`c(gHce{1i1B!M>bY8*8X7_564EK6YIVgMOUXno*tvO(_;i za8J6f!L_}P&nk4~DHg#oS0h-Gmiavr=VYDBbO$Lm9>1K7BE;uIpO$$*`eC2wti7%o z1RubmDMh#AF`HfeWF6)qc@uPb@u`TeI1S{c(ckO@qOecHCOJcV8Rny5Kpv1cKDr8w zLH1xSCdV7*`OwAHJA7-pkzAqEfTX90q&EfblQ1_d#VCXR9l;f>$Ut^64!;Q&8xMUn z^GY;36#vXLI*TR}QR4!(q7-d`?i2E~(->%zB*q7kh z6ga0}K+fu&A1gE)xk_Sov+3%DN#asF2Vwc>{S9FWSTDrqZ|rsO-vA#l`p|DS^wCzT z2zfiO*ZlZMzM!2)_>^ItlKFV%v-JDxlA|POX@{isl~_%!vUzHJ{##Ppq1}N)@w-ox z*_i)9BgbJq0y-1-kfuvmo`vYn*?}ew%1ieIrQs?hB;XXr4+NL6s}h7RAY*+|A?_wY zpA;w_(zJ8Gh>&WL-NOd-35)cd&f;E@z&9YDyIq{<2Vc08MW-m_e(q^fKO*`=A@`-| z=Y`$PqFWSkzww0?b#IB|%Ua4kFgQVYXs5{VzI{R>d{ZmBe{}m=S9VuU8$G#|d!{dO zYxikS^xy5=m3@`lyI%w+?-DjBJT%NzrEi};VWEohwd(5r#}hZKOGxLTzPdf!GZOh? z2D*O>_S9+^5xp(S{V;yN0byOkhlEA=W{q$^P2!t8)x9C9ufigCu{gd_%iP=ISLigP zLwICZ?}(5=oq7!nD;+YtcR&-BIi%jeh{%x6VIiGD`t^+nj|?9a782ekGOSzJfRMfe zLhASJ6Xwgg&V3|NaJ{hJox=u1`0nj+hsBTXwBNnom*;?cZQPcZreas0x&ghciYiRc#=8s2qi z2Ph;`@eQbjSC^(WZUFFS{?e|L2TqUU6>>3JL4erC(pR8R2T!DY83V^a_u( zX=JC!ff2rcuDP?t@fEz~p6>SjeB0g6*r4y^zwTlQd`W|YDtUYh69z5u_-ZB%I#eKGr(V7KatnlY$?f~3Tu^&Ybi0Z{ z^`hri3`*{f@U5;G6dfnJWwoF*(POFw&31S4rKuj&KA~@T!=UvkOX@^*b|Ibm*a39l z;5rQm3+X*Dav+I^hJ+0X?Zqh!3M=6HpDPf(Ew4Le#=+gg`q&8t4*kD%us)Gg3S0@_o}ToaG1lb{Twwnt>DqT-pDqQWKdkb6=IhokXp%d4 zcvL0V@Tlg#C;fwFdy)qps@wZk-&wWc?txi8@4%qG@qK?s1;vTusaJDY^oLPFSL1|G zJ^I(tLHDBn7!%aMS8i-jh}+k1Tu`MrzJrs3D#eSQG$SZ+bngkCVBg0XL7m;cKC^Oi*zAGXHtNLhg**9~1p`%)E(D_AmTj z58j4(sd|Z929|vttn6Pf88X>p$FT68rfv@pDK_7yn zL*1TzzPv%6x^Y{rT6lZ+hX4J%-Py9|-nQj;rtY~vZrYzCmpIScpCcFF8aev*fkSua zuKS;-E@sKxk zJ8{?DN$c;-8Rcu6!L!osVeNa9(K90`_dVa1I|s+!{btME(R*CEV#dz6w{}$SkUJB{ z$81{bGUMc3F(XI$=4bZ2^!S!#_w;o8lIQdk^CY;vd*8h^qqtPQYI!_af_#JXc^)V7 z-$lOmB|Z1!#8X$hr~2xY^LT<1-R`_o(dmYI5=Yk`;z{kxHPn+OPIS8{Pu6JuzbCrJp>&Av zU6kiieBY(^}_nU zUHzG3{=d$?i(h&22B$bMhntlnbgrqMD&L#0JqhAujrII;r~K!ZiCMfMX41hs6SwMy Y;31ylPBuI$x*SF6|w2KOr}`r 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[ge,xe] -0/0/ [0-9])。代币 " "{module},如果存在,将在创建新模块时自动替换为位置值。" -#: netbox/dcim/forms/model_forms.py:1251 +#: netbox/dcim/forms/model_forms.py:1277 msgid "Console port template" msgstr "控制台端口模板" -#: netbox/dcim/forms/model_forms.py:1259 +#: netbox/dcim/forms/model_forms.py:1285 msgid "Console server port template" msgstr "控制口模版" -#: netbox/dcim/forms/model_forms.py:1267 +#: netbox/dcim/forms/model_forms.py:1293 msgid "Front port template" msgstr "前向端口模版" -#: netbox/dcim/forms/model_forms.py:1275 +#: netbox/dcim/forms/model_forms.py:1301 msgid "Interface template" msgstr "接口模版" -#: netbox/dcim/forms/model_forms.py:1283 +#: netbox/dcim/forms/model_forms.py:1309 msgid "Power outlet template" msgstr "电源插座模版" -#: netbox/dcim/forms/model_forms.py:1291 +#: netbox/dcim/forms/model_forms.py:1317 msgid "Power port template" msgstr "电源接口模版" -#: netbox/dcim/forms/model_forms.py:1299 +#: netbox/dcim/forms/model_forms.py:1325 msgid "Rear port template" msgstr "后置接口模版" -#: netbox/dcim/forms/model_forms.py:1309 netbox/dcim/forms/model_forms.py:1794 -#: netbox/dcim/tables/connections.py:28 -#: netbox/templates/dcim/consoleport.html:17 -#: netbox/templates/dcim/consoleserverport.html:73 -#: netbox/templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1335 netbox/dcim/forms/model_forms.py:1820 +#: netbox/dcim/tables/connections.py:28 netbox/dcim/views.py:3016 +#: netbox/dcim/views.py:3459 msgid "Console Port" msgstr "Console 端口" -#: netbox/dcim/forms/model_forms.py:1310 netbox/dcim/forms/model_forms.py:1795 -#: netbox/templates/dcim/consoleport.html:73 -#: netbox/templates/dcim/consoleserverport.html:17 -#: netbox/templates/dcim/frontport.html:106 +#: netbox/dcim/forms/model_forms.py:1336 netbox/dcim/forms/model_forms.py:1821 +#: netbox/dcim/views.py:2926 netbox/dcim/views.py:3458 msgid "Console Server Port" msgstr "Console 服务器端口" -#: netbox/dcim/forms/model_forms.py:1311 netbox/dcim/forms/model_forms.py:1796 +#: netbox/dcim/forms/model_forms.py:1337 netbox/dcim/forms/model_forms.py:1822 +#: netbox/dcim/views.py:2928 netbox/dcim/views.py:3017 +#: netbox/dcim/views.py:3460 netbox/dcim/views.py:3561 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 -#: netbox/templates/dcim/consoleport.html:76 -#: netbox/templates/dcim/consoleserverport.html:76 -#: netbox/templates/dcim/frontport.html:17 -#: netbox/templates/dcim/frontport.html:112 -#: netbox/templates/dcim/interface.html:262 -#: netbox/templates/dcim/rearport.html:106 -#: netbox/templates/dcim/rearport.html:127 +#: netbox/templates/dcim/panels/interface_connection.html:86 +#: netbox/templates/dcim/panels/rear_port_mappings.html:10 msgid "Front Port" msgstr "前置接口" -#: netbox/dcim/forms/model_forms.py:1312 netbox/dcim/forms/model_forms.py:1797 +#: netbox/dcim/forms/model_forms.py:1338 netbox/dcim/forms/model_forms.py:1823 +#: netbox/dcim/views.py:2929 netbox/dcim/views.py:3018 +#: netbox/dcim/views.py:3461 netbox/dcim/views.py:3562 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 -#: netbox/templates/dcim/consoleport.html:79 -#: netbox/templates/dcim/consoleserverport.html:79 -#: netbox/templates/dcim/frontport.html:115 -#: netbox/templates/dcim/frontport.html:133 -#: netbox/templates/dcim/interface.html:265 -#: netbox/templates/dcim/rearport.html:17 -#: netbox/templates/dcim/rearport.html:109 +#: netbox/templates/dcim/panels/front_port_mappings.html:10 +#: netbox/templates/dcim/panels/interface_connection.html:89 msgid "Rear Port" msgstr "后置接口" -#: netbox/dcim/forms/model_forms.py:1313 netbox/dcim/forms/model_forms.py:1798 +#: netbox/dcim/forms/model_forms.py:1339 netbox/dcim/forms/model_forms.py:1824 #: netbox/dcim/tables/connections.py:47 netbox/dcim/tables/devices.py:528 -#: netbox/templates/dcim/poweroutlet.html:58 -#: netbox/templates/dcim/powerport.html:17 +#: netbox/dcim/views.py:3193 netbox/dcim/views.py:4653 msgid "Power Port" msgstr "电源接口" -#: netbox/dcim/forms/model_forms.py:1314 netbox/dcim/forms/model_forms.py:1799 -#: netbox/templates/dcim/poweroutlet.html:17 -#: netbox/templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1340 netbox/dcim/forms/model_forms.py:1825 +#: netbox/dcim/views.py:3105 msgid "Power Outlet" msgstr "电源插座" -#: netbox/dcim/forms/model_forms.py:1316 netbox/dcim/forms/model_forms.py:1801 +#: netbox/dcim/forms/model_forms.py:1342 netbox/dcim/forms/model_forms.py:1827 msgid "Component Assignment" msgstr "组件分配" -#: netbox/dcim/forms/model_forms.py:1362 netbox/dcim/forms/model_forms.py:1848 +#: netbox/dcim/forms/model_forms.py:1388 netbox/dcim/forms/model_forms.py:1874 msgid "An InventoryItem can only be assigned to a single component." msgstr "库存项只能分配给单个组件" -#: netbox/dcim/forms/model_forms.py:1499 +#: netbox/dcim/forms/model_forms.py:1525 msgid "LAG interface" msgstr "链路聚合接口" -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/model_forms.py:1548 msgid "Filter VLANs available for assignment by group." msgstr "按组筛选可供分配的 VLAN。" -#: netbox/dcim/forms/model_forms.py:1691 +#: netbox/dcim/forms/model_forms.py:1717 msgid "Child Device" msgstr "子设备" -#: netbox/dcim/forms/model_forms.py:1692 +#: netbox/dcim/forms/model_forms.py:1718 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." msgstr "必须首先创建子设备,并将其分配给父设备的站点和机柜。" -#: netbox/dcim/forms/model_forms.py:1734 +#: netbox/dcim/forms/model_forms.py:1760 msgid "Console port" msgstr "Console 接口" -#: netbox/dcim/forms/model_forms.py:1742 +#: netbox/dcim/forms/model_forms.py:1768 msgid "Console server port" msgstr "Console 服务器端口" -#: netbox/dcim/forms/model_forms.py:1750 +#: netbox/dcim/forms/model_forms.py:1776 #: netbox/dcim/forms/object_import.py:140 msgid "Front port" msgstr "前置接口" -#: netbox/dcim/forms/model_forms.py:1766 +#: netbox/dcim/forms/model_forms.py:1792 msgid "Power outlet" msgstr "电源插座" -#: netbox/dcim/forms/model_forms.py:1782 +#: netbox/dcim/forms/model_forms.py:1808 #: netbox/dcim/forms/object_import.py:145 msgid "Rear port" msgstr "后置端口" -#: netbox/dcim/forms/model_forms.py:1788 -#: netbox/templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1814 msgid "Inventory Item" msgstr "库存项" -#: netbox/dcim/forms/model_forms.py:1857 -#: netbox/templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1883 msgid "Inventory Item Role" msgstr "库存物品分类" -#: netbox/dcim/forms/model_forms.py:1927 +#: netbox/dcim/forms/model_forms.py:1953 msgid "VM Interface" msgstr "虚拟机接口" -#: netbox/dcim/forms/model_forms.py:1943 netbox/ipam/forms/filtersets.py:654 +#: netbox/dcim/forms/model_forms.py:1969 netbox/ipam/forms/filtersets.py:654 #: netbox/ipam/forms/model_forms.py:326 netbox/ipam/tables/vlans.py:186 #: netbox/virtualization/forms/filtersets.py:216 #: netbox/virtualization/forms/filtersets.py:274 @@ -5970,7 +5806,7 @@ msgstr "虚拟机接口" msgid "Virtual Machine" msgstr "虚拟机" -#: netbox/dcim/forms/model_forms.py:1982 +#: netbox/dcim/forms/model_forms.py:2008 msgid "A MAC address can only be assigned to a single object." msgstr "MAC 地址只能分配给单个对象。" @@ -5990,9 +5826,9 @@ msgid "" msgstr "提供了 {value_count}个参数,实际需要{pattern_count}个。" #: netbox/dcim/forms/object_create.py:312 netbox/dcim/tables/devices.py:1130 -#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:43 -#: netbox/templates/dcim/virtualchassis_edit.html:59 -#: netbox/templates/ipam/fhrpgroup.html:38 netbox/users/views.py:347 +#: netbox/ipam/tables/fhrp.py:31 netbox/ipam/ui/panels.py:184 +#: netbox/ipam/views.py:1477 netbox/templates/dcim/virtualchassis_edit.html:59 +#: netbox/users/views.py:347 msgid "Members" msgstr "成员" @@ -6172,197 +6008,197 @@ msgid "" "module type." msgstr "组件模板必须与设备类型或模块类型相关联。" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:210 msgid "console port template" msgstr "console端口模板" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:211 msgid "console port templates" msgstr "console端口模板" -#: netbox/dcim/models/device_component_templates.py:255 +#: netbox/dcim/models/device_component_templates.py:245 msgid "console server port template" msgstr "console服务器端口模板" -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/models/device_component_templates.py:246 msgid "console server port templates" msgstr "console服务器端口模板" -#: netbox/dcim/models/device_component_templates.py:288 +#: netbox/dcim/models/device_component_templates.py:278 #: netbox/dcim/models/device_components.py:436 msgid "maximum draw" msgstr "最大功率" -#: netbox/dcim/models/device_component_templates.py:295 +#: netbox/dcim/models/device_component_templates.py:285 #: netbox/dcim/models/device_components.py:443 msgid "allocated draw" msgstr "分配功率" -#: netbox/dcim/models/device_component_templates.py:305 +#: netbox/dcim/models/device_component_templates.py:295 msgid "power port template" msgstr "电源端口模版" -#: netbox/dcim/models/device_component_templates.py:306 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port templates" msgstr "电源端口模版" -#: netbox/dcim/models/device_component_templates.py:326 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:463 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "分配功率不能超过最大功率({maximum_draw}瓦)" -#: netbox/dcim/models/device_component_templates.py:364 +#: netbox/dcim/models/device_component_templates.py:354 #: netbox/dcim/models/device_components.py:565 msgid "feed leg" msgstr "馈电线路" -#: netbox/dcim/models/device_component_templates.py:369 +#: netbox/dcim/models/device_component_templates.py:359 #: netbox/dcim/models/device_components.py:570 msgid "Phase (for three-phase feeds)" msgstr "相位(用于三相电)" -#: netbox/dcim/models/device_component_templates.py:375 +#: netbox/dcim/models/device_component_templates.py:365 msgid "power outlet template" msgstr "电源插座模版" -#: netbox/dcim/models/device_component_templates.py:376 +#: netbox/dcim/models/device_component_templates.py:366 msgid "power outlet templates" msgstr "电源插座模版" -#: netbox/dcim/models/device_component_templates.py:385 +#: netbox/dcim/models/device_component_templates.py:375 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "父电源端口 ({power_port}) 必须属于相同的设备类型" -#: netbox/dcim/models/device_component_templates.py:391 +#: netbox/dcim/models/device_component_templates.py:381 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "父电源端口 ({power_port}) 必须属于相同的设备类型" -#: netbox/dcim/models/device_component_templates.py:447 +#: netbox/dcim/models/device_component_templates.py:437 #: netbox/dcim/models/device_components.py:774 msgid "management only" msgstr "仅限管理" -#: netbox/dcim/models/device_component_templates.py:455 +#: netbox/dcim/models/device_component_templates.py:445 #: netbox/dcim/models/device_components.py:639 msgid "bridge interface" msgstr "桥接接口" -#: netbox/dcim/models/device_component_templates.py:476 +#: netbox/dcim/models/device_component_templates.py:466 #: netbox/dcim/models/device_components.py:800 msgid "wireless role" msgstr "无线角色" -#: netbox/dcim/models/device_component_templates.py:482 +#: netbox/dcim/models/device_component_templates.py:472 msgid "interface template" msgstr "接口模版" -#: netbox/dcim/models/device_component_templates.py:483 +#: netbox/dcim/models/device_component_templates.py:473 msgid "interface templates" msgstr "接口模版" -#: netbox/dcim/models/device_component_templates.py:492 +#: netbox/dcim/models/device_component_templates.py:482 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "桥接接口({bridge}) 必须属于相同的设备类型" -#: netbox/dcim/models/device_component_templates.py:498 +#: netbox/dcim/models/device_component_templates.py:488 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "桥接接口({bridge}) 必须属于相同的模块类型" -#: netbox/dcim/models/device_component_templates.py:566 +#: netbox/dcim/models/device_component_templates.py:556 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device type" msgstr "后端口 ({rear_port}) 必须属于相同的设备类型" -#: netbox/dcim/models/device_component_templates.py:592 -#: netbox/dcim/models/device_component_templates.py:665 +#: netbox/dcim/models/device_component_templates.py:582 +#: netbox/dcim/models/device_component_templates.py:655 #: netbox/dcim/models/device_components.py:1160 #: netbox/dcim/models/device_components.py:1208 msgid "positions" msgstr "位置" -#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_component_templates.py:603 msgid "front port template" msgstr "前置接口模板" -#: netbox/dcim/models/device_component_templates.py:614 +#: netbox/dcim/models/device_component_templates.py:604 msgid "front port templates" msgstr "前置接口模板" -#: netbox/dcim/models/device_component_templates.py:625 +#: netbox/dcim/models/device_component_templates.py:615 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped rear port " "templates ({count})" msgstr "位置数量不能小于映射的后端端口模板的数量 ({count})" -#: netbox/dcim/models/device_component_templates.py:676 +#: netbox/dcim/models/device_component_templates.py:666 msgid "rear port template" msgstr "后置端口模版" -#: netbox/dcim/models/device_component_templates.py:677 +#: netbox/dcim/models/device_component_templates.py:667 msgid "rear port templates" msgstr "后置端口模版" -#: netbox/dcim/models/device_component_templates.py:688 +#: netbox/dcim/models/device_component_templates.py:678 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front port " "templates ({count})" msgstr "位置的数量不能小于映射的前端模板的数量 ({count})" -#: netbox/dcim/models/device_component_templates.py:720 +#: netbox/dcim/models/device_component_templates.py:710 #: netbox/dcim/models/device_components.py:1255 msgid "position" msgstr "位置" -#: netbox/dcim/models/device_component_templates.py:723 +#: netbox/dcim/models/device_component_templates.py:713 #: netbox/dcim/models/device_components.py:1258 msgid "Identifier to reference when renaming installed components" msgstr "重命名已安装组件时要引用的标识符" -#: netbox/dcim/models/device_component_templates.py:729 +#: netbox/dcim/models/device_component_templates.py:719 msgid "module bay template" msgstr "模块托架模版" -#: netbox/dcim/models/device_component_templates.py:730 +#: netbox/dcim/models/device_component_templates.py:720 msgid "module bay templates" msgstr "模块托架模版" -#: netbox/dcim/models/device_component_templates.py:757 +#: netbox/dcim/models/device_component_templates.py:750 msgid "device bay template" msgstr "设备托架模版" -#: netbox/dcim/models/device_component_templates.py:758 +#: netbox/dcim/models/device_component_templates.py:751 msgid "device bay templates" msgstr "设备托架模版" -#: netbox/dcim/models/device_component_templates.py:772 +#: netbox/dcim/models/device_component_templates.py:765 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " "allow device bays." msgstr "设备类型({device_type})的子设备角色必须设置为“父设备”,才能允许设备托架。" -#: netbox/dcim/models/device_component_templates.py:827 +#: netbox/dcim/models/device_component_templates.py:820 #: netbox/dcim/models/device_components.py:1415 msgid "part ID" msgstr "零件ID" -#: netbox/dcim/models/device_component_templates.py:829 +#: netbox/dcim/models/device_component_templates.py:822 #: netbox/dcim/models/device_components.py:1417 msgid "Manufacturer-assigned part identifier" msgstr "制造商指定的零件标识符" -#: netbox/dcim/models/device_component_templates.py:846 +#: netbox/dcim/models/device_component_templates.py:839 msgid "inventory item template" msgstr "库存项模版" -#: netbox/dcim/models/device_component_templates.py:847 +#: netbox/dcim/models/device_component_templates.py:840 msgid "inventory item templates" msgstr "库存项模版" @@ -6491,10 +6327,10 @@ msgid "tagged VLANs" msgstr "已标记 VLANs" #: netbox/dcim/models/device_components.py:661 -#: netbox/dcim/tables/devices.py:625 netbox/ipam/forms/bulk_edit.py:451 -#: netbox/ipam/forms/bulk_import.py:547 netbox/ipam/forms/filtersets.py:608 -#: netbox/ipam/forms/model_forms.py:684 netbox/ipam/tables/vlans.py:109 -#: netbox/templates/dcim/interface.html:86 netbox/templates/ipam/vlan.html:77 +#: netbox/dcim/tables/devices.py:625 netbox/dcim/ui/panels.py:483 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_import.py:547 +#: netbox/ipam/forms/filtersets.py:608 netbox/ipam/forms/model_forms.py:684 +#: netbox/ipam/tables/vlans.py:109 netbox/ipam/ui/panels.py:205 #: netbox/virtualization/ui/panels.py:63 msgid "Q-in-Q SVLAN" msgstr "Q-in-Q SVLAN" @@ -7576,11 +7412,11 @@ msgstr "添加组件" msgid "Disconnect Selected" msgstr "断开所选连接" -#: netbox/dcim/tables/cables.py:56 +#: netbox/dcim/tables/cables.py:56 netbox/dcim/views.py:4161 msgid "Termination A" msgstr "本端A" -#: netbox/dcim/tables/cables.py:61 +#: netbox/dcim/tables/cables.py:61 netbox/dcim/views.py:4165 msgid "Termination B" msgstr "对端B" @@ -7625,6 +7461,8 @@ msgstr "颜色名称" #: netbox/dcim/tables/connections.py:32 netbox/dcim/tables/connections.py:51 #: netbox/dcim/tables/connections.py:72 #: netbox/templates/dcim/inc/connection_endpoints.html:16 +#: netbox/templates/dcim/panels/connection.html:26 +#: netbox/templates/dcim/panels/interface_connection.html:25 msgid "Reachable" msgstr "可达性" @@ -7661,7 +7499,7 @@ msgstr "U高度" #: netbox/ipam/forms/bulk_import.py:620 netbox/ipam/forms/model_forms.py:309 #: netbox/ipam/forms/model_forms.py:321 netbox/ipam/tables/ip.py:307 #: netbox/ipam/tables/ip.py:371 netbox/ipam/tables/ip.py:386 -#: netbox/ipam/tables/ip.py:409 netbox/templates/ipam/ipaddress.html:11 +#: netbox/ipam/tables/ip.py:409 #: netbox/virtualization/tables/virtualmachines.py:66 msgid "IP Address" msgstr "IP地址" @@ -7710,16 +7548,14 @@ msgid "Power outlets" msgstr "电源插座" #: netbox/dcim/tables/devices.py:254 netbox/dcim/tables/devices.py:1174 -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1424 -#: netbox/dcim/views.py:1777 netbox/dcim/views.py:2649 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1426 +#: netbox/dcim/views.py:1779 netbox/dcim/views.py:2652 #: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:262 #: netbox/templates/dcim/buttons/bulk_add_components.html:38 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/devicetype/base.html:34 #: netbox/templates/dcim/inc/moduletype_buttons.html:25 #: netbox/templates/dcim/module.html:34 -#: netbox/templates/dcim/virtualdevicecontext.html:61 -#: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/buttons/bulk_add_components.html:10 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/virtualization/tables/virtualmachines.py:72 @@ -7752,18 +7588,17 @@ msgid "Device Site" msgstr "设备站点" #: netbox/dcim/tables/devices.py:322 netbox/dcim/tables/modules.py:86 -#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "设备板卡插槽" #: netbox/dcim/tables/devices.py:335 netbox/dcim/tables/devicetypes.py:53 -#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/views.py:1499 -#: netbox/dcim/views.py:2735 netbox/netbox/navigation/menu.py:107 +#: netbox/dcim/tables/devicetypes.py:147 netbox/dcim/ui/panels.py:403 +#: netbox/dcim/views.py:1501 netbox/dcim/views.py:2738 +#: netbox/netbox/navigation/menu.py:107 #: netbox/templates/dcim/buttons/bulk_add_components.html:66 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/devicetype/base.html:49 #: netbox/templates/dcim/inc/panels/inventory_items.html:6 -#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "库存项目" @@ -7787,13 +7622,13 @@ msgstr "最大功率(W)" msgid "Allocated draw (W)" msgstr "分配功率(W)" -#: netbox/dcim/tables/devices.py:586 netbox/ipam/forms/model_forms.py:775 -#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:690 -#: netbox/ipam/views.py:791 netbox/netbox/navigation/menu.py:168 +#: netbox/dcim/tables/devices.py:586 netbox/dcim/views.py:3291 +#: netbox/ipam/forms/model_forms.py:775 netbox/ipam/tables/fhrp.py:28 +#: netbox/ipam/ui/panels.py:253 netbox/ipam/views.py:826 +#: netbox/ipam/views.py:940 netbox/netbox/navigation/menu.py:168 #: netbox/netbox/navigation/menu.py:170 -#: netbox/templates/dcim/interface.html:387 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 -#: netbox/templates/ipam/service.html:42 netbox/vpn/tables/tunnels.py:98 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "IP地址" @@ -7801,18 +7636,18 @@ msgstr "IP地址" msgid "Primary MAC" msgstr "主MAC" -#: netbox/dcim/tables/devices.py:595 netbox/netbox/navigation/menu.py:114 -#: netbox/templates/dcim/interface.html:404 +#: netbox/dcim/tables/devices.py:595 netbox/dcim/views.py:3296 +#: netbox/netbox/navigation/menu.py:114 msgid "MAC Addresses" msgstr "MAC 地址" -#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:14 +#: netbox/dcim/tables/devices.py:601 netbox/ipam/ui/panels.py:15 #: netbox/netbox/navigation/menu.py:214 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "网关冗余协议组" -#: netbox/dcim/tables/devices.py:613 netbox/templates/dcim/interface.html:100 +#: netbox/dcim/tables/devices.py:613 netbox/dcim/ui/panels.py:486 #: netbox/virtualization/ui/panels.py:64 netbox/vpn/forms/bulk_edit.py:64 #: netbox/vpn/forms/bulk_import.py:75 netbox/vpn/forms/filtersets.py:50 #: netbox/vpn/forms/filtersets.py:92 netbox/vpn/forms/model_forms.py:58 @@ -7821,7 +7656,6 @@ msgid "Tunnel" msgstr "隧道" #: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devicetypes.py:236 -#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "仅限管理" @@ -7829,7 +7663,7 @@ msgstr "仅限管理" msgid "VDCs" msgstr "VDCs" -#: netbox/dcim/tables/devices.py:671 netbox/templates/dcim/interface.html:181 +#: netbox/dcim/tables/devices.py:671 netbox/dcim/ui/panels.py:531 msgid "Virtual Circuit" msgstr "虚拟电路" @@ -7838,7 +7672,7 @@ msgstr "虚拟电路" msgid "Mappings" msgstr "映射" -#: netbox/dcim/tables/devices.py:897 netbox/templates/dcim/devicebay.html:43 +#: netbox/dcim/tables/devices.py:897 netbox/dcim/views.py:3732 msgid "Installed Device" msgstr "已安装设备" @@ -7862,7 +7696,7 @@ msgstr "已安装序列号" msgid "Installed Asset Tag" msgstr "已安装的资产标签" -#: netbox/dcim/tables/devices.py:969 netbox/templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:969 netbox/dcim/views.py:3657 msgid "Installed Module" msgstr "已安装的模块" @@ -7879,7 +7713,6 @@ msgid "Module Status" msgstr "模块状态" #: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/devicetypes.py:326 -#: netbox/templates/dcim/inventoryitem.html:44 msgid "Component" msgstr "组件" @@ -7897,7 +7730,7 @@ msgstr "机架类型" msgid "Device Types" msgstr "设备型号" -#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1596 +#: netbox/dcim/tables/devicetypes.py:48 netbox/dcim/views.py:1598 #: netbox/netbox/navigation/menu.py:90 msgid "Module Types" msgstr "设备配件类型" @@ -7920,8 +7753,8 @@ msgstr "全尺寸" msgid "Device Count" msgstr "设备数量" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1364 -#: netbox/dcim/views.py:1717 netbox/dcim/views.py:2584 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:1366 +#: netbox/dcim/views.py:1719 netbox/dcim/views.py:2587 #: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/buttons/bulk_add_components.html:10 #: netbox/templates/dcim/device/base.html:25 @@ -7931,8 +7764,8 @@ msgstr "设备数量" msgid "Console Ports" msgstr "Console口" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1379 -#: netbox/dcim/views.py:1732 netbox/dcim/views.py:2600 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1381 +#: netbox/dcim/views.py:1734 netbox/dcim/views.py:2603 #: netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/buttons/bulk_add_components.html:17 #: netbox/templates/dcim/device/base.html:28 @@ -7942,8 +7775,8 @@ msgstr "Console口" msgid "Console Server Ports" msgstr "Console 服务端口" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1394 -#: netbox/dcim/views.py:1747 netbox/dcim/views.py:2616 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1396 +#: netbox/dcim/views.py:1749 netbox/dcim/views.py:2619 #: netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/buttons/bulk_add_components.html:24 #: netbox/templates/dcim/device/base.html:31 @@ -7953,8 +7786,8 @@ msgstr "Console 服务端口" msgid "Power Ports" msgstr "电源接口" -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1409 -#: netbox/dcim/views.py:1762 netbox/dcim/views.py:2632 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1411 +#: netbox/dcim/views.py:1764 netbox/dcim/views.py:2635 #: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/buttons/bulk_add_components.html:31 #: netbox/templates/dcim/device/base.html:34 @@ -7964,8 +7797,8 @@ msgstr "电源接口" msgid "Power Outlets" msgstr "PDU" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1439 -#: netbox/dcim/views.py:1792 netbox/dcim/views.py:2671 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1441 +#: netbox/dcim/views.py:1794 netbox/dcim/views.py:2674 #: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 @@ -7974,8 +7807,8 @@ msgstr "PDU" msgid "Front Ports" msgstr "前置端口" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1454 -#: netbox/dcim/views.py:1807 netbox/dcim/views.py:2687 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1456 +#: netbox/dcim/views.py:1809 netbox/dcim/views.py:2690 #: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/buttons/bulk_add_components.html:45 #: netbox/templates/dcim/device/base.html:43 @@ -7985,16 +7818,16 @@ msgstr "前置端口" msgid "Rear Ports" msgstr "后置端口" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1484 -#: netbox/dcim/views.py:2719 netbox/netbox/navigation/menu.py:106 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1486 +#: netbox/dcim/views.py:2722 netbox/netbox/navigation/menu.py:106 #: netbox/templates/dcim/buttons/bulk_add_components.html:52 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "机柜托架" -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1469 -#: netbox/dcim/views.py:1822 netbox/dcim/views.py:2703 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1471 +#: netbox/dcim/views.py:1824 netbox/dcim/views.py:2706 #: netbox/netbox/navigation/menu.py:105 #: netbox/templates/dcim/buttons/bulk_add_components.html:59 #: netbox/templates/dcim/device/base.html:46 @@ -8009,11 +7842,10 @@ msgid "Module Count" msgstr "模块数量" #: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:322 -#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "电力来源" -#: netbox/dcim/tables/power.py:77 netbox/templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:77 msgid "Max Utilization" msgstr "最大利用率" @@ -8028,7 +7860,7 @@ msgid "Racks" msgstr "机柜" #: netbox/dcim/tables/racks.py:56 netbox/dcim/tables/racks.py:131 -#: netbox/dcim/ui/panels.py:30 +#: netbox/dcim/ui/panels.py:32 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "高度" @@ -8076,85 +7908,123 @@ msgstr "VLAN 组" msgid "Test case must set peer_termination_type" msgstr "测试用例必须设置对端端点类型" -#: netbox/dcim/ui/panels.py:34 +#: netbox/dcim/ui/panels.py:36 msgid "{} millimeters" msgstr "{} 毫米" -#: netbox/dcim/ui/panels.py:53 netbox/dcim/ui/panels.py:95 -#: netbox/dcim/ui/panels.py:168 netbox/virtualization/forms/filtersets.py:202 +#: netbox/dcim/ui/panels.py:55 netbox/dcim/ui/panels.py:97 +#: netbox/dcim/ui/panels.py:170 +#: netbox/templates/dcim/panels/installed_module.html:21 +#: netbox/virtualization/forms/filtersets.py:202 #: netbox/virtualization/ui/panels.py:23 msgid "Serial number" msgstr "序列号" -#: netbox/dcim/ui/panels.py:62 +#: netbox/dcim/ui/panels.py:64 msgid "Maximum weight" msgstr "最大重量" -#: netbox/dcim/ui/panels.py:101 netbox/templates/dcim/device_edit.html:66 +#: netbox/dcim/ui/panels.py:103 netbox/templates/dcim/device_edit.html:66 #: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "管理" -#: netbox/dcim/ui/panels.py:118 +#: netbox/dcim/ui/panels.py:120 msgid "Out-of-band IP" msgstr "带外 IP" -#: netbox/dcim/ui/panels.py:156 +#: netbox/dcim/ui/panels.py:158 msgid "Parent/child" msgstr "父母/子女" -#: netbox/dcim/ui/panels.py:180 +#: netbox/dcim/ui/panels.py:182 msgid "Model name" msgstr "型号名称" -#: netbox/dcim/ui/panels.py:197 +#: netbox/dcim/ui/panels.py:278 +msgid "Parent item" +msgstr "父物品" + +#: netbox/dcim/ui/panels.py:285 +msgid "Part ID" +msgstr "零件ID" + +#: netbox/dcim/ui/panels.py:327 +msgid "Connected device" +msgstr "连接的设备" + +#: netbox/dcim/ui/panels.py:332 +msgid "Utilization (allocated)" +msgstr "利用率(已分配)" + +#: netbox/dcim/ui/panels.py:338 +msgid "Electrical Characteristics" +msgstr "电气特性" + +#: netbox/dcim/ui/panels.py:341 +msgid "{}V" +msgstr "{} V" + +#: netbox/dcim/ui/panels.py:342 +msgid "{}A" +msgstr "{} 一个" + +#: netbox/dcim/ui/panels.py:369 +msgid "Primary for interface" +msgstr "主要用于接口" + +#: netbox/dcim/ui/panels.py:424 msgid "Virtual Chassis Members" msgstr "虚拟机箱成员" -#: netbox/dcim/ui/panels.py:216 +#: netbox/dcim/ui/panels.py:453 msgid "Power Utilization" msgstr "电力容量利用率" -#: netbox/dcim/views.py:149 +#: netbox/dcim/ui/panels.py:508 +msgid "VLAN translation" +msgstr "VLAN 转换" + +#: netbox/dcim/views.py:151 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "已断开连接{count} {type}" -#: netbox/dcim/views.py:257 +#: netbox/dcim/views.py:259 msgid "Child Regions" msgstr "子区域" -#: netbox/dcim/views.py:389 netbox/templates/tenancy/contactgroup.html:47 -#: netbox/templates/tenancy/tenantgroup.html:56 netbox/wireless/views.py:54 +#: netbox/dcim/views.py:391 netbox/tenancy/views.py:59 +#: netbox/tenancy/views.py:237 netbox/wireless/views.py:54 msgid "Child Groups" msgstr "子类组" -#: netbox/dcim/views.py:547 netbox/dcim/views.py:687 netbox/dcim/views.py:1094 +#: netbox/dcim/views.py:549 netbox/dcim/views.py:689 netbox/dcim/views.py:1096 msgid "Non-Racked Devices" msgstr "未上架设备" -#: netbox/dcim/views.py:673 +#: netbox/dcim/views.py:675 msgid "Child Locations" msgstr "子位置" -#: netbox/dcim/views.py:1075 netbox/netbox/navigation/menu.py:54 +#: netbox/dcim/views.py:1077 netbox/netbox/navigation/menu.py:54 msgid "Reservations" msgstr "机柜预留" -#: netbox/dcim/views.py:2339 +#: netbox/dcim/views.py:2341 msgid "Child Device Roles" msgstr "子设备角色" -#: netbox/dcim/views.py:2439 +#: netbox/dcim/views.py:2441 msgid "Child Platforms" msgstr "儿童平台" -#: netbox/dcim/views.py:2529 netbox/netbox/navigation/menu.py:216 -#: netbox/templates/ipam/ipaddress.html:118 netbox/virtualization/views.py:419 +#: netbox/dcim/views.py:2531 netbox/netbox/navigation/menu.py:216 +#: netbox/virtualization/views.py:419 msgid "Application Services" msgstr "应用程序服务" -#: netbox/dcim/views.py:2748 netbox/extras/forms/filtersets.py:402 +#: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 #: netbox/extras/forms/model_forms.py:701 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 @@ -8162,41 +8032,69 @@ msgstr "应用程序服务" msgid "Config Context" msgstr "配置实例" -#: netbox/dcim/views.py:2759 netbox/virtualization/views.py:504 +#: netbox/dcim/views.py:2762 netbox/virtualization/views.py:504 msgid "Render Config" msgstr "提交配置" -#: netbox/dcim/views.py:2772 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" msgstr "虚拟机" -#: netbox/dcim/views.py:3590 +#: netbox/dcim/views.py:3278 netbox/netbox/navigation/menu.py:83 +msgid "Virtual Device Contexts" +msgstr "设备虚拟实例" + +#: netbox/dcim/views.py:3301 netbox/ipam/forms/filtersets.py:458 +#: netbox/ipam/models/vlans.py:291 netbox/ipam/tables/ip.py:121 +#: netbox/ipam/tables/vlans.py:52 netbox/ipam/views.py:1274 +#: netbox/netbox/navigation/menu.py:203 netbox/netbox/navigation/menu.py:205 +msgid "VLANs" +msgstr "VLANs" + +#: netbox/dcim/views.py:3303 +msgid "LAG Members" +msgstr "LAG 会员" + +#: netbox/dcim/views.py:3304 netbox/virtualization/ui/panels.py:75 +#: netbox/virtualization/views.py:602 +msgid "VLAN Translation" +msgstr "VLAN 转换" + +#: netbox/dcim/views.py:3305 +msgid "Bridged Interfaces" +msgstr "桥接接口" + +#: netbox/dcim/views.py:3306 netbox/virtualization/views.py:603 +msgid "Child Interfaces" +msgstr "子接口" + +#: netbox/dcim/views.py:3781 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "已安装的设备 {device} 在海湾里 {device_bay}。" -#: netbox/dcim/views.py:3631 +#: netbox/dcim/views.py:3822 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "已移除的设备 {device} 来自海湾 {device_bay}。" -#: netbox/dcim/views.py:3744 netbox/ipam/tables/ip.py:179 +#: netbox/dcim/views.py:3942 netbox/ipam/tables/ip.py:179 msgid "Children" msgstr "子网" -#: netbox/dcim/views.py:4205 +#: netbox/dcim/views.py:4443 #, python-brace-format msgid "Added member {device}" msgstr "已添加成员 {device}" -#: netbox/dcim/views.py:4250 +#: netbox/dcim/views.py:4488 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "无法移除主设备 {device} 来自虚拟机箱。" -#: netbox/dcim/views.py:4261 +#: netbox/dcim/views.py:4499 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "已移除 {device} 来自虚拟机箱 {chassis}" @@ -8292,10 +8190,9 @@ msgstr "是" msgid "No" msgstr "否" -#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:67 -#: netbox/tenancy/forms/bulk_edit.py:113 +#: netbox/extras/choices.py:108 netbox/tenancy/forms/bulk_edit.py:113 #: netbox/tenancy/forms/bulk_import.py:91 -#: netbox/tenancy/forms/model_forms.py:98 +#: netbox/tenancy/forms/model_forms.py:98 netbox/tenancy/ui/panels.py:18 #: netbox/wireless/forms/model_forms.py:169 msgid "Link" msgstr "链接" @@ -8746,15 +8643,6 @@ msgstr "一个或多个分配对象类型" msgid "Field data type (e.g. text, integer, etc.)" msgstr "字段数据类型(例如文本、整数等)" -#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:229 -#: netbox/extras/forms/filtersets.py:335 -#: netbox/extras/forms/model_forms.py:338 -#: netbox/extras/forms/model_forms.py:398 -#: netbox/extras/forms/model_forms.py:435 -#: netbox/tenancy/forms/filtersets.py:121 -msgid "Object type" -msgstr "对象类型" - #: netbox/extras/forms/bulk_import.py:56 msgid "Object type (for object or multi-object fields)" msgstr "对象类型(用于对象或多对象字段)" @@ -8853,7 +8741,7 @@ msgstr "条目的分类" #: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:219 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -8879,15 +8767,14 @@ msgstr "用户名用逗号分隔,用双引号括起来" #: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 #: netbox/netbox/navigation/menu.py:416 #: netbox/templates/extras/notificationgroup.html:31 -#: netbox/templates/tenancy/contact.html:21 #: netbox/tenancy/forms/bulk_edit.py:121 #: netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 -#: netbox/tenancy/tables/contacts.py:101 netbox/users/forms/filtersets.py:176 -#: netbox/users/forms/model_forms.py:210 netbox/users/forms/model_forms.py:222 -#: netbox/users/forms/model_forms.py:357 netbox/users/forms/model_forms.py:482 -#: netbox/users/tables.py:68 netbox/users/tables.py:140 -#: netbox/users/tables.py:190 +#: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 +#: netbox/users/forms/filtersets.py:176 netbox/users/forms/model_forms.py:210 +#: netbox/users/forms/model_forms.py:222 netbox/users/forms/model_forms.py:357 +#: netbox/users/forms/model_forms.py:482 netbox/users/tables.py:68 +#: netbox/users/tables.py:140 netbox/users/tables.py:190 msgid "Groups" msgstr "组" @@ -8913,13 +8800,6 @@ msgstr "字段类型" msgid "Choices" msgstr "选项" -#: netbox/extras/forms/filtersets.py:179 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/filtersets.py:403 netbox/extras/forms/filtersets.py:499 -#: netbox/extras/forms/model_forms.py:696 netbox/templates/core/job.html:73 -#: netbox/templates/extras/eventrule.html:84 -msgid "Data" -msgstr "数据" - #: netbox/extras/forms/filtersets.py:180 netbox/extras/forms/filtersets.py:500 #: netbox/extras/forms/model_forms.py:282 #: netbox/extras/forms/model_forms.py:757 @@ -10155,17 +10035,6 @@ msgstr "文件扩展名" msgid "As Attachment" msgstr "作为附件" -#: netbox/extras/tables/tables.py:234 netbox/extras/tables/tables.py:604 -#: netbox/extras/tables/tables.py:634 netbox/extras/tables/tables.py:676 -#: netbox/templates/core/datafile.html:18 -#: netbox/templates/core/inc/datafile_panel.html:4 -#: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 -#: netbox/templates/extras/object_render_config.html:23 -#: netbox/templates/generic/bulk_import.html:35 -msgid "Data File" -msgstr "数据文件" - #: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 #: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 msgid "Synced" @@ -10181,9 +10050,8 @@ msgstr "图片" msgid "Filename" msgstr "文件名" -#: netbox/extras/tables/tables.py:292 netbox/templates/core/datafile.html:36 +#: netbox/extras/tables/tables.py:292 #: netbox/templates/extras/imageattachment.html:44 -#: netbox/templates/ipam/iprange.html:25 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "大小" @@ -10236,6 +10104,7 @@ msgid "Please try reconfiguring the widget, or remove it from your dashboard." msgstr "请尝试重新配置该小工具,或将其从控制面板中删除。" #: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 #: netbox/templates/dcim/virtualchassis_edit.html:48 @@ -10377,7 +10246,7 @@ msgstr "思科" msgid "Plaintext" msgstr "明文" -#: netbox/ipam/choices.py:166 netbox/templates/ipam/service.html:23 +#: netbox/ipam/choices.py:166 msgid "Service" msgstr "服务" @@ -10440,7 +10309,6 @@ msgstr "导出L2VPN(标识符)" #: netbox/ipam/filtersets.py:173 netbox/ipam/filtersets.py:324 #: netbox/ipam/forms/model_forms.py:223 netbox/ipam/tables/ip.py:157 -#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "IP前缀" @@ -10490,7 +10358,6 @@ msgstr "VLAN 号(1-4094)" #: netbox/ipam/filtersets.py:498 netbox/ipam/filtersets.py:502 #: netbox/ipam/filtersets.py:600 netbox/ipam/forms/model_forms.py:498 -#: netbox/templates/tenancy/contact.html:63 #: netbox/tenancy/forms/bulk_edit.py:108 msgid "Address" msgstr "IP地址" @@ -10547,7 +10414,7 @@ msgstr "FHRP 小组 (ID)" msgid "IP address (ID)" msgstr "IP 地址 (ID)" -#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:815 +#: netbox/ipam/filtersets.py:1259 netbox/ipam/models/ip.py:825 msgid "IP address" msgstr "IP 地址" @@ -10614,8 +10481,8 @@ msgstr "私有的" #: netbox/ipam/models/asns.py:32 netbox/ipam/models/asns.py:132 #: netbox/ipam/models/ip.py:72 netbox/ipam/models/ip.py:88 #: netbox/ipam/tables/asn.py:20 netbox/ipam/tables/asn.py:55 -#: netbox/templates/ipam/aggregate.html:18 netbox/templates/ipam/asn.html:27 -#: netbox/templates/ipam/asnrange.html:19 netbox/templates/ipam/rir.html:19 +#: netbox/ipam/ui/panels.py:60 netbox/ipam/ui/panels.py:68 +#: netbox/ipam/ui/panels.py:75 msgid "RIR" msgstr "区域互联网注册管理机构" @@ -10626,15 +10493,13 @@ msgstr "添加日期" #: netbox/ipam/forms/bulk_edit.py:177 netbox/ipam/forms/filtersets.py:281 #: netbox/ipam/forms/model_forms.py:611 netbox/ipam/forms/model_forms.py:660 #: netbox/ipam/tables/ip.py:200 netbox/templates/ipam/vlan_edit.html:49 -#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN组" #: netbox/ipam/forms/bulk_edit.py:182 netbox/ipam/forms/bulk_import.py:191 #: netbox/ipam/forms/filtersets.py:286 netbox/ipam/forms/model_forms.py:212 #: netbox/ipam/models/vlans.py:290 netbox/ipam/tables/ip.py:205 -#: netbox/templates/ipam/prefix.html:56 netbox/templates/ipam/vlan.html:12 -#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/ipam/ui/panels.py:147 netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:14 netbox/vpn/forms/bulk_import.py:309 #: netbox/vpn/forms/filtersets.py:306 netbox/vpn/forms/model_forms.py:431 #: netbox/vpn/forms/model_forms.py:450 netbox/wireless/forms/bulk_edit.py:52 @@ -10649,7 +10514,7 @@ msgid "Prefix length" msgstr "前缀长度" #: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/filtersets.py:266 -#: netbox/templates/ipam/prefix.html:81 +#: netbox/ipam/ui/panels.py:151 msgid "Is a pool" msgstr "是一个池" @@ -10668,23 +10533,21 @@ msgstr "VLAN 分配" msgid "Treat as populated" msgstr "视作已填充" -#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:799 +#: netbox/ipam/forms/bulk_edit.py:307 netbox/ipam/models/ip.py:809 msgid "DNS name" msgstr "DNS 名称" #: netbox/ipam/forms/bulk_edit.py:322 netbox/ipam/forms/bulk_edit.py:496 #: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/bulk_import.py:584 #: netbox/ipam/forms/bulk_import.py:612 netbox/ipam/forms/filtersets.py:432 -#: netbox/ipam/forms/filtersets.py:626 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/filtersets.py:626 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/panels/fhrp_groups.html:10 -#: netbox/templates/ipam/service.html:34 -#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "协议" #: netbox/ipam/forms/bulk_edit.py:329 netbox/ipam/forms/filtersets.py:439 -#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/tables/fhrp.py:22 netbox/ipam/ui/panels.py:181 msgid "Group ID" msgstr "组 ID" @@ -10705,9 +10568,8 @@ msgid "Authentication key" msgstr "认证秘钥" #: netbox/ipam/forms/bulk_edit.py:350 netbox/ipam/forms/filtersets.py:424 -#: netbox/ipam/forms/model_forms.py:508 netbox/netbox/navigation/menu.py:413 -#: netbox/templates/ipam/fhrpgroup.html:49 -#: netbox/wireless/forms/bulk_edit.py:83 +#: netbox/ipam/forms/model_forms.py:508 netbox/ipam/ui/panels.py:188 +#: netbox/netbox/navigation/menu.py:413 netbox/wireless/forms/bulk_edit.py:83 #: netbox/wireless/forms/bulk_edit.py:135 #: netbox/wireless/forms/filtersets.py:43 #: netbox/wireless/forms/filtersets.py:109 @@ -10736,23 +10598,22 @@ msgstr "站点 & 组" #: netbox/ipam/forms/bulk_edit.py:480 netbox/ipam/forms/bulk_import.py:571 #: netbox/ipam/forms/model_forms.py:715 netbox/ipam/tables/vlans.py:230 -#: netbox/templates/ipam/vlantranslationrule.html:14 #: netbox/vpn/forms/model_forms.py:319 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "策略" #: netbox/ipam/forms/bulk_edit.py:501 netbox/ipam/forms/model_forms.py:733 #: netbox/ipam/forms/model_forms.py:765 netbox/ipam/tables/services.py:20 -#: netbox/ipam/tables/services.py:47 netbox/templates/ipam/service.html:38 -#: netbox/templates/ipam/servicetemplate.html:23 +#: netbox/ipam/tables/services.py:47 netbox/ipam/ui/panels.py:241 +#: netbox/ipam/ui/panels.py:249 msgid "Ports" msgstr "端口" -#: netbox/ipam/forms/bulk_import.py:55 +#: netbox/ipam/forms/bulk_import.py:55 netbox/ipam/views.py:67 msgid "Import route targets" msgstr "导入的 Route Targets" -#: netbox/ipam/forms/bulk_import.py:61 +#: netbox/ipam/forms/bulk_import.py:61 netbox/ipam/views.py:70 msgid "Export route targets" msgstr "导出的Route Targets" @@ -10782,7 +10643,6 @@ msgstr "范围 ID" #: netbox/ipam/forms/bulk_import.py:330 netbox/ipam/forms/filtersets.py:659 #: netbox/ipam/forms/model_forms.py:298 netbox/ipam/forms/model_forms.py:327 #: netbox/ipam/forms/model_forms.py:507 -#: netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "FHRP组" @@ -10888,7 +10748,7 @@ msgid "Exported by VRF" msgstr "由VRF输出" #: netbox/ipam/forms/filtersets.py:96 netbox/ipam/tables/ip.py:37 -#: netbox/templates/ipam/rir.html:30 +#: netbox/ipam/ui/panels.py:55 msgid "Private" msgstr "私有的" @@ -10897,7 +10757,7 @@ msgstr "私有的" msgid "Address family" msgstr "地址类型" -#: netbox/ipam/forms/filtersets.py:130 netbox/templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:130 netbox/ipam/ui/panels.py:61 msgid "Range" msgstr "范围" @@ -10925,18 +10785,10 @@ msgstr "设备/虚拟机" msgid "Parent Prefix" msgstr "上级IP前缀" -#: netbox/ipam/forms/filtersets.py:414 netbox/templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/ui/panels.py:115 msgid "DNS Name" msgstr "DNS名称" -#: netbox/ipam/forms/filtersets.py:458 netbox/ipam/models/vlans.py:291 -#: netbox/ipam/tables/ip.py:121 netbox/ipam/tables/vlans.py:52 -#: netbox/ipam/views.py:1095 netbox/netbox/navigation/menu.py:203 -#: netbox/netbox/navigation/menu.py:205 -#: netbox/templates/dcim/interface.html:420 -msgid "VLANs" -msgstr "VLANs" - #: netbox/ipam/forms/filtersets.py:501 msgid "Contains VLAN ID" msgstr "包含 VLAN ID" @@ -10954,26 +10806,24 @@ msgid "Q-in-Q/802.1ad" msgstr "q-in-q/802.1ad" #: netbox/ipam/forms/filtersets.py:597 netbox/ipam/models/vlans.py:209 -#: netbox/templates/ipam/vlan.html:31 +#: netbox/ipam/ui/panels.py:198 msgid "VLAN ID" msgstr "VLAN ID" #: netbox/ipam/forms/model_forms.py:86 -#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "路由目标" #: netbox/ipam/forms/model_forms.py:117 netbox/ipam/tables/ip.py:65 -#: netbox/templates/ipam/aggregate.html:11 -#: netbox/templates/ipam/prefix.html:38 +#: netbox/ipam/ui/panels.py:144 msgid "Aggregate" msgstr "聚合IP" -#: netbox/ipam/forms/model_forms.py:138 netbox/templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:138 msgid "ASN Range" msgstr "ASN范围" -#: netbox/ipam/forms/model_forms.py:262 netbox/templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:262 msgid "IP Range" msgstr "IP范围" @@ -11020,8 +10870,7 @@ msgstr "虚拟IP地址" msgid "Assignment already exists" msgstr "已被分配" -#: netbox/ipam/forms/model_forms.py:594 -#: netbox/templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:594 netbox/ipam/ui/panels.py:161 msgid "VLAN IDs" msgstr "VLAN ID" @@ -11037,7 +10886,6 @@ msgid "" msgstr "不建议直接向站点分配 VLAN,将在未来的版本中删除。鼓励用户为此目的使用 VLAN 组。" #: netbox/ipam/forms/model_forms.py:721 -#: netbox/templates/ipam/vlantranslationrule.html:11 msgid "VLAN Translation Rule" msgstr "VLAN 转换规则" @@ -11048,7 +10896,6 @@ msgid "" msgstr "一个或多个端口号的列表,逗号分隔。可以使用连字符指定范围。" #: netbox/ipam/forms/model_forms.py:742 -#: netbox/templates/ipam/servicetemplate.html:12 msgid "Application Service Template" msgstr "应用程序服务模板" @@ -11217,7 +11064,7 @@ msgstr "地址池" msgid "All IP addresses within this prefix are considered usable" msgstr "此前缀内的所有IP地址都可用" -#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:261 netbox/ipam/models/ip.py:558 msgid "mark utilized" msgstr "使用标记" @@ -11229,12 +11076,12 @@ msgstr "前缀" msgid "Cannot create prefix with /0 mask." msgstr "无法创建/0掩码的IP地址前缀。" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 #, python-brace-format msgid "VRF {vrf}" msgstr "VRF {vrf}" -#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:905 +#: netbox/ipam/models/ip.py:316 netbox/ipam/models/ip.py:915 msgid "global table" msgstr "全局表" @@ -11243,137 +11090,137 @@ msgstr "全局表" msgid "Duplicate prefix found in {table}: {prefix}" msgstr "在{table}中发现重复的前缀: {prefix}" -#: netbox/ipam/models/ip.py:501 +#: netbox/ipam/models/ip.py:511 msgid "start address" msgstr "起始地址" -#: netbox/ipam/models/ip.py:502 netbox/ipam/models/ip.py:506 -#: netbox/ipam/models/ip.py:739 +#: netbox/ipam/models/ip.py:512 netbox/ipam/models/ip.py:516 +#: netbox/ipam/models/ip.py:749 msgid "IPv4 or IPv6 address (with mask)" msgstr "IPv4 或 IPv6 地址(带掩码)" -#: netbox/ipam/models/ip.py:505 +#: netbox/ipam/models/ip.py:515 msgid "end address" msgstr "结束地址" -#: netbox/ipam/models/ip.py:532 +#: netbox/ipam/models/ip.py:542 msgid "Operational status of this range" msgstr "此IP范围的操作状态" -#: netbox/ipam/models/ip.py:540 +#: netbox/ipam/models/ip.py:550 msgid "The primary function of this range" msgstr "此IP范围的主要功能" -#: netbox/ipam/models/ip.py:543 +#: netbox/ipam/models/ip.py:553 msgid "mark populated" msgstr "标记已填充" -#: netbox/ipam/models/ip.py:545 +#: netbox/ipam/models/ip.py:555 msgid "Prevent the creation of IP addresses within this range" msgstr "防止在此范围内创建 IP 地址" -#: netbox/ipam/models/ip.py:550 +#: netbox/ipam/models/ip.py:560 msgid "Report space as fully utilized" msgstr "报告空间已充分利用" -#: netbox/ipam/models/ip.py:559 +#: netbox/ipam/models/ip.py:569 msgid "IP range" msgstr "IP范围" -#: netbox/ipam/models/ip.py:560 +#: netbox/ipam/models/ip.py:570 msgid "IP ranges" msgstr "IP范围" -#: netbox/ipam/models/ip.py:573 +#: netbox/ipam/models/ip.py:583 msgid "Starting and ending IP address versions must match" msgstr "起始和结束IP地址的版本必须一致" -#: netbox/ipam/models/ip.py:579 +#: netbox/ipam/models/ip.py:589 msgid "Starting and ending IP address masks must match" msgstr "起始和结束IP地址的掩码必须一致" -#: netbox/ipam/models/ip.py:586 +#: netbox/ipam/models/ip.py:596 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "结束地址必须大于起始地址 ({start_address})" -#: netbox/ipam/models/ip.py:614 +#: netbox/ipam/models/ip.py:624 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "定义的地址与 VRF {vrf} 中的范围 {overlapping_range} 重叠" -#: netbox/ipam/models/ip.py:623 +#: netbox/ipam/models/ip.py:633 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "定义的范围超过了支持的最大大小 ({max_size})" -#: netbox/ipam/models/ip.py:738 netbox/tenancy/models/contacts.py:78 +#: netbox/ipam/models/ip.py:748 netbox/tenancy/models/contacts.py:78 msgid "address" msgstr "地址" -#: netbox/ipam/models/ip.py:761 +#: netbox/ipam/models/ip.py:771 msgid "The operational status of this IP" msgstr "此IP的运行状态" -#: netbox/ipam/models/ip.py:769 +#: netbox/ipam/models/ip.py:779 msgid "The functional role of this IP" msgstr "此IP的功能作用" -#: netbox/ipam/models/ip.py:792 netbox/templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:802 netbox/ipam/ui/panels.py:126 msgid "NAT (inside)" msgstr "NAT(内部 IP)" -#: netbox/ipam/models/ip.py:793 +#: netbox/ipam/models/ip.py:803 msgid "The IP for which this address is the \"outside\" IP" msgstr "此IP地址为外部IP" -#: netbox/ipam/models/ip.py:800 +#: netbox/ipam/models/ip.py:810 msgid "Hostname or FQDN (not case-sensitive)" msgstr "主机名或 FQDN(不区分大小写)" -#: netbox/ipam/models/ip.py:816 netbox/ipam/models/services.py:86 +#: netbox/ipam/models/ip.py:826 netbox/ipam/models/services.py:86 msgid "IP addresses" msgstr "IP地址" -#: netbox/ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:886 msgid "Cannot create IP address with /0 mask." msgstr "无法创建/0掩码的IP地址。" -#: netbox/ipam/models/ip.py:882 +#: netbox/ipam/models/ip.py:892 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "{ip}是一个网络号,不能分配给接口。" -#: netbox/ipam/models/ip.py:893 +#: netbox/ipam/models/ip.py:903 #, python-brace-format msgid "" "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "{ip}是一个广播地址,不能分配给接口。" -#: netbox/ipam/models/ip.py:907 +#: netbox/ipam/models/ip.py:917 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "在 {table}中发现重复的IP地址: {ipaddress}" -#: netbox/ipam/models/ip.py:923 +#: netbox/ipam/models/ip.py:933 #, python-brace-format msgid "Cannot create IP address {ip} inside range {range}." msgstr "无法创建 IP 地址 {ip} 范围内 {range}。" -#: netbox/ipam/models/ip.py:944 +#: netbox/ipam/models/ip.py:954 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" msgstr "当 IP 地址被指定为父对象的首选 IP 时,无法重新分配 IP 地址" -#: netbox/ipam/models/ip.py:951 +#: netbox/ipam/models/ip.py:961 msgid "" "Cannot reassign IP address while it is designated as the OOB IP for the " "parent object" msgstr "当 IP 地址被指定为父对象的 OOB IP 时,无法重新分配 IP 地址" -#: netbox/ipam/models/ip.py:957 +#: netbox/ipam/models/ip.py:967 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "只能为IPv6地址分配SLAAC状态" @@ -11559,17 +11406,17 @@ msgid "Added" msgstr "已添加" #: netbox/ipam/tables/ip.py:76 netbox/ipam/tables/ip.py:111 -#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:426 -#: netbox/netbox/navigation/menu.py:175 netbox/netbox/navigation/menu.py:177 -#: netbox/templates/ipam/vlan.html:100 +#: netbox/ipam/tables/vlans.py:121 netbox/ipam/views.py:542 +#: netbox/ipam/views.py:1619 netbox/netbox/navigation/menu.py:175 +#: netbox/netbox/navigation/menu.py:177 msgid "Prefixes" msgstr "前缀" #: netbox/ipam/tables/ip.py:79 netbox/ipam/tables/ip.py:220 #: netbox/ipam/tables/ip.py:277 netbox/ipam/tables/vlans.py:56 +#: netbox/ipam/ui/panels.py:79 netbox/ipam/ui/panels.py:100 #: netbox/templates/dcim/panels/power_utilization.html:12 -#: netbox/templates/ipam/aggregate.html:24 -#: netbox/templates/ipam/iprange.html:37 netbox/templates/ipam/prefix.html:102 +#: netbox/templates/ipam/panels/prefix_addressing.html:15 msgid "Utilization" msgstr "利用率" @@ -11596,7 +11443,7 @@ msgid "Pool" msgstr "地址池" #: netbox/ipam/tables/ip.py:216 netbox/ipam/tables/ip.py:273 -#: netbox/templates/ipam/iprange.html:33 +#: netbox/ipam/ui/panels.py:96 msgid "Marked Utilized" msgstr "标记为已使用" @@ -11604,7 +11451,7 @@ msgstr "标记为已使用" msgid "Start address" msgstr "起始地址" -#: netbox/ipam/tables/ip.py:269 netbox/templates/ipam/iprange.html:29 +#: netbox/ipam/tables/ip.py:269 netbox/ipam/ui/panels.py:95 msgid "Marked Populated" msgstr "标记为已填充" @@ -11634,17 +11481,14 @@ msgid "VID" msgstr "VLAN号" #: netbox/ipam/tables/vlans.py:211 -#: netbox/templates/ipam/vlantranslationpolicy.html:22 msgid "Rules" msgstr "规则" -#: netbox/ipam/tables/vlans.py:234 -#: netbox/templates/ipam/vlantranslationrule.html:18 +#: netbox/ipam/tables/vlans.py:234 netbox/ipam/ui/panels.py:174 msgid "Local VID" msgstr "本地视频" -#: netbox/ipam/tables/vlans.py:238 -#: netbox/templates/ipam/vlantranslationrule.html:22 +#: netbox/ipam/tables/vlans.py:238 netbox/ipam/ui/panels.py:175 msgid "Remote VID" msgstr "远程 VID" @@ -11664,16 +11508,71 @@ msgstr "引入targets" msgid "Export Targets" msgstr "输出targets" -#: netbox/ipam/ui/panels.py:27 +#: netbox/ipam/ui/panels.py:28 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "创建组" -#: netbox/ipam/ui/panels.py:35 netbox/templates/circuits/circuit.html:80 -#: netbox/templates/circuits/virtualcircuit.html:73 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "分配组" +#: netbox/ipam/ui/panels.py:42 +msgid "Route Distinguisher" +msgstr "路由实例" + +#: netbox/ipam/ui/panels.py:44 +msgid "Unique IP Space" +msgstr "独立IP空间" + +#: netbox/ipam/ui/panels.py:67 +msgid "AS Number" +msgstr "AS号码" + +#: netbox/ipam/ui/panels.py:74 netbox/ipam/ui/panels.py:91 +#: netbox/ipam/ui/panels.py:110 netbox/ipam/ui/panels.py:138 +msgid "Family" +msgstr "Family" + +#: netbox/ipam/ui/panels.py:82 +msgid "Date Added" +msgstr "添加日期" + +#: netbox/ipam/ui/panels.py:92 +msgid "Starting Address" +msgstr "开始地址" + +#: netbox/ipam/ui/panels.py:93 +msgid "Ending Address" +msgstr "结束地址" + +#: netbox/ipam/ui/panels.py:131 +msgid "NAT (outside)" +msgstr "NAT(外部ip)" + +#: netbox/ipam/ui/panels.py:133 +msgid "Primary IP" +msgstr "主要 IP" + +#: netbox/ipam/ui/panels.py:134 +msgid "OOB IP" +msgstr "哈哈哈哈哈哈的" + +#: netbox/ipam/ui/panels.py:190 +msgid "Authentication Type" +msgstr "认证类型" + +#: netbox/ipam/ui/panels.py:191 +msgid "Authentication Key" +msgstr "认证密钥" + +#: netbox/ipam/ui/panels.py:204 +msgid "Q-in-Q Role" +msgstr "Q-in-Q 角色" + +#: netbox/ipam/ui/panels.py:218 +msgid "Customer VLANs" +msgstr "客户 VLAN" + +#: netbox/ipam/ui/panels.py:226 +msgid "Add a VLAN" +msgstr "添加 VLAN" #: netbox/ipam/utils.py:30 msgid "1 IP available" @@ -11709,26 +11608,79 @@ msgid "" "are allowed in DNS names" msgstr "DNS 名称中仅允许使用字母数字字符、星号、连字符、句点和下划线" -#: netbox/ipam/views.py:66 netbox/ipam/views.py:1403 +#: netbox/ipam/views.py:96 netbox/ipam/views.py:1645 msgid "Device Interfaces" msgstr "设备接口" -#: netbox/ipam/views.py:71 netbox/ipam/views.py:1421 +#: netbox/ipam/views.py:101 netbox/ipam/views.py:1663 msgid "VM Interfaces" msgstr "VM接口" -#: netbox/ipam/views.py:627 +#: netbox/ipam/views.py:183 +msgid "Importing VRFs" +msgstr "导入VFR" + +#: netbox/ipam/views.py:190 +msgid "Exporting VRFs" +msgstr "导出VFR" + +#: netbox/ipam/views.py:199 +msgid "Importing L2VPNs" +msgstr "导入L2VPN" + +#: netbox/ipam/views.py:206 +msgid "Exporting L2VPNs" +msgstr "导出L2VPN" + +#: netbox/ipam/views.py:710 +msgid "Duplicate prefixes" +msgstr "重复的前缀" + +#: netbox/ipam/views.py:711 netbox/ipam/views.py:905 netbox/ipam/views.py:1013 +msgid "Parent prefixes" +msgstr "父前缀" + +#: netbox/ipam/views.py:763 msgid "Child Prefixes" msgstr "下级前缀" -#: netbox/ipam/views.py:663 +#: netbox/ipam/views.py:799 msgid "Child Ranges" msgstr "子类地址访问" -#: netbox/ipam/views.py:1016 +#: netbox/ipam/views.py:1014 +msgid "Duplicate IPs" +msgstr "重复 IP" + +#: netbox/ipam/views.py:1018 +msgid "Application services" +msgstr "应用程序服务" + +#: netbox/ipam/views.py:1184 msgid "Related IPs" msgstr "关联IP" +#: netbox/ipam/views.py:1322 +msgid "VLAN translation rules" +msgstr "VLAN 转换规则" + +#: netbox/ipam/views.py:1327 +msgid "Add Rule" +msgstr "添加规则" + +#: netbox/ipam/views.py:1468 +msgid "Virtual IP addresses" +msgstr "虚拟 IP 地址" + +#: netbox/ipam/views.py:1473 netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +msgid "Add IP Address" +msgstr "增加 IP 地址" + +#: netbox/ipam/views.py:1628 +msgid "Add a Prefix" +msgstr "添加一个前缀" + #: netbox/netbox/api/fields.py:67 msgid "This field may not be blank." msgstr "此字段不能为空。" @@ -12223,7 +12175,6 @@ msgid "Contact Groups" msgstr "联系组" #: netbox/netbox/navigation/menu.py:38 -#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "联系角色" @@ -12243,11 +12194,6 @@ msgstr "机柜立面图" msgid "Modules" msgstr "设备板卡" -#: netbox/netbox/navigation/menu.py:83 -#: netbox/templates/dcim/virtualdevicecontext.html:8 -msgid "Virtual Device Contexts" -msgstr "设备虚拟实例" - #: netbox/netbox/navigation/menu.py:91 msgid "Module Type Profiles" msgstr "模块类型配置文件" @@ -12261,12 +12207,11 @@ msgid "Device Components" msgstr "设备详情" #: netbox/netbox/navigation/menu.py:108 -#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "库存物品分类" #: netbox/netbox/navigation/menu.py:121 netbox/netbox/navigation/menu.py:125 -#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/panels/interface_virtual_circuit.html:23 msgid "Connections" msgstr "连接" @@ -12307,7 +12252,6 @@ msgid "VLAN Translation Policies" msgstr "VLAN 转换策略" #: netbox/netbox/navigation/menu.py:208 -#: netbox/templates/ipam/vlantranslationpolicy.html:46 msgid "VLAN Translation Rules" msgstr "VLAN 转换规则" @@ -12386,7 +12330,6 @@ msgid "Circuit Terminations" msgstr "链路终端" #: netbox/netbox/navigation/menu.py:290 netbox/netbox/navigation/menu.py:292 -#: netbox/templates/circuits/providernetwork.html:55 msgid "Virtual Circuits" msgstr "虚拟电路" @@ -12402,18 +12345,11 @@ msgstr "虚拟电路终端" msgid "Circuit Groups" msgstr "电路组" -#: netbox/netbox/navigation/menu.py:301 -#: netbox/templates/circuits/circuit.html:76 -#: netbox/templates/circuits/virtualcircuit.html:69 -msgid "Group Assignments" -msgstr "小组作业" - #: netbox/netbox/navigation/menu.py:305 netbox/netbox/navigation/menu.py:307 msgid "Providers" msgstr "运营商" #: netbox/netbox/navigation/menu.py:308 -#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "运营商账户" @@ -12509,7 +12445,7 @@ msgid "Journal Entries" msgstr "日志条目" #: netbox/netbox/navigation/menu.py:402 -#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange.html:7 #: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "修改日志" @@ -12562,6 +12498,7 @@ msgstr "后台任务" #: netbox/netbox/object_actions.py:88 netbox/netbox/ui/actions.py:129 #: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:10 #: netbox/templates/dcim/manufacturer.html:8 #: netbox/templates/extras/tableconfig_edit.html:29 #: netbox/templates/generic/bulk_add_component.html:22 @@ -12580,8 +12517,9 @@ msgstr "克隆" #: netbox/netbox/object_actions.py:114 #: netbox/templates/circuits/inc/circuit_termination.html:15 #: netbox/templates/circuits/inc/circuit_termination_fields.html:37 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:15 #: netbox/templates/dcim/inc/panels/inventory_items.html:32 -#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/dcim/panels/component_inventory_items.html:22 #: netbox/templates/extras/inc/script_list_content.html:16 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 @@ -12593,8 +12531,9 @@ msgstr "编辑" #: netbox/netbox/object_actions.py:125 #: netbox/templates/circuits/inc/circuit_termination.html:20 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:20 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 -#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/dcim/panels/component_inventory_items.html:27 #: netbox/templates/extras/inc/script_list_content.html:21 #: netbox/templates/generic/bulk_delete.html:21 #: netbox/templates/generic/bulk_delete.html:79 @@ -12860,17 +12799,23 @@ msgstr "虚拟插件" msgid "Copy" msgstr "复制" -#: netbox/netbox/ui/attrs.py:213 +#: netbox/netbox/ui/attrs.py:232 #, python-brace-format msgid "" "Invalid decoding option: {decoding}! Must be one of {image_decoding_choices}" msgstr "无效的解码选项: {decoding}!必须是其中之一 {image_decoding_choices}" -#: netbox/netbox/ui/attrs.py:344 +#: netbox/netbox/ui/attrs.py:295 +#, python-brace-format +msgid "" +"Invalid max_items value: {max_items}! Must be a positive integer or None." +msgstr "max_items 值无效: {max_items}!必须是正整数或无。" + +#: netbox/netbox/ui/attrs.py:440 msgid "GPS coordinates" msgstr "GPS 坐标" -#: netbox/netbox/ui/panels.py:266 +#: netbox/netbox/ui/panels.py:267 #: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "相关对象" @@ -13137,8 +13082,7 @@ msgid "Account Details" msgstr "账户详情" #: netbox/templates/account/profile.html:27 -#: netbox/templates/tenancy/contact.html:53 -#: netbox/tenancy/forms/bulk_edit.py:104 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/ui/panels.py:16 msgid "Email" msgstr "电子邮箱" @@ -13160,16 +13104,15 @@ msgid "Assigned Groups" msgstr "指定用户组" #: netbox/templates/account/profile.html:52 -#: netbox/templates/circuits/circuit_terminations_swap.html:18 -#: netbox/templates/circuits/circuit_terminations_swap.html:26 -#: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:65 -#: netbox/templates/core/objectchange.html:130 -#: netbox/templates/core/objectchange.html:148 -#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/circuits/panels/circuit_circuit_termination.html:66 +#: netbox/templates/core/panels/objectchange_postchange.html:15 +#: netbox/templates/core/panels/objectchange_prechange.html:17 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 -#: netbox/templates/dcim/interface.html:371 -#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/dcim/panels/component_inventory_items.html:35 +#: netbox/templates/dcim/panels/installed_device.html:19 +#: netbox/templates/dcim/panels/installed_module.html:31 +#: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 #: netbox/templates/extras/configcontext.html:46 #: netbox/templates/extras/configtemplate.html:81 @@ -13244,55 +13187,21 @@ msgstr "源代码" msgid "Community" msgstr "社区" -#: netbox/templates/circuits/circuit.html:57 -msgid "Install Date" -msgstr "安装时间" - -#: netbox/templates/circuits/circuit.html:61 -msgid "Termination Date" -msgstr "维护模式" - -#: netbox/templates/circuits/circuit_terminations_swap.html:4 -msgid "Swap Circuit Terminations" -msgstr "交换线路终点" - -#: netbox/templates/circuits/circuit_terminations_swap.html:8 -#, python-format -msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "将这些终结换成线路 %(circuit)s?" - -#: netbox/templates/circuits/circuit_terminations_swap.html:14 -msgid "A side" -msgstr "A端" - -#: netbox/templates/circuits/circuit_terminations_swap.html:22 -msgid "Z side" -msgstr "Z端" - -#: netbox/templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:12 msgid "Assign Circuit" msgstr "分配电路" -#: netbox/templates/circuits/circuitgroupassignment.html:19 -msgid "Circuit Group Assignment" -msgstr "电路组分配" - -#: netbox/templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:7 msgid "Add Circuit" msgstr "增加线路" -#: netbox/templates/circuits/circuittype.html:19 -msgid "Circuit Type" -msgstr "线路类型" - #: netbox/templates/circuits/inc/circuit_termination_fields.html:5 msgid "Termination point" msgstr "终止点" #: netbox/templates/circuits/inc/circuit_termination_fields.html:20 -#: netbox/templates/dcim/consoleport.html:59 -#: netbox/templates/dcim/consoleserverport.html:59 -#: netbox/templates/dcim/powerfeed.html:114 +#: netbox/templates/dcim/panels/connection.html:8 +#: netbox/templates/dcim/panels/interface_connection.html:8 msgid "Marked as connected" msgstr "标记为已连接" @@ -13302,13 +13211,14 @@ msgstr "到" #: netbox/templates/circuits/inc/circuit_termination_fields.html:32 #: netbox/templates/circuits/inc/circuit_termination_fields.html:33 -#: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/inc/cable_termination.html:26 #: netbox/templates/dcim/inc/cable_termination.html:48 #: netbox/templates/dcim/inc/cable_termination.html:66 #: netbox/templates/dcim/inc/connection_endpoints.html:7 -#: netbox/templates/dcim/interface.html:229 -#: netbox/templates/dcim/rearport.html:77 +#: netbox/templates/dcim/panels/connection.html:17 +#: netbox/templates/dcim/panels/connection.html:54 +#: netbox/templates/dcim/panels/interface_connection.html:16 +#: netbox/templates/dcim/panels/interface_connection.html:53 msgid "Trace" msgstr "跟踪" @@ -13322,37 +13232,30 @@ msgstr "删除线缆" #: netbox/templates/circuits/inc/circuit_termination_fields.html:42 #: netbox/templates/dcim/bulk_disconnect.html:5 -#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "断开" #: netbox/templates/circuits/inc/circuit_termination_fields.html:49 -#: netbox/templates/dcim/consoleport.html:69 -#: netbox/templates/dcim/consoleserverport.html:69 -#: netbox/templates/dcim/frontport.html:99 -#: netbox/templates/dcim/interface.html:255 -#: netbox/templates/dcim/interface.html:275 -#: netbox/templates/dcim/powerfeed.html:123 -#: netbox/templates/dcim/poweroutlet.html:85 -#: netbox/templates/dcim/poweroutlet.html:86 -#: netbox/templates/dcim/powerport.html:73 -#: netbox/templates/dcim/rearport.html:99 +#: netbox/templates/dcim/panels/connection.html:78 +#: netbox/templates/dcim/panels/connection.html:90 +#: netbox/templates/dcim/panels/interface_connection.html:79 +#: netbox/templates/dcim/panels/interface_connection.html:99 msgid "Connect" msgstr "连接" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:65 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 msgid "Downstream" msgstr "下游" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:66 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:68 msgid "Upstream" msgstr "上游" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:75 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:77 msgid "Cross-Connect" msgstr "交叉连接" -#: netbox/templates/circuits/inc/circuit_termination_fields.html:79 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:81 msgid "Patch Panel/Port" msgstr "配线架/端口" @@ -13360,39 +13263,10 @@ msgstr "配线架/端口" msgid "Add circuit" msgstr "添加线路" -#: netbox/templates/circuits/provideraccount.html:17 -msgid "Provider Account" -msgstr "运营商帐户" - -#: netbox/templates/circuits/providernetwork.html:59 -msgid "Add a Virtual Circuit" -msgstr "添加虚拟电路" - -#: netbox/templates/circuits/virtualcircuit.html:91 -#: netbox/templates/vpn/tunnel.html:7 -msgid "Add Termination" -msgstr "增加接入点" - -#: netbox/templates/circuits/virtualcircuittermination.html:23 -msgid "Virtual Circuit Termination" -msgstr "虚拟电路终止" - -#: netbox/templates/circuits/virtualcircuittype.html:10 +#: netbox/templates/circuits/virtualcircuittype.html:7 msgid "Add Virtual Circuit" msgstr "添加虚拟电路" -#: netbox/templates/circuits/virtualcircuittype.html:19 -msgid "Virtual Circuit Type" -msgstr "虚拟电路类型" - -#: netbox/templates/core/configrevision.html:35 -msgid "Configuration Data" -msgstr "配置数据" - -#: netbox/templates/core/configrevision.html:40 -msgid "Comment" -msgstr "评论" - #: netbox/templates/core/configrevision_restore.html:8 #: netbox/templates/core/configrevision_restore.html:25 #: netbox/templates/core/configrevision_restore.html:64 @@ -13415,31 +13289,11 @@ msgstr "新变量" msgid "Changed" msgstr "已更改" -#: netbox/templates/core/datafile.html:37 +#: netbox/templates/core/datafile/attrs/size.html:1 #: netbox/templates/extras/imageattachment.html:46 msgid "bytes" msgstr "bytes" -#: netbox/templates/core/datafile.html:40 -msgid "SHA256 Hash" -msgstr "SHA256 Hash" - -#: netbox/templates/core/datafile.html:49 -msgid "Content" -msgstr "内容" - -#: netbox/templates/core/datasource.html:54 -msgid "Last synced" -msgstr "最后同步" - -#: netbox/templates/core/datasource.html:88 -msgid "Backend" -msgstr "后台" - -#: netbox/templates/core/datasource.html:103 -msgid "No parameters defined" -msgstr "未定义参数" - #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "机柜立面图" @@ -13498,70 +13352,11 @@ msgstr "与此对象关联的数据文件已被删除" msgid "Data Synced" msgstr "数据已同步" -#: netbox/templates/core/job.html:8 netbox/templates/core/rq_task.html:12 -#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 -msgid "Job" -msgstr "任务" - -#: netbox/templates/core/job.html:31 -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "创建者" - -#: netbox/templates/core/job.html:39 -msgid "Scheduling" -msgstr "日程安排" - -#: netbox/templates/core/job.html:50 +#: netbox/templates/core/job/attrs/scheduled.html:3 #, python-format msgid "every %(interval)s minutes" msgstr "每 %(interval)s 分钟" -#: netbox/templates/core/objectchange.html:29 netbox/users/ui/panels.py:53 -msgid "Change" -msgstr "更改" - -#: netbox/templates/core/objectchange.html:85 -msgid "Difference" -msgstr "差异" - -#: netbox/templates/core/objectchange.html:88 -msgid "Previous" -msgstr "上一个" - -#: netbox/templates/core/objectchange.html:91 -msgid "Next" -msgstr "下一个" - -#: netbox/templates/core/objectchange.html:99 -msgid "Object Created" -msgstr "对象已创建" - -#: netbox/templates/core/objectchange.html:101 -msgid "Object Deleted" -msgstr "对象已删除" - -#: netbox/templates/core/objectchange.html:103 -msgid "No Changes" -msgstr "没有改变" - -#: netbox/templates/core/objectchange.html:117 -msgid "Pre-Change Data" -msgstr "变更前配置" - -#: netbox/templates/core/objectchange.html:128 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "警告:将非原子更改与以前的更改记录进行比较" - -#: netbox/templates/core/objectchange.html:137 -msgid "Post-Change Data" -msgstr "变更后配置" - -#: netbox/templates/core/objectchange.html:168 -#, python-format -msgid "See All %(count)s Changes" -msgstr "查看所有的%(count)s个变更" - #: netbox/templates/core/objectchange_list.html:9 #: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" @@ -13577,6 +13372,59 @@ msgstr "天" msgid "Indefinite" msgstr "无限期的" +#: netbox/templates/core/panels/configrevision_comment.html:3 +msgid "Comment" +msgstr "评论" + +#: netbox/templates/core/panels/configrevision_data.html:3 +msgid "Configuration Data" +msgstr "配置数据" + +#: netbox/templates/core/panels/datasource_backend.html:20 +msgid "No parameters defined" +msgstr "未定义参数" + +#: netbox/templates/core/panels/objectchange_difference.html:5 +msgid "Difference" +msgstr "差异" + +#: netbox/templates/core/panels/objectchange_difference.html:8 +msgid "Previous" +msgstr "上一个" + +#: netbox/templates/core/panels/objectchange_difference.html:11 +msgid "Next" +msgstr "下一个" + +#: netbox/templates/core/panels/objectchange_difference.html:19 +msgid "Object Created" +msgstr "对象已创建" + +#: netbox/templates/core/panels/objectchange_difference.html:21 +msgid "Object Deleted" +msgstr "对象已删除" + +#: netbox/templates/core/panels/objectchange_difference.html:23 +msgid "No Changes" +msgstr "没有改变" + +#: netbox/templates/core/panels/objectchange_postchange.html:4 +msgid "Post-Change Data" +msgstr "变更后配置" + +#: netbox/templates/core/panels/objectchange_prechange.html:4 +msgid "Pre-Change Data" +msgstr "变更前配置" + +#: netbox/templates/core/panels/objectchange_prechange.html:15 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "警告:将非原子更改与以前的更改记录进行比较" + +#: netbox/templates/core/panels/objectchange_related.html:6 +#, python-format +msgid "See All %(count)s Changes" +msgstr "查看所有的%(count)s个变更" + #: netbox/templates/core/plugin.html:22 msgid "Not installed" msgstr "未安装" @@ -13862,22 +13710,13 @@ msgstr "分隔符" msgid "Incomplete" msgstr "未完成" -#: netbox/templates/dcim/consoleport.html:65 -#: netbox/templates/dcim/consoleserverport.html:65 -#: netbox/templates/dcim/frontport.html:95 -#: netbox/templates/dcim/interface.html:251 -#: netbox/templates/dcim/poweroutlet.html:83 -#: netbox/templates/dcim/powerport.html:69 -msgid "Not Connected" -msgstr "未连接" - #: netbox/templates/dcim/device/attrs/ipaddress.html:5 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:4 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:5 msgid "NAT for" msgstr "NAT for" #: netbox/templates/dcim/device/attrs/ipaddress.html:7 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:6 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:7 msgid "NAT" msgstr "NAT" @@ -13885,7 +13724,7 @@ msgstr "NAT" #: netbox/templates/ui/actions/copy_content.html:2 #: netbox/templates/ui/attrs/numeric.html:9 #: netbox/templates/ui/attrs/text.html:4 -#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:8 +#: netbox/templates/virtualization/virtualmachine/attrs/ipaddress.html:10 #: netbox/utilities/templates/form_helpers/render_field.html:41 msgid "Copy to clipboard" msgstr "复制到剪贴板" @@ -13935,10 +13774,6 @@ msgstr "删除" msgid "Local Config Context Data" msgstr "本地配置数据实例" -#: netbox/templates/dcim/devicebay.html:17 -msgid "Device Bay" -msgstr "设备托架" - #: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" @@ -13964,34 +13799,6 @@ msgstr "托架" msgid "Add Device" msgstr "增加设备" -#: netbox/templates/dcim/frontport.html:50 -#: netbox/templates/dcim/rearport.html:50 -msgid "Positions" -msgstr "位置" - -#: netbox/templates/dcim/frontport.html:69 -#: netbox/templates/dcim/interface.html:219 -#: netbox/templates/dcim/poweroutlet.html:77 -#: netbox/templates/dcim/powerport.html:63 -#: netbox/templates/dcim/rearport.html:69 -msgid "Marked as Connected" -msgstr "标记为已连接" - -#: netbox/templates/dcim/frontport.html:83 -#: netbox/templates/dcim/rearport.html:83 -msgid "Connection Status" -msgstr "连接状态" - -#: netbox/templates/dcim/frontport.html:127 -#: netbox/templates/dcim/rearport.html:121 -msgid "Port Mappings" -msgstr "端口映射" - -#: netbox/templates/dcim/frontport.html:145 -#: netbox/templates/dcim/rearport.html:139 -msgid "No mappings defined" -msgstr "未定义映射" - #: netbox/templates/dcim/htmx/cable_edit.html:13 msgid "A Side" msgstr "A端" @@ -14017,6 +13824,8 @@ msgid "Path Status" msgstr "路径状态" #: netbox/templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/panels/connection.html:28 +#: netbox/templates/dcim/panels/interface_connection.html:27 msgid "Not Reachable" msgstr "不可达" @@ -14025,8 +13834,6 @@ msgid "Path Endpoints" msgstr "路径终点" #: netbox/templates/dcim/inc/endpoint_connection.html:8 -#: netbox/templates/dcim/powerfeed.html:120 -#: netbox/templates/dcim/rearport.html:95 msgid "Not connected" msgstr "未连接" @@ -14072,94 +13879,10 @@ msgstr "机架仰角" msgid "Loading..." msgstr "加载中..." -#: netbox/templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:14 msgid "Add Child Interface" msgstr "添加子接口" -#: netbox/templates/dcim/interface.html:50 -msgid "Speed/Duplex" -msgstr "速率/双工模式" - -#: netbox/templates/dcim/interface.html:73 -msgid "PoE Mode" -msgstr "PoE模式" - -#: netbox/templates/dcim/interface.html:77 -msgid "PoE Type" -msgstr "PoE类型" - -#: netbox/templates/dcim/interface.html:121 -msgid "Bridged Interfaces" -msgstr "桥接接口" - -#: netbox/templates/dcim/interface.html:174 -#: netbox/virtualization/ui/panels.py:75 netbox/virtualization/views.py:602 -msgid "VLAN Translation" -msgstr "VLAN 转换" - -#: netbox/templates/dcim/interface.html:226 -msgid "Wireless Link" -msgstr "无线连接" - -#: netbox/templates/dcim/interface.html:305 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 -msgid "Channel" -msgstr "通道" - -#: netbox/templates/dcim/interface.html:314 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 -msgid "Channel Frequency" -msgstr "通道频率" - -#: netbox/templates/dcim/interface.html:317 -#: netbox/templates/dcim/interface.html:325 -#: netbox/templates/dcim/interface.html:336 -#: netbox/templates/dcim/interface.html:344 -msgid "MHz" -msgstr "MHz" - -#: netbox/templates/dcim/interface.html:333 -#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 -msgid "Channel Width" -msgstr "信道频率" - -#: netbox/templates/dcim/interface.html:360 -#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 -#: netbox/wireless/forms/filtersets.py:49 -#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 -#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 -#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 -msgid "SSID" -msgstr "SSID" - -#: netbox/templates/dcim/interface.html:391 -#: netbox/templates/ipam/fhrpgroup.html:74 -#: netbox/templates/ipam/iprange/ip_addresses.html:7 -#: netbox/templates/ipam/prefix/ip_addresses.html:7 -msgid "Add IP Address" -msgstr "增加 IP 地址" - -#: netbox/templates/dcim/interface.html:408 -msgid "Add MAC Address" -msgstr "添加 MAC 地址" - -#: netbox/templates/dcim/inventoryitem.html:24 -msgid "Parent Item" -msgstr "父项" - -#: netbox/templates/dcim/inventoryitem.html:52 -msgid "Part ID" -msgstr "零件ID" - -#: netbox/templates/dcim/inventoryitem.html:60 -#: netbox/templates/dcim/modulebay.html:74 -msgid "Asset Tag" -msgstr "资产标签" - -#: netbox/templates/dcim/macaddress.html:36 -msgid "Primary for interface" -msgstr "主要用于接口" - #: netbox/templates/dcim/manufacturer.html:13 msgid "Add Device Type" msgstr "增加设备型号" @@ -14168,6 +13891,64 @@ msgstr "增加设备型号" msgid "Add Module Type" msgstr "添加一个模块类型" +#: netbox/templates/dcim/panels/connection.html:23 +#: netbox/templates/dcim/panels/interface_connection.html:22 +msgid "Path status" +msgstr "路径状态" + +#: netbox/templates/dcim/panels/connection.html:33 +#: netbox/templates/dcim/panels/interface_connection.html:32 +msgid "Path endpoints" +msgstr "路径端点" + +#: netbox/templates/dcim/panels/connection.html:73 +#: netbox/templates/dcim/panels/interface_connection.html:75 +msgid "Not Connected" +msgstr "未连接" + +#: netbox/templates/dcim/panels/front_port_mappings.html:4 +#: netbox/templates/dcim/panels/rear_port_mappings.html:4 +msgid "Port Mappings" +msgstr "端口映射" + +#: netbox/templates/dcim/panels/front_port_mappings.html:24 +#: netbox/templates/dcim/panels/rear_port_mappings.html:24 +msgid "No mappings defined" +msgstr "未定义映射" + +#: netbox/templates/dcim/panels/interface_connection.html:50 +msgid "Wireless Link" +msgstr "无线连接" + +#: netbox/templates/dcim/panels/interface_wireless.html:24 +#: netbox/templates/wireless/panels/wirelesslink_interface.html:24 +msgid "Channel" +msgstr "通道" + +#: netbox/templates/dcim/panels/interface_wireless.html:33 +msgid "Channel frequency" +msgstr "频道频率" + +#: netbox/templates/dcim/panels/interface_wireless.html:36 +#: netbox/templates/dcim/panels/interface_wireless.html:44 +#: netbox/templates/dcim/panels/interface_wireless.html:55 +#: netbox/templates/dcim/panels/interface_wireless.html:63 +msgid "MHz" +msgstr "MHz" + +#: netbox/templates/dcim/panels/interface_wireless.html:52 +msgid "Channel width" +msgstr "信道宽度" + +#: netbox/templates/dcim/panels/interface_wireless_lans.html:9 +#: netbox/wireless/forms/bulk_edit.py:57 netbox/wireless/forms/bulk_edit.py:94 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:115 netbox/wireless/models.py:86 +#: netbox/wireless/models.py:152 netbox/wireless/tables/wirelesslan.py:37 +#: netbox/wireless/ui/panels.py:11 netbox/wireless/ui/panels.py:48 +msgid "SSID" +msgstr "SSID" + #: netbox/templates/dcim/panels/module_type_attributes.html:7 msgid "No profile assigned" msgstr "未分配个人资料" @@ -14187,7 +13968,7 @@ msgstr "分配" #: netbox/templates/dcim/panels/power_utilization.html:20 #: netbox/templates/dcim/panels/power_utilization.html:22 #: netbox/templates/dcim/panels/power_utilization.html:38 -#: netbox/templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/powerfeed/attrs/utilization.html:5 msgid "VA" msgstr "VA" @@ -14211,44 +13992,6 @@ msgstr "仅图像" msgid "Labels only" msgstr "仅标签" -#: netbox/templates/dcim/powerfeed.html:53 -msgid "Connected Device" -msgstr "连接设备" - -#: netbox/templates/dcim/powerfeed.html:63 -msgid "Utilization (Allocated" -msgstr "利用率(已分配" - -#: netbox/templates/dcim/powerfeed.html:80 -msgid "Electrical Characteristics" -msgstr "电气特性" - -#: netbox/templates/dcim/powerfeed.html:88 -msgctxt "Abbreviation for volts" -msgid "V" -msgstr "V" - -#: netbox/templates/dcim/powerfeed.html:92 -msgctxt "Abbreviation for amperes" -msgid "A" -msgstr "A" - -#: netbox/templates/dcim/poweroutlet.html:62 -msgid "Feed Leg" -msgstr "电源针脚" - -#: netbox/templates/dcim/powerpanel.html:72 -msgid "Add Power Feeds" -msgstr "添加供电线路" - -#: netbox/templates/dcim/powerport.html:44 -msgid "Maximum Draw" -msgstr "最大功率" - -#: netbox/templates/dcim/powerport.html:48 -msgid "Allocated Draw" -msgstr "允许功率" - #: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "增加预留" @@ -14288,10 +14031,6 @@ msgstr "增加站点" msgid "Attachment" msgstr "附件" -#: netbox/templates/dcim/virtualchassis.html:47 -msgid "Add Member" -msgstr "增加成员" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14341,10 +14080,6 @@ msgid "" "chassis %(name)s?" msgstr "确认从%(name)s中移除%(device)s?" -#: netbox/templates/dcim/virtualdevicecontext.html:26 -msgid "Identifier" -msgstr "标识符" - #: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " @@ -14655,6 +14390,10 @@ msgstr "从上传的文件或数据源开始 msgid "Journal Entry" msgstr "日志条目" +#: netbox/templates/extras/journalentry.html:26 +msgid "Created By" +msgstr "创建者" + #: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "通知组" @@ -15138,37 +14877,15 @@ msgstr "登出" msgid "Log In" msgstr "登录" -#: netbox/templates/ipam/aggregate.html:14 -#: netbox/templates/ipam/ipaddress.html:14 -#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 -msgid "Family" -msgstr "Family" - -#: netbox/templates/ipam/aggregate.html:39 -msgid "Date Added" -msgstr "添加日期" - #: netbox/templates/ipam/aggregate/prefixes.html:10 #: netbox/templates/ipam/prefix/prefixes.html:10 -#: netbox/templates/ipam/role.html:10 +#: netbox/templates/ipam/role.html:7 msgid "Add Prefix" msgstr "增加IP前缀" -#: netbox/templates/ipam/asn.html:23 -msgid "AS Number" -msgstr "AS号码" - -#: netbox/templates/ipam/fhrpgroup.html:52 -msgid "Authentication Type" -msgstr "认证类型" - -#: netbox/templates/ipam/fhrpgroup.html:56 -msgid "Authentication Key" -msgstr "认证密钥" - -#: netbox/templates/ipam/fhrpgroup.html:70 -msgid "Virtual IP Addresses" -msgstr "虚拟IP地址" +#: netbox/templates/ipam/attrs/vrf.html:2 +msgid "Global" +msgstr "全局" #: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" @@ -15203,15 +14920,6 @@ msgstr "查看可用" msgid "Show All" msgstr "全部显示" -#: netbox/templates/ipam/ipaddress.html:23 -#: netbox/templates/ipam/iprange.html:52 netbox/templates/ipam/prefix.html:24 -msgid "Global" -msgstr "全局" - -#: netbox/templates/ipam/ipaddress.html:85 -msgid "NAT (outside)" -msgstr "NAT(外部ip)" - #: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "分配IP地址" @@ -15228,51 +14936,43 @@ msgstr "搜索结果" msgid "Bulk Add IP Addresses" msgstr "批量创建IP地址" -#: netbox/templates/ipam/iprange.html:17 -msgid "Starting Address" -msgstr "开始地址" - -#: netbox/templates/ipam/iprange.html:21 -msgid "Ending Address" -msgstr "结束地址" - -#: netbox/templates/ipam/prefix.html:95 +#: netbox/templates/ipam/panels/prefix_addressing.html:8 msgid "Addressing Details" msgstr "IP地址详细信息" -#: netbox/templates/ipam/prefix.html:106 +#: netbox/templates/ipam/panels/prefix_addressing.html:19 msgid "Marked fully utilized" msgstr "标记为已全部被使用" -#: netbox/templates/ipam/prefix.html:114 +#: netbox/templates/ipam/panels/prefix_addressing.html:27 msgid "Child IPs" msgstr "子IP" -#: netbox/templates/ipam/prefix.html:122 +#: netbox/templates/ipam/panels/prefix_addressing.html:35 msgid "Available IPs" msgstr "可用IP" -#: netbox/templates/ipam/prefix.html:134 +#: netbox/templates/ipam/panels/prefix_addressing.html:46 msgid "First available IP" msgstr "第一个可用IP" -#: netbox/templates/ipam/prefix.html:175 +#: netbox/templates/ipam/prefix/base.html:20 msgid "Prefix Details" msgstr "前缀详细信息" -#: netbox/templates/ipam/prefix.html:181 +#: netbox/templates/ipam/prefix/base.html:26 msgid "Network Address" msgstr "网络地址" -#: netbox/templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix/base.html:30 msgid "Network Mask" msgstr "网络掩码/子网掩码" -#: netbox/templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix/base.html:34 msgid "Wildcard Mask" msgstr "反掩码" -#: netbox/templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix/base.html:38 msgid "Broadcast Address" msgstr "广播地址" @@ -15284,58 +14984,14 @@ msgstr "添加IP范围" msgid "Hide Depth Indicators" msgstr "隐藏深度值" -#: netbox/templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:7 msgid "Add Aggregate" msgstr "添加聚合IP" -#: netbox/templates/ipam/routetarget.html:38 -msgid "Importing VRFs" -msgstr "导入VFR" - -#: netbox/templates/ipam/routetarget.html:44 -msgid "Exporting VRFs" -msgstr "导出VFR" - -#: netbox/templates/ipam/routetarget.html:52 -msgid "Importing L2VPNs" -msgstr "导入L2VPN" - -#: netbox/templates/ipam/routetarget.html:58 -msgid "Exporting L2VPNs" -msgstr "导出L2VPN" - -#: netbox/templates/ipam/vlan.html:66 -msgid "Q-in-Q Role" -msgstr "Q-in-Q 角色" - -#: netbox/templates/ipam/vlan.html:104 -msgid "Add a Prefix" -msgstr "添加一个前缀" - -#: netbox/templates/ipam/vlan.html:114 -msgid "Customer VLANs" -msgstr "客户 VLAN" - -#: netbox/templates/ipam/vlan.html:118 -msgid "Add a VLAN" -msgstr "添加 VLAN" - -#: netbox/templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:16 msgid "Add VLAN" msgstr "添加VLAN" -#: netbox/templates/ipam/vlantranslationpolicy.html:51 -msgid "Add Rule" -msgstr "添加规则" - -#: netbox/templates/ipam/vrf.html:16 -msgid "Route Distinguisher" -msgstr "路由实例" - -#: netbox/templates/ipam/vrf.html:29 -msgid "Unique IP Space" -msgstr "独立IP空间" - #: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" @@ -15396,61 +15052,14 @@ msgstr "文件%(filename)s存在于静态文件根目录中,可 msgid "Click here to attempt loading NetBox again." msgstr "点击 这里重新加载NetBox" -#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:168 -#: netbox/tenancy/forms/bulk_edit.py:131 -#: netbox/tenancy/forms/filtersets.py:100 -#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 -#: netbox/tenancy/forms/model_forms.py:106 -#: netbox/tenancy/forms/model_forms.py:130 -#: netbox/tenancy/tables/contacts.py:92 -msgid "Contact" -msgstr "联系人" - -#: netbox/templates/tenancy/contact.html:39 -#: netbox/tenancy/forms/bulk_edit.py:94 -msgid "Title" -msgstr "标题" - -#: netbox/templates/tenancy/contact.html:43 -#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 -msgid "Phone" -msgstr "手机号" - -#: netbox/templates/tenancy/contactgroup.html:18 -#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 -#: netbox/tenancy/forms/model_forms.py:73 -msgid "Contact Group" -msgstr "联系人组" - -#: netbox/templates/tenancy/contactgroup.html:51 -msgid "Add Contact Group" -msgstr "增加联系人组" - -#: netbox/templates/tenancy/contactrole.html:15 -#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 -#: netbox/tenancy/forms/model_forms.py:83 -msgid "Contact Role" -msgstr "联系人角色" - #: netbox/templates/tenancy/object_contacts.html:8 msgid "Add a contact" msgstr "增加联系人" -#: netbox/templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:14 msgid "Add Tenant" msgstr "增加租户" -#: netbox/templates/tenancy/tenantgroup.html:26 -#: netbox/tenancy/forms/filtersets.py:40 -#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 -#: netbox/tenancy/tables/columns.py:47 -msgid "Tenant Group" -msgstr "租户组" - -#: netbox/templates/tenancy/tenantgroup.html:60 -msgid "Add Tenant Group" -msgstr "增加租户组" - #: netbox/templates/ui/attrs/address.html:6 #: netbox/templates/ui/attrs/gps_coordinates.html:6 msgid "Map" @@ -15561,16 +15170,28 @@ msgstr "IPSec Policy" msgid "PFS Group" msgstr "PFS Group" +#: netbox/templates/vpn/tunnel.html:7 +msgid "Add Termination" +msgstr "增加接入点" + #: netbox/templates/vpn/tunnelgroup.html:7 msgid "Add Tunnel" msgstr "增加 Tunnel" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:28 +msgid "Channel Frequency" +msgstr "通道频率" + #: netbox/templates/wireless/panels/wirelesslink_interface.html:31 #: netbox/templates/wireless/panels/wirelesslink_interface.html:41 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "MHz" +#: netbox/templates/wireless/panels/wirelesslink_interface.html:38 +msgid "Channel Width" +msgstr "信道频率" + #: netbox/templates/wireless/wirelesslangroup.html:14 msgid "Add Wireless LAN" msgstr "增加无线局域网" @@ -15605,6 +15226,20 @@ msgstr "联系人角色 (ID)" msgid "Contact role (slug)" msgstr "联系人角色(缩写)" +#: netbox/tenancy/filtersets.py:168 netbox/tenancy/forms/bulk_edit.py:131 +#: netbox/tenancy/forms/filtersets.py:100 +#: netbox/tenancy/forms/filtersets.py:131 netbox/tenancy/forms/forms.py:58 +#: netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 +#: netbox/tenancy/tables/contacts.py:92 +msgid "Contact" +msgstr "联系人" + +#: netbox/tenancy/filtersets.py:173 netbox/tenancy/forms/forms.py:63 +#: netbox/tenancy/forms/model_forms.py:83 +msgid "Contact Role" +msgstr "联系人角色" + #: netbox/tenancy/filtersets.py:179 msgid "Contact group" msgstr "联系人组" @@ -15637,6 +15272,15 @@ msgstr "添加群组" msgid "Remove groups" msgstr "移除群组" +#: netbox/tenancy/forms/bulk_edit.py:94 +msgid "Title" +msgstr "标题" + +#: netbox/tenancy/forms/bulk_edit.py:99 netbox/tenancy/tables/contacts.py:61 +#: netbox/tenancy/ui/panels.py:15 +msgid "Phone" +msgstr "手机号" + #: netbox/tenancy/forms/bulk_import.py:88 msgid "" "Group names separated by commas, encased with double quotes (e.g. \"Group " @@ -15647,6 +15291,17 @@ msgstr "组名用逗号分隔,用双引号括起来(例如 “组 1,组 2 msgid "Assigned contact" msgstr "分配联系人" +#: netbox/tenancy/forms/filtersets.py:40 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:37 +#: netbox/tenancy/tables/columns.py:47 +msgid "Tenant Group" +msgstr "租户组" + +#: netbox/tenancy/forms/filtersets.py:76 netbox/tenancy/forms/forms.py:68 +#: netbox/tenancy/forms/model_forms.py:73 +msgid "Contact Group" +msgstr "联系人组" + #: netbox/tenancy/models/contacts.py:34 msgid "contact group" msgstr "联系人组" @@ -15748,6 +15403,14 @@ msgstr "联系人链接" msgid "Contact Description" msgstr "联系人描述" +#: netbox/tenancy/views.py:64 +msgid "Add Tenant Group" +msgstr "增加租户组" + +#: netbox/tenancy/views.py:242 +msgid "Add Contact Group" +msgstr "增加联系人组" + #: netbox/users/choices.py:15 msgid "v1" msgstr "v1" @@ -16949,10 +16612,6 @@ msgstr "已添加 {count} 要集群的设备 {cluster}" msgid "Assigned VLANs" msgstr "已分配的 VLAN" -#: netbox/virtualization/views.py:603 -msgid "Child Interfaces" -msgstr "子接口" - #: netbox/vpn/choices.py:35 msgid "IPsec - Transport" msgstr "IPsec-传输模式" diff --git a/pyproject.toml b/pyproject.toml index 5af327110..9574c409a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ [project] name = "netbox" -version = "4.5.5" +version = "4.5.6" requires-python = ">=3.12" description = "The premier source of truth powering network automation." readme = "README.md" diff --git a/requirements.txt b/requirements.txt index 830e15b53..89c0590f2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,26 +19,26 @@ djangorestframework==3.16.1 drf-spectacular==0.29.0 drf-spectacular-sidecar==2026.3.1 feedparser==6.0.12 -gunicorn==25.1.0 +gunicorn==25.3.0 Jinja2==3.1.6 jsonschema==4.26.0 Markdown==3.10.2 mkdocs==1.6.1 -mkdocs-material==9.7.5 +mkdocs-material==9.7.6 mkdocstrings==1.0.3 mkdocstrings-python==2.0.3 netaddr==1.3.0 -nh3==0.3.3 +nh3==0.3.4 Pillow==12.1.1 psycopg[c,pool]==3.3.3 PyYAML==6.0.3 -requests==2.32.5 +requests==2.33.1 rq==2.7.0 social-auth-app-django==5.7.0 social-auth-core==4.8.5 sorl-thumbnail==13.0.0 -strawberry-graphql==0.311.3 -strawberry-graphql-django==0.82.0 +strawberry-graphql==0.312.2 +strawberry-graphql-django==0.82.1 svgwrite==1.4.3 tablib==3.9.0 tzdata==2025.3 From b8b12f3f901a56db743c2e8735d1010d5ef5be88 Mon Sep 17 00:00:00 2001 From: bctiemann Date: Tue, 31 Mar 2026 14:28:16 -0400 Subject: [PATCH 34/41] #20923 - Convert extras to new declarative UI layout (#21765) --- netbox/extras/ui/panels.py | 441 +++++++++++++++++- netbox/extras/views.py | 174 ++++++- netbox/netbox/ui/panels.py | 20 + netbox/templates/extras/configcontext.html | 61 --- .../extras/configcontextprofile.html | 38 -- netbox/templates/extras/configtemplate.html | 99 ---- .../configtemplate/attrs/data_file.html | 9 + netbox/templates/extras/customfield.html | 162 ------- .../extras/customfield/attrs/choice_set.html | 1 + .../attrs/related_object_filter.html | 1 + .../customfield/attrs/search_weight.html | 1 + .../extras/customfield/attrs/type.html | 1 + .../extras/customfieldchoiceset.html | 71 --- netbox/templates/extras/customlink.html | 70 --- netbox/templates/extras/eventrule.html | 104 ----- .../extras/eventrule/attrs/action_data.html | 1 + netbox/templates/extras/exporttemplate.html | 78 ---- netbox/templates/extras/imageattachment.html | 66 --- netbox/templates/extras/journalentry.html | 35 -- .../templates/extras/notificationgroup.html | 56 --- .../panels/configcontext_assignment.html | 21 + .../extras/panels/configcontext_data.html | 5 + .../panels/configcontextprofile_schema.html | 6 + .../panels/customfield_related_objects.html | 21 + .../panels/customfieldchoiceset_choices.html | 22 + .../extras/panels/eventrule_event_types.html | 23 + .../extras/panels/imageattachment_file.html | 24 + .../extras/panels/imageattachment_image.html | 9 + .../panels/notificationgroup_groups.html | 12 + .../panels/notificationgroup_users.html | 12 + .../templates/extras/panels/object_types.html | 11 + .../panels/savedfilter_object_types.html | 16 + .../extras/panels/tableconfig_columns.html | 15 + .../extras/panels/tableconfig_ordering.html | 22 + .../extras/panels/tag_item_types.html | 21 + .../extras/panels/tag_object_types.html | 16 + netbox/templates/extras/savedfilter.html | 68 --- netbox/templates/extras/tableconfig.html | 87 ---- netbox/templates/extras/tag.html | 93 ---- .../extras/tag/attrs/tagged_item_count.html | 1 + netbox/templates/extras/webhook.html | 88 ---- netbox/templates/ui/panels/text_code.html | 15 + 42 files changed, 919 insertions(+), 1178 deletions(-) create mode 100644 netbox/templates/extras/configtemplate/attrs/data_file.html create mode 100644 netbox/templates/extras/customfield/attrs/choice_set.html create mode 100644 netbox/templates/extras/customfield/attrs/related_object_filter.html create mode 100644 netbox/templates/extras/customfield/attrs/search_weight.html create mode 100644 netbox/templates/extras/customfield/attrs/type.html create mode 100644 netbox/templates/extras/eventrule/attrs/action_data.html create mode 100644 netbox/templates/extras/panels/configcontext_assignment.html create mode 100644 netbox/templates/extras/panels/configcontext_data.html create mode 100644 netbox/templates/extras/panels/configcontextprofile_schema.html create mode 100644 netbox/templates/extras/panels/customfield_related_objects.html create mode 100644 netbox/templates/extras/panels/customfieldchoiceset_choices.html create mode 100644 netbox/templates/extras/panels/eventrule_event_types.html create mode 100644 netbox/templates/extras/panels/imageattachment_file.html create mode 100644 netbox/templates/extras/panels/imageattachment_image.html create mode 100644 netbox/templates/extras/panels/notificationgroup_groups.html create mode 100644 netbox/templates/extras/panels/notificationgroup_users.html create mode 100644 netbox/templates/extras/panels/object_types.html create mode 100644 netbox/templates/extras/panels/savedfilter_object_types.html create mode 100644 netbox/templates/extras/panels/tableconfig_columns.html create mode 100644 netbox/templates/extras/panels/tableconfig_ordering.html create mode 100644 netbox/templates/extras/panels/tag_item_types.html create mode 100644 netbox/templates/extras/panels/tag_object_types.html create mode 100644 netbox/templates/extras/tag/attrs/tagged_item_count.html create mode 100644 netbox/templates/ui/panels/text_code.html diff --git a/netbox/extras/ui/panels.py b/netbox/extras/ui/panels.py index 4e8532a64..d347089e0 100644 --- a/netbox/extras/ui/panels.py +++ b/netbox/extras/ui/panels.py @@ -2,16 +2,55 @@ from django.contrib.contenttypes.models import ContentType from django.template.loader import render_to_string from django.utils.translation import gettext_lazy as _ -from netbox.ui import actions, panels +from netbox.ui import actions, attrs, panels from utilities.data import resolve_attr_path __all__ = ( + 'ConfigContextAssignmentPanel', + 'ConfigContextPanel', + 'ConfigContextProfilePanel', + 'ConfigTemplatePanel', + 'CustomFieldBehaviorPanel', + 'CustomFieldChoiceSetChoicesPanel', + 'CustomFieldChoiceSetPanel', + 'CustomFieldObjectTypesPanel', + 'CustomFieldPanel', + 'CustomFieldRelatedObjectsPanel', + 'CustomFieldValidationPanel', 'CustomFieldsPanel', + 'CustomLinkPanel', + 'EventRuleActionPanel', + 'EventRuleEventTypesPanel', + 'EventRulePanel', + 'ExportTemplatePanel', + 'ImageAttachmentFilePanel', + 'ImageAttachmentImagePanel', + 'ImageAttachmentPanel', 'ImageAttachmentsPanel', + 'JournalEntryPanel', + 'NotificationGroupGroupsPanel', + 'NotificationGroupPanel', + 'NotificationGroupUsersPanel', + 'ObjectTypesPanel', + 'SavedFilterObjectTypesPanel', + 'SavedFilterPanel', + 'TableConfigColumnsPanel', + 'TableConfigOrderingPanel', + 'TableConfigPanel', + 'TagItemTypesPanel', + 'TagObjectTypesPanel', + 'TagPanel', 'TagsPanel', + 'WebhookHTTPPanel', + 'WebhookPanel', + 'WebhookSSLPanel', ) +# +# Generic panels +# + class CustomFieldsPanel(panels.ObjectPanel): """ A panel showing the value of all custom fields defined on an object. @@ -73,3 +112,403 @@ class TagsPanel(panels.ObjectPanel): **super().get_context(context), 'object': resolve_attr_path(context, self.accessor), } + + +class ObjectTypesPanel(panels.ObjectPanel): + """ + A panel listing the object types assigned to the object. + """ + template_name = 'extras/panels/object_types.html' + title = _('Object Types') + + +# +# CustomField panels +# + +class CustomFieldPanel(panels.ObjectAttributesPanel): + title = _('Custom Field') + + name = attrs.TextAttr('name') + type = attrs.TemplatedAttr('type', label=_('Type'), template_name='extras/customfield/attrs/type.html') + label = attrs.TextAttr('label') + group_name = attrs.TextAttr('group_name', label=_('Group name')) + description = attrs.TextAttr('description') + required = attrs.BooleanAttr('required') + unique = attrs.BooleanAttr('unique', label=_('Must be unique')) + is_cloneable = attrs.BooleanAttr('is_cloneable', label=_('Cloneable')) + choice_set = attrs.TemplatedAttr( + 'choice_set', + template_name='extras/customfield/attrs/choice_set.html', + ) + default = attrs.TextAttr('default', label=_('Default value')) + related_object_filter = attrs.TemplatedAttr( + 'related_object_filter', + template_name='extras/customfield/attrs/related_object_filter.html', + ) + + +class CustomFieldBehaviorPanel(panels.ObjectAttributesPanel): + title = _('Behavior') + + search_weight = attrs.TemplatedAttr( + 'search_weight', + template_name='extras/customfield/attrs/search_weight.html', + ) + filter_logic = attrs.ChoiceAttr('filter_logic') + weight = attrs.NumericAttr('weight', label=_('Display weight')) + ui_visible = attrs.ChoiceAttr('ui_visible', label=_('UI visible')) + ui_editable = attrs.ChoiceAttr('ui_editable', label=_('UI editable')) + + +class CustomFieldValidationPanel(panels.ObjectAttributesPanel): + title = _('Validation Rules') + + validation_minimum = attrs.NumericAttr('validation_minimum', label=_('Minimum value')) + validation_maximum = attrs.NumericAttr('validation_maximum', label=_('Maximum value')) + validation_regex = attrs.TextAttr( + 'validation_regex', + label=_('Regular expression'), + style='font-monospace', + ) + + +class CustomFieldObjectTypesPanel(panels.ObjectPanel): + template_name = 'extras/panels/object_types.html' + title = _('Object Types') + + +class CustomFieldRelatedObjectsPanel(panels.ObjectPanel): + template_name = 'extras/panels/customfield_related_objects.html' + title = _('Related Objects') + + def get_context(self, context): + return { + **super().get_context(context), + 'related_models': context.get('related_models'), + } + + +# +# CustomFieldChoiceSet panels +# + +class CustomFieldChoiceSetPanel(panels.ObjectAttributesPanel): + title = _('Custom Field Choice Set') + + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + base_choices = attrs.ChoiceAttr('base_choices') + order_alphabetically = attrs.BooleanAttr('order_alphabetically') + choices_for = attrs.RelatedObjectListAttr('choices_for', linkify=True, label=_('Used by')) + + +class CustomFieldChoiceSetChoicesPanel(panels.ObjectPanel): + template_name = 'extras/panels/customfieldchoiceset_choices.html' + + def get_context(self, context): + obj = context.get('object') + total = len(obj.choices) if obj else 0 + return { + **super().get_context(context), + 'title': f'{_("Choices")} ({total})', + 'choices': context.get('choices'), + } + + +# +# CustomLink panels +# + +class CustomLinkPanel(panels.ObjectAttributesPanel): + title = _('Custom Link') + + name = attrs.TextAttr('name') + enabled = attrs.BooleanAttr('enabled') + group_name = attrs.TextAttr('group_name') + weight = attrs.NumericAttr('weight') + button_class = attrs.ChoiceAttr('button_class') + new_window = attrs.BooleanAttr('new_window') + + +# +# ExportTemplate panels +# + +class ExportTemplatePanel(panels.ObjectAttributesPanel): + title = _('Export Template') + + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + mime_type = attrs.TextAttr('mime_type', label=_('MIME type')) + file_name = attrs.TextAttr('file_name') + file_extension = attrs.TextAttr('file_extension') + as_attachment = attrs.BooleanAttr('as_attachment', label=_('Attachment')) + + +# +# SavedFilter panels +# + +class SavedFilterPanel(panels.ObjectAttributesPanel): + title = _('Saved Filter') + + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + user = attrs.TextAttr('user') + enabled = attrs.BooleanAttr('enabled') + shared = attrs.BooleanAttr('shared') + weight = attrs.NumericAttr('weight') + + +class SavedFilterObjectTypesPanel(panels.ObjectPanel): + template_name = 'extras/panels/savedfilter_object_types.html' + title = _('Assigned Models') + + +# +# TableConfig panels +# + +class TableConfigPanel(panels.ObjectAttributesPanel): + title = _('Table Config') + + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + object_type = attrs.TextAttr('object_type') + table = attrs.TextAttr('table') + user = attrs.TextAttr('user') + enabled = attrs.BooleanAttr('enabled') + shared = attrs.BooleanAttr('shared') + weight = attrs.NumericAttr('weight') + + +class TableConfigColumnsPanel(panels.ObjectPanel): + template_name = 'extras/panels/tableconfig_columns.html' + title = _('Columns Displayed') + + def get_context(self, context): + return { + **super().get_context(context), + 'columns': context.get('columns'), + } + + +class TableConfigOrderingPanel(panels.ObjectPanel): + template_name = 'extras/panels/tableconfig_ordering.html' + title = _('Ordering') + + def get_context(self, context): + return { + **super().get_context(context), + 'columns': context.get('columns'), + } + + +# +# NotificationGroup panels +# + +class NotificationGroupPanel(panels.ObjectAttributesPanel): + title = _('Notification Group') + + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + + +class NotificationGroupGroupsPanel(panels.ObjectPanel): + template_name = 'extras/panels/notificationgroup_groups.html' + title = _('Groups') + + +class NotificationGroupUsersPanel(panels.ObjectPanel): + template_name = 'extras/panels/notificationgroup_users.html' + title = _('Users') + + +# +# Webhook panels +# + +class WebhookPanel(panels.ObjectAttributesPanel): + title = _('Webhook') + + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + + +class WebhookHTTPPanel(panels.ObjectAttributesPanel): + title = _('HTTP Request') + + http_method = attrs.ChoiceAttr('http_method', label=_('HTTP method')) + payload_url = attrs.TextAttr('payload_url', label=_('Payload URL'), style='font-monospace') + http_content_type = attrs.TextAttr('http_content_type', label=_('HTTP content type')) + secret = attrs.TextAttr('secret') + + +class WebhookSSLPanel(panels.ObjectAttributesPanel): + title = _('SSL') + + ssl_verification = attrs.BooleanAttr('ssl_verification', label=_('SSL verification')) + ca_file_path = attrs.TextAttr('ca_file_path', label=_('CA file path')) + + +# +# EventRule panels +# + +class EventRulePanel(panels.ObjectAttributesPanel): + title = _('Event Rule') + + name = attrs.TextAttr('name') + enabled = attrs.BooleanAttr('enabled') + description = attrs.TextAttr('description') + + +class EventRuleEventTypesPanel(panels.ObjectPanel): + template_name = 'extras/panels/eventrule_event_types.html' + title = _('Event Types') + + def get_context(self, context): + return { + **super().get_context(context), + 'registry': context.get('registry'), + } + + +class EventRuleActionPanel(panels.ObjectAttributesPanel): + title = _('Action') + + action_type = attrs.ChoiceAttr('action_type', label=_('Type')) + action_object = attrs.RelatedObjectAttr('action_object', linkify=True, label=_('Object')) + action_data = attrs.TemplatedAttr( + 'action_data', + label=_('Data'), + template_name='extras/eventrule/attrs/action_data.html', + ) + + +# +# Tag panels +# + +class TagPanel(panels.ObjectAttributesPanel): + title = _('Tag') + + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + color = attrs.ColorAttr('color') + weight = attrs.NumericAttr('weight') + tagged_items = attrs.TemplatedAttr( + 'extras_taggeditem_items', + template_name='extras/tag/attrs/tagged_item_count.html', + ) + + +class TagObjectTypesPanel(panels.ObjectPanel): + template_name = 'extras/panels/tag_object_types.html' + title = _('Allowed Object Types') + + +class TagItemTypesPanel(panels.ObjectPanel): + template_name = 'extras/panels/tag_item_types.html' + title = _('Tagged Item Types') + + def get_context(self, context): + return { + **super().get_context(context), + 'object_types': context.get('object_types'), + } + + +# +# ConfigContextProfile panels +# + +class ConfigContextProfilePanel(panels.ObjectAttributesPanel): + title = _('Config Context Profile') + + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + + +# +# ConfigContext panels +# + +class ConfigContextPanel(panels.ObjectAttributesPanel): + title = _('Config Context') + + name = attrs.TextAttr('name') + weight = attrs.NumericAttr('weight') + profile = attrs.RelatedObjectAttr('profile', linkify=True) + description = attrs.TextAttr('description') + is_active = attrs.BooleanAttr('is_active', label=_('Active')) + + +class ConfigContextAssignmentPanel(panels.ObjectPanel): + template_name = 'extras/panels/configcontext_assignment.html' + title = _('Assignment') + + def get_context(self, context): + return { + **super().get_context(context), + 'assigned_objects': context.get('assigned_objects'), + } + + +# +# ConfigTemplate panels +# + +class ConfigTemplatePanel(panels.ObjectAttributesPanel): + title = _('Config Template') + + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + mime_type = attrs.TextAttr('mime_type', label=_('MIME type')) + file_name = attrs.TextAttr('file_name') + file_extension = attrs.TextAttr('file_extension') + as_attachment = attrs.BooleanAttr('as_attachment', label=_('Attachment')) + data_source = attrs.RelatedObjectAttr('data_source', linkify=True) + data_file = attrs.TemplatedAttr( + 'data_path', + template_name='extras/configtemplate/attrs/data_file.html', + ) + data_synced = attrs.DateTimeAttr('data_synced') + auto_sync_enabled = attrs.BooleanAttr('auto_sync_enabled') + + +# +# ImageAttachment panels +# + +class ImageAttachmentPanel(panels.ObjectAttributesPanel): + title = _('Image Attachment') + + parent = attrs.RelatedObjectAttr('parent', linkify=True, label=_('Parent object')) + name = attrs.TextAttr('name') + description = attrs.TextAttr('description') + + +class ImageAttachmentFilePanel(panels.ObjectPanel): + template_name = 'extras/panels/imageattachment_file.html' + title = _('File') + + +class ImageAttachmentImagePanel(panels.ObjectPanel): + template_name = 'extras/panels/imageattachment_image.html' + title = _('Image') + + +# +# JournalEntry panels +# + +class JournalEntryPanel(panels.ObjectAttributesPanel): + title = _('Journal Entry') + + assigned_object = attrs.RelatedObjectAttr('assigned_object', linkify=True, label=_('Object')) + created = attrs.DateTimeAttr('created', spec='minutes') + created_by = attrs.TextAttr('created_by') + kind = attrs.ChoiceAttr('kind') diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 05a3dbb13..99e8d976a 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -10,7 +10,7 @@ from django.shortcuts import get_object_or_404, redirect, render from django.urls import reverse from django.utils import timezone from django.utils.module_loading import import_string -from django.utils.translation import gettext as _ +from django.utils.translation import gettext_lazy as _ from django.views.generic import View from jinja2.exceptions import TemplateError @@ -23,6 +23,14 @@ from extras.dashboard.forms import DashboardWidgetAddForm, DashboardWidgetForm from extras.dashboard.utils import get_widget_class from extras.utils import SharedObjectViewMixin from netbox.object_actions import * +from netbox.ui import layout +from netbox.ui.panels import ( + CommentsPanel, + ContextTablePanel, + JSONPanel, + TemplatePanel, + TextCodePanel, +) from netbox.views import generic from netbox.views.generic.mixins import TableMixin from utilities.forms import ConfirmationForm, get_field_value @@ -40,6 +48,7 @@ from . import filtersets, forms, tables from .constants import LOG_LEVEL_RANK from .models import * from .tables import ReportResultsTable, ScriptJobTable, ScriptResultsTable +from .ui import panels # # Custom fields @@ -57,6 +66,18 @@ class CustomFieldListView(generic.ObjectListView): @register_model_view(CustomField) class CustomFieldView(generic.ObjectView): queryset = CustomField.objects.select_related('choice_set') + layout = layout.SimpleLayout( + left_panels=[ + panels.CustomFieldPanel(), + panels.CustomFieldBehaviorPanel(), + CommentsPanel(), + ], + right_panels=[ + panels.CustomFieldObjectTypesPanel(), + panels.CustomFieldValidationPanel(), + panels.CustomFieldRelatedObjectsPanel(), + ], + ) def get_extra_context(self, request, instance): related_models = () @@ -128,6 +149,14 @@ class CustomFieldChoiceSetListView(generic.ObjectListView): @register_model_view(CustomFieldChoiceSet) class CustomFieldChoiceSetView(generic.ObjectView): queryset = CustomFieldChoiceSet.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.CustomFieldChoiceSetPanel(), + ], + right_panels=[ + panels.CustomFieldChoiceSetChoicesPanel(), + ], + ) def get_extra_context(self, request, instance): @@ -203,6 +232,16 @@ class CustomLinkListView(generic.ObjectListView): @register_model_view(CustomLink) class CustomLinkView(generic.ObjectView): queryset = CustomLink.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.CustomLinkPanel(), + panels.ObjectTypesPanel(title=_('Assigned Models')), + ], + right_panels=[ + TextCodePanel('link_text', title=_('Link Text')), + TextCodePanel('link_url', title=_('Link URL')), + ], + ) @register_model_view(CustomLink, 'add', detail=False) @@ -260,6 +299,19 @@ class ExportTemplateListView(generic.ObjectListView): @register_model_view(ExportTemplate) class ExportTemplateView(generic.ObjectView): queryset = ExportTemplate.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ExportTemplatePanel(), + TemplatePanel('core/inc/datafile_panel.html'), + ], + right_panels=[ + panels.ObjectTypesPanel(title=_('Assigned Models')), + JSONPanel('environment_params', title=_('Environment Parameters')), + ], + bottom_panels=[ + TextCodePanel('template_code', title=_('Template'), show_sync_warning=True), + ], + ) @register_model_view(ExportTemplate, 'add', detail=False) @@ -321,6 +373,15 @@ class SavedFilterListView(SharedObjectViewMixin, generic.ObjectListView): @register_model_view(SavedFilter) class SavedFilterView(SharedObjectViewMixin, generic.ObjectView): queryset = SavedFilter.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.SavedFilterPanel(), + panels.SavedFilterObjectTypesPanel(), + ], + right_panels=[ + JSONPanel('parameters', title=_('Parameters')), + ], + ) @register_model_view(SavedFilter, 'add', detail=False) @@ -383,6 +444,15 @@ class TableConfigListView(SharedObjectViewMixin, generic.ObjectListView): @register_model_view(TableConfig) class TableConfigView(SharedObjectViewMixin, generic.ObjectView): queryset = TableConfig.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.TableConfigPanel(), + ], + right_panels=[ + panels.TableConfigColumnsPanel(), + panels.TableConfigOrderingPanel(), + ], + ) def get_extra_context(self, request, instance): table = instance.table_class([]) @@ -476,6 +546,15 @@ class NotificationGroupListView(generic.ObjectListView): @register_model_view(NotificationGroup) class NotificationGroupView(generic.ObjectView): queryset = NotificationGroup.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.NotificationGroupPanel(), + ], + right_panels=[ + panels.NotificationGroupGroupsPanel(), + panels.NotificationGroupUsersPanel(), + ], + ) @register_model_view(NotificationGroup, 'add', detail=False) @@ -660,6 +739,19 @@ class WebhookListView(generic.ObjectListView): @register_model_view(Webhook) class WebhookView(generic.ObjectView): queryset = Webhook.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.WebhookPanel(), + panels.WebhookHTTPPanel(), + panels.WebhookSSLPanel(), + ], + right_panels=[ + TextCodePanel('additional_headers', title=_('Additional Headers')), + TextCodePanel('body_template', title=_('Body Template')), + panels.CustomFieldsPanel(), + panels.TagsPanel(), + ], + ) @register_model_view(Webhook, 'add', detail=False) @@ -716,6 +808,19 @@ class EventRuleListView(generic.ObjectListView): @register_model_view(EventRule) class EventRuleView(generic.ObjectView): queryset = EventRule.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.EventRulePanel(), + panels.ObjectTypesPanel(), + panels.EventRuleEventTypesPanel(), + ], + right_panels=[ + JSONPanel('conditions', title=_('Conditions')), + panels.EventRuleActionPanel(), + panels.CustomFieldsPanel(), + panels.TagsPanel(), + ], + ) @register_model_view(EventRule, 'add', detail=False) @@ -774,6 +879,18 @@ class TagListView(generic.ObjectListView): @register_model_view(Tag) class TagView(generic.ObjectView): queryset = Tag.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.TagPanel(), + ], + right_panels=[ + panels.TagObjectTypesPanel(), + panels.TagItemTypesPanel(), + ], + bottom_panels=[ + ContextTablePanel('taggeditem_table', title=_('Tagged Objects')), + ], + ) def get_extra_context(self, request, instance): tagged_items = TaggedItem.objects.filter(tag=instance) @@ -853,6 +970,18 @@ class ConfigContextProfileListView(generic.ObjectListView): @register_model_view(ConfigContextProfile) class ConfigContextProfileView(generic.ObjectView): queryset = ConfigContextProfile.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ConfigContextProfilePanel(), + TemplatePanel('core/inc/datafile_panel.html'), + panels.CustomFieldsPanel(), + panels.TagsPanel(), + CommentsPanel(), + ], + right_panels=[ + JSONPanel('schema', title=_('JSON Schema')), + ], + ) @register_model_view(ConfigContextProfile, 'add', detail=False) @@ -915,6 +1044,16 @@ class ConfigContextListView(generic.ObjectListView): @register_model_view(ConfigContext) class ConfigContextView(generic.ObjectView): queryset = ConfigContext.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ConfigContextPanel(), + TemplatePanel('core/inc/datafile_panel.html'), + panels.ConfigContextAssignmentPanel(), + ], + right_panels=[ + TemplatePanel('extras/panels/configcontext_data.html'), + ], + ) def get_extra_context(self, request, instance): # Gather assigned objects for parsing in the template @@ -1034,6 +1173,18 @@ class ConfigTemplateListView(generic.ObjectListView): @register_model_view(ConfigTemplate) class ConfigTemplateView(generic.ObjectView): queryset = ConfigTemplate.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ConfigTemplatePanel(), + panels.TagsPanel(), + ], + right_panels=[ + JSONPanel('environment_params', title=_('Environment Parameters')), + ], + bottom_panels=[ + TextCodePanel('template_code', title=_('Template'), show_sync_warning=True), + ], + ) @register_model_view(ConfigTemplate, 'add', detail=False) @@ -1151,6 +1302,17 @@ class ImageAttachmentListView(generic.ObjectListView): @register_model_view(ImageAttachment) class ImageAttachmentView(generic.ObjectView): queryset = ImageAttachment.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ImageAttachmentPanel(), + ], + right_panels=[ + panels.ImageAttachmentFilePanel(), + ], + bottom_panels=[ + panels.ImageAttachmentImagePanel(), + ], + ) @register_model_view(ImageAttachment, 'add', detail=False) @@ -1215,6 +1377,16 @@ class JournalEntryListView(generic.ObjectListView): @register_model_view(JournalEntry) class JournalEntryView(generic.ObjectView): queryset = JournalEntry.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.JournalEntryPanel(), + panels.CustomFieldsPanel(), + panels.TagsPanel(), + ], + right_panels=[ + CommentsPanel(), + ], + ) @register_model_view(JournalEntry, 'add', detail=False) diff --git a/netbox/netbox/ui/panels.py b/netbox/netbox/ui/panels.py index b1ab1e411..f58e98449 100644 --- a/netbox/netbox/ui/panels.py +++ b/netbox/netbox/ui/panels.py @@ -23,6 +23,7 @@ __all__ = ( 'PluginContentPanel', 'RelatedObjectsPanel', 'TemplatePanel', + 'TextCodePanel', ) @@ -329,6 +330,25 @@ class TemplatePanel(Panel): return render_to_string(self.template_name, context.flatten()) +class TextCodePanel(ObjectPanel): + """ + A panel displaying a text field as a pre-formatted code block. + """ + template_name = 'ui/panels/text_code.html' + + def __init__(self, field_name, show_sync_warning=False, **kwargs): + super().__init__(**kwargs) + self.field_name = field_name + self.show_sync_warning = show_sync_warning + + def get_context(self, context): + return { + **super().get_context(context), + 'show_sync_warning': self.show_sync_warning, + 'value': getattr(context.get('object'), self.field_name, None), + } + + class PluginContentPanel(Panel): """ A panel which displays embedded plugin content. diff --git a/netbox/templates/extras/configcontext.html b/netbox/templates/extras/configcontext.html index 7afe73553..f15e1d050 100644 --- a/netbox/templates/extras/configcontext.html +++ b/netbox/templates/extras/configcontext.html @@ -1,62 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load static %} -{% load i18n %} - -{% block content %} -

    -
    -
    -

    {% trans "Config Context" %}

    - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Weight" %}{{ object.weight }}
    {% trans "Profile" %}{{ object.profile|linkify|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Active" %}{% checkmark object.is_active %}
    -
    - {% include 'core/inc/datafile_panel.html' %} -
    -

    {% trans "Assignment" %}

    - - {% for title, objects in assigned_objects %} - - - - - {% endfor %} -
    {{ title }} -
      - {% for object in objects %} -
    • {{ object|linkify }}
    • - {% empty %} -
    • {% trans "None" %}
    • - {% endfor %} -
    -
    -
    -
    -
    - {% include 'inc/sync_warning.html' %} -
    - {% include 'extras/inc/configcontext_data.html' with title="Data" data=object.data format=format copyid="data" %} -
    -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/configcontextprofile.html b/netbox/templates/extras/configcontextprofile.html index 658724196..f15e1d050 100644 --- a/netbox/templates/extras/configcontextprofile.html +++ b/netbox/templates/extras/configcontextprofile.html @@ -1,39 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load static %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Config Context Profile" %}

    - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% include 'core/inc/datafile_panel.html' %} - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% include 'inc/panels/comments.html' %} -
    -
    -
    -

    - {% trans "JSON Schema" %} -
    - {% copy_content "schema" %} -
    -

    -
    {{ object.schema|json }}
    -
    -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/configtemplate.html b/netbox/templates/extras/configtemplate.html index a2e31baed..f15e1d050 100644 --- a/netbox/templates/extras/configtemplate.html +++ b/netbox/templates/extras/configtemplate.html @@ -1,100 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Config Template" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "MIME Type" %}{{ object.mime_type|placeholder }}
    {% trans "File Name" %}{{ object.file_name|placeholder }}
    {% trans "File Extension" %}{{ object.file_extension|placeholder }}
    {% trans "Attachment" %}{% checkmark object.as_attachment %}
    {% trans "Data Source" %} - {% if object.data_source %} - {{ object.data_source }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "Data File" %} - {% if object.data_file %} - {{ object.data_file }} - {% elif object.data_path %} -
    - -
    - {{ object.data_path }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
    {% trans "Data Synced" %}{{ object.data_synced|placeholder }}
    {% trans "Auto Sync Enabled" %}{% checkmark object.auto_sync_enabled %}
    -
    - {% include 'inc/panels/tags.html' %} - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "Environment Parameters" %}

    -
    - {% if object.environment_params %} -
    {{ object.environment_params|json }}
    - {% else %} - {% trans "None" %} - {% endif %} -
    -
    - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    {% trans "Template" %}

    -
    - {% include 'inc/sync_warning.html' %} -
    {{ object.template_code }}
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/configtemplate/attrs/data_file.html b/netbox/templates/extras/configtemplate/attrs/data_file.html new file mode 100644 index 000000000..7d1a79937 --- /dev/null +++ b/netbox/templates/extras/configtemplate/attrs/data_file.html @@ -0,0 +1,9 @@ +{% load i18n %} +{% if object.data_file %} + {{ object.data_file }} +{% else %} +
    + +
    + {{ value }} +{% endif %} diff --git a/netbox/templates/extras/customfield.html b/netbox/templates/extras/customfield.html index c2ddff355..f15e1d050 100644 --- a/netbox/templates/extras/customfield.html +++ b/netbox/templates/extras/customfield.html @@ -1,163 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Custom Field" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {% if object.choice_set %} - - - - - {% endif %} - - - - - - - {% if object.related_object_filter %} - - {% else %} - - {% endif %} - -
    {% trans "Name" %}{{ object.name }}
    Type - {{ object.get_type_display }} - {% if object.related_object_type %} - ({{ object.related_object_type.model|bettertitle }}) - {% endif %} -
    {% trans "Label" %}{{ object.label|placeholder }}
    {% trans "Group Name" %}{{ object.group_name|placeholder }}
    {% trans "Description" %}{{ object.description|markdown|placeholder }}
    {% trans "Required" %}{% checkmark object.required %}
    {% trans "Must be Unique" %}{% checkmark object.unique %}
    {% trans "Cloneable" %}{% checkmark object.is_cloneable %}
    {% trans "Choice Set" %}{{ object.choice_set|linkify }} ({{ object.choice_set.choices|length }} choices)
    {% trans "Default Value" %}{{ object.default }}
    {% trans "Related object filter" %}
    {{ object.related_object_filter|json }}
    {{ ''|placeholder }}
    -
    -
    -

    {% trans "Behavior" %}

    - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Search Weight" %} - {% if object.search_weight %} - {{ object.search_weight }} - {% else %} - {% trans "Disabled" %} - {% endif %} -
    {% trans "Filter Logic" %}{{ object.get_filter_logic_display }}
    {% trans "Display Weight" %}{{ object.weight }}
    {% trans "UI Visible" %}{{ object.get_ui_visible_display }}
    {% trans "UI Editable" %}{{ object.get_ui_editable_display }}
    -
    - {% include 'inc/panels/comments.html' %} - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "Object Types" %}

    - - {% for ct in object.object_types.all %} - - - - {% endfor %} -
    {{ ct }}
    -
    -
    -

    {% trans "Validation Rules" %}

    - - - - - - - - - - - - - -
    {% trans "Minimum Value" %}{{ object.validation_minimum|placeholder }}
    {% trans "Maximum Value" %}{{ object.validation_maximum|placeholder }}
    {% trans "Regular Expression" %} - {% if object.validation_regex %} - {{ object.validation_regex }} - {% else %} - {{ ''|placeholder }} - {% endif %} -
    -
    - - - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/customfield/attrs/choice_set.html b/netbox/templates/extras/customfield/attrs/choice_set.html new file mode 100644 index 000000000..9cc2d2ff7 --- /dev/null +++ b/netbox/templates/extras/customfield/attrs/choice_set.html @@ -0,0 +1 @@ +{% load helpers i18n %}{{ value|linkify }} ({{ value.choices|length }} {% trans "choices" %}) diff --git a/netbox/templates/extras/customfield/attrs/related_object_filter.html b/netbox/templates/extras/customfield/attrs/related_object_filter.html new file mode 100644 index 000000000..074b80489 --- /dev/null +++ b/netbox/templates/extras/customfield/attrs/related_object_filter.html @@ -0,0 +1 @@ +{% load helpers %}
    {{ value|json }}
    diff --git a/netbox/templates/extras/customfield/attrs/search_weight.html b/netbox/templates/extras/customfield/attrs/search_weight.html new file mode 100644 index 000000000..7061e5310 --- /dev/null +++ b/netbox/templates/extras/customfield/attrs/search_weight.html @@ -0,0 +1 @@ +{% load i18n %}{% if value %}{{ value }}{% else %}{% trans "Disabled" %}{% endif %} diff --git a/netbox/templates/extras/customfield/attrs/type.html b/netbox/templates/extras/customfield/attrs/type.html new file mode 100644 index 000000000..b6f9ff73c --- /dev/null +++ b/netbox/templates/extras/customfield/attrs/type.html @@ -0,0 +1 @@ +{% load helpers %}{{ object.get_type_display }}{% if object.related_object_type %} ({{ object.related_object_type.model|bettertitle }}){% endif %} diff --git a/netbox/templates/extras/customfieldchoiceset.html b/netbox/templates/extras/customfieldchoiceset.html index 85f642603..f15e1d050 100644 --- a/netbox/templates/extras/customfieldchoiceset.html +++ b/netbox/templates/extras/customfieldchoiceset.html @@ -1,72 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} - -{% block content %} -
    -
    -
    -

    Custom Field Choice Set

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name{{ object.name }}
    Description{{ object.description|placeholder }}
    Base Choices{{ object.get_base_choices_display|placeholder }}
    Choices{{ object.choices|length }}
    Order Alphabetically{% checkmark object.order_alphabetically %}
    Used by -
      - {% for cf in object.choices_for.all %} -
    • {{ cf|linkify }}
    • - {% endfor %} -
    -
    -
    - {% plugin_left_page object %} -
    -
    -
    -

    Choices ({{ object.choices|length }})

    - - - - - - - - {% for value, label in choices %} - - - - - {% endfor %} -
    ValueLabel
    {{ value }}{{ label }}
    - {% include 'inc/paginator.html' with page=choices %} -
    - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/customlink.html b/netbox/templates/extras/customlink.html index 7e9740402..f15e1d050 100644 --- a/netbox/templates/extras/customlink.html +++ b/netbox/templates/extras/customlink.html @@ -1,71 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Custom Link" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Enabled" %}{% checkmark object.enabled %}
    {% trans "Group Name" %}{{ object.group_name|placeholder }}
    {% trans "Weight" %}{{ object.weight }}
    {% trans "Button Class" %}{{ object.get_button_class_display }}
    {% trans "New Window" %}{% checkmark object.new_window %}
    -
    -
    -

    {% trans "Assigned Models" %}

    - - {% for ct in object.object_types.all %} - - - - {% endfor %} -
    {{ ct }}
    -
    - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "Link Text" %}

    -
    -
    {{ object.link_text }}
    -
    -
    -
    -

    {% trans "Link URL" %}

    -
    -
    {{ object.link_url }}
    -
    -
    - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/eventrule.html b/netbox/templates/extras/eventrule.html index 2b0bebe8f..f15e1d050 100644 --- a/netbox/templates/extras/eventrule.html +++ b/netbox/templates/extras/eventrule.html @@ -1,105 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Event Rule" %}

    - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Enabled" %}{% checkmark object.enabled %}
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    -
    -

    {% trans "Object Types" %}

    - - {% for object_type in object.object_types.all %} - - - - {% endfor %} -
    {{ object_type }}
    -
    -
    -

    {% trans "Event Types" %}

    -
      - {% for name, event in registry.event_types.items %} -
    • -
      -
      - {% if name in object.event_types %} - {% checkmark True %} - {% else %} - {{ ''|placeholder }} - {% endif %} -
      -
      - {{ event }} -
      -
      -
    • - {% endfor %} -
    -
    - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "Conditions" %}

    -
    - {% if object.conditions %} -
    {{ object.conditions|json }}
    - {% else %} -

    {% trans "None" %}

    - {% endif %} -
    -
    -
    -

    {% trans "Action" %}

    - - - - - - - - - - - - - -
    {% trans "Type" %}{{ object.get_action_type_display }}
    {% trans "Object" %} - {{ object.action_object|linkify }} -
    {% trans "Data" %} - {% if object.action_data %} -
    {{ object.action_data|json }}
    - {% else %} - {{ ''|placeholder }} - {% endif %} -
    -
    - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/eventrule/attrs/action_data.html b/netbox/templates/extras/eventrule/attrs/action_data.html new file mode 100644 index 000000000..ee6f5233b --- /dev/null +++ b/netbox/templates/extras/eventrule/attrs/action_data.html @@ -0,0 +1 @@ +{% load helpers %}{% if value %}
    {{ value|json }}
    {% else %}{% endif %} diff --git a/netbox/templates/extras/exporttemplate.html b/netbox/templates/extras/exporttemplate.html index eb8ec9135..f15e1d050 100644 --- a/netbox/templates/extras/exporttemplate.html +++ b/netbox/templates/extras/exporttemplate.html @@ -1,79 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block title %}{{ object.name }}{% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Export Template" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "MIME Type" %}{{ object.mime_type|placeholder }}
    {% trans "File Name" %}{{ object.file_name|placeholder }}
    {% trans "File Extension" %}{{ object.file_extension|placeholder }}
    {% trans "Attachment" %}{% checkmark object.as_attachment %}
    -
    - {% include 'core/inc/datafile_panel.html' %} - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "Assigned Models" %}

    - - {% for object_type in object.object_types.all %} - - - - {% endfor %} -
    {{ object_type }}
    -
    -
    -

    {% trans "Environment Parameters" %}

    -
    - {% if object.environment_params %} -
    {{ object.environment_params|json }}
    - {% else %} - {% trans "None" %} - {% endif %} -
    -
    - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    {% trans "Template" %}

    -
    - {% include 'inc/sync_warning.html' %} -
    {{ object.template_code }}
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/imageattachment.html b/netbox/templates/extras/imageattachment.html index 8aefd095b..f15e1d050 100644 --- a/netbox/templates/extras/imageattachment.html +++ b/netbox/templates/extras/imageattachment.html @@ -1,67 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Image Attachment" %}

    - - - - - - - - - - - - - -
    {% trans "Parent Object" %}{{ object.parent|linkify }}
    {% trans "Name" %}{{ object.name|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "File" %}

    - - - - - - - - - - - - - -
    {% trans "Filename" %} - {{ object.filename }} - -
    {% trans "Dimensions" %}{{ object.image_width }} × {{ object.image_height }}
    {% trans "Size" %} - {{ object.size|filesizeformat }} -
    -
    - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    {% trans "Image" %}

    - -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/journalentry.html b/netbox/templates/extras/journalentry.html index 23aa881ff..358172d03 100644 --- a/netbox/templates/extras/journalentry.html +++ b/netbox/templates/extras/journalentry.html @@ -1,42 +1,7 @@ {% extends 'generic/object.html' %} {% load helpers %} -{% load static %} -{% load i18n %} {% block breadcrumbs %} {{ block.super }} {% endblock %} - -{% block content %} -
    -
    -
    -

    {% trans "Journal Entry" %}

    - - - - - - - - - - - - - - - - - -
    {% trans "Object" %}{{ object.assigned_object|linkify }}
    {% trans "Created" %}{{ object.created|isodatetime:"minutes" }}
    {% trans "Created By" %}{{ object.created_by }}
    {% trans "Kind" %}{% badge object.get_kind_display bg_color=object.get_kind_color %}
    -
    - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} -
    -
    - {% include 'inc/panels/comments.html' %} -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/notificationgroup.html b/netbox/templates/extras/notificationgroup.html index 36ceef308..f15e1d050 100644 --- a/netbox/templates/extras/notificationgroup.html +++ b/netbox/templates/extras/notificationgroup.html @@ -1,57 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Notification Group" %}

    - - - - - - - - - -
    {% trans "Name" %} - {{ object.name }} -
    {% trans "Description" %} - {{ object.description|placeholder }} -
    -
    - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "Groups" %}

    -
    - {% for group in object.groups.all %} - {{ group }} - {% empty %} -
    {% trans "None assigned" %}
    - {% endfor %} -
    -
    -
    -

    {% trans "Users" %}

    -
    - {% for user in object.users.all %} - {{ user }} - {% empty %} -
    {% trans "None assigned" %}
    - {% endfor %} -
    -
    - {% plugin_right_page object %} -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/panels/configcontext_assignment.html b/netbox/templates/extras/panels/configcontext_assignment.html new file mode 100644 index 000000000..fbd7cf4b4 --- /dev/null +++ b/netbox/templates/extras/panels/configcontext_assignment.html @@ -0,0 +1,21 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + + {% for title, objects in assigned_objects %} + + + + + {% endfor %} +
    {{ title }} +
      + {% for obj in objects %} +
    • {{ obj|linkify }}
    • + {% empty %} +
    • {% trans "None" %}
    • + {% endfor %} +
    +
    +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/configcontext_data.html b/netbox/templates/extras/panels/configcontext_data.html new file mode 100644 index 000000000..3a92e96ae --- /dev/null +++ b/netbox/templates/extras/panels/configcontext_data.html @@ -0,0 +1,5 @@ +{% load helpers i18n %} +{% include 'inc/sync_warning.html' %} +
    + {% include 'extras/inc/configcontext_data.html' with title="Data" data=object.data format=format copyid="data" %} +
    diff --git a/netbox/templates/extras/panels/configcontextprofile_schema.html b/netbox/templates/extras/panels/configcontextprofile_schema.html new file mode 100644 index 000000000..a86aa4344 --- /dev/null +++ b/netbox/templates/extras/panels/configcontextprofile_schema.html @@ -0,0 +1,6 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers %} + +{% block panel_content %} +
    {{ object.schema|json }}
    +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/customfield_related_objects.html b/netbox/templates/extras/panels/customfield_related_objects.html new file mode 100644 index 000000000..9dc8ed662 --- /dev/null +++ b/netbox/templates/extras/panels/customfield_related_objects.html @@ -0,0 +1,21 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/customfieldchoiceset_choices.html b/netbox/templates/extras/panels/customfieldchoiceset_choices.html new file mode 100644 index 000000000..db5be1520 --- /dev/null +++ b/netbox/templates/extras/panels/customfieldchoiceset_choices.html @@ -0,0 +1,22 @@ +{% extends "ui/panels/_base.html" %} +{% load i18n %} + +{% block panel_content %} + + + + + + + + + {% for value, label in choices %} + + + + + {% endfor %} + +
    {% trans "Value" %}{% trans "Label" %}
    {{ value }}{{ label }}
    + {% include 'inc/paginator.html' with page=choices %} +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/eventrule_event_types.html b/netbox/templates/extras/panels/eventrule_event_types.html new file mode 100644 index 000000000..cc3d62806 --- /dev/null +++ b/netbox/templates/extras/panels/eventrule_event_types.html @@ -0,0 +1,23 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers %} + +{% block panel_content %} +
      + {% for name, event in registry.event_types.items %} +
    • +
      +
      + {% if name in object.event_types %} + {% checkmark True %} + {% else %} + {{ ''|placeholder }} + {% endif %} +
      +
      + {{ event }} +
      +
      +
    • + {% endfor %} +
    +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/imageattachment_file.html b/netbox/templates/extras/panels/imageattachment_file.html new file mode 100644 index 000000000..0a50ad11a --- /dev/null +++ b/netbox/templates/extras/panels/imageattachment_file.html @@ -0,0 +1,24 @@ +{% extends "ui/panels/_base.html" %} +{% load i18n %} + +{% block panel_content %} + + + + + + + + + + + + + +
    {% trans "Filename" %} + {{ object.filename }} + +
    {% trans "Dimensions" %}{{ object.image_width }} × {{ object.image_height }}
    {% trans "Size" %} + {{ object.size|filesizeformat }} +
    +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/imageattachment_image.html b/netbox/templates/extras/panels/imageattachment_image.html new file mode 100644 index 000000000..dfeea5040 --- /dev/null +++ b/netbox/templates/extras/panels/imageattachment_image.html @@ -0,0 +1,9 @@ +{% extends "ui/panels/_base.html" %} + +{% block panel_content %} + +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/notificationgroup_groups.html b/netbox/templates/extras/panels/notificationgroup_groups.html new file mode 100644 index 000000000..2e8a14da9 --- /dev/null +++ b/netbox/templates/extras/panels/notificationgroup_groups.html @@ -0,0 +1,12 @@ +{% extends "ui/panels/_base.html" %} +{% load i18n %} + +{% block panel_content %} +
    + {% for group in object.groups.all %} + {{ group }} + {% empty %} +
    {% trans "None assigned" %}
    + {% endfor %} +
    +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/notificationgroup_users.html b/netbox/templates/extras/panels/notificationgroup_users.html new file mode 100644 index 000000000..5ee74a8cb --- /dev/null +++ b/netbox/templates/extras/panels/notificationgroup_users.html @@ -0,0 +1,12 @@ +{% extends "ui/panels/_base.html" %} +{% load i18n %} + +{% block panel_content %} +
    + {% for user in object.users.all %} + {{ user }} + {% empty %} +
    {% trans "None assigned" %}
    + {% endfor %} +
    +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/object_types.html b/netbox/templates/extras/panels/object_types.html new file mode 100644 index 000000000..c57556e42 --- /dev/null +++ b/netbox/templates/extras/panels/object_types.html @@ -0,0 +1,11 @@ +{% extends "ui/panels/_base.html" %} + +{% block panel_content %} + + {% for ct in object.object_types.all %} + + + + {% endfor %} +
    {{ ct }}
    +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/savedfilter_object_types.html b/netbox/templates/extras/panels/savedfilter_object_types.html new file mode 100644 index 000000000..8b7a053c6 --- /dev/null +++ b/netbox/templates/extras/panels/savedfilter_object_types.html @@ -0,0 +1,16 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/tableconfig_columns.html b/netbox/templates/extras/panels/tableconfig_columns.html new file mode 100644 index 000000000..33b4f052f --- /dev/null +++ b/netbox/templates/extras/panels/tableconfig_columns.html @@ -0,0 +1,15 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers %} +{% load i18n %} + +{% block panel_content %} + +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/tableconfig_ordering.html b/netbox/templates/extras/panels/tableconfig_ordering.html new file mode 100644 index 000000000..2c9f3afb7 --- /dev/null +++ b/netbox/templates/extras/panels/tableconfig_ordering.html @@ -0,0 +1,22 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers %} +{% load i18n %} + +{% block panel_content %} + +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/tag_item_types.html b/netbox/templates/extras/panels/tag_item_types.html new file mode 100644 index 000000000..8cc2b7920 --- /dev/null +++ b/netbox/templates/extras/panels/tag_item_types.html @@ -0,0 +1,21 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + +{% endblock panel_content %} diff --git a/netbox/templates/extras/panels/tag_object_types.html b/netbox/templates/extras/panels/tag_object_types.html new file mode 100644 index 000000000..6f20d2ee7 --- /dev/null +++ b/netbox/templates/extras/panels/tag_object_types.html @@ -0,0 +1,16 @@ +{% extends "ui/panels/_base.html" %} +{% load i18n %} + +{% block panel_content %} + + {% for ct in object.object_types.all %} + + + + {% empty %} + + + + {% endfor %} +
    {{ ct }}
    {% trans "Any" %}
    +{% endblock panel_content %} diff --git a/netbox/templates/extras/savedfilter.html b/netbox/templates/extras/savedfilter.html index 93d917f3f..f15e1d050 100644 --- a/netbox/templates/extras/savedfilter.html +++ b/netbox/templates/extras/savedfilter.html @@ -1,69 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Saved Filter" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "User" %}{{ object.user|placeholder }}
    {% trans "Enabled" %}{% checkmark object.enabled %}
    {% trans "Shared" %}{% checkmark object.shared %}
    {% trans "Weight" %}{{ object.weight }}
    -
    -
    -

    {% trans "Assigned Models" %}

    - -
    - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "Parameters" %}

    -
    -
    {{ object.parameters|json }}
    -
    -
    - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/tableconfig.html b/netbox/templates/extras/tableconfig.html index a08b58ec9..f15e1d050 100644 --- a/netbox/templates/extras/tableconfig.html +++ b/netbox/templates/extras/tableconfig.html @@ -1,88 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Table Config" %}

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Object Type" %}{{ object.object_type }}
    {% trans "Table" %}{{ object.table }}
    {% trans "User" %}{{ object.user|placeholder }}
    {% trans "Enabled" %}{% checkmark object.enabled %}
    {% trans "Shared" %}{% checkmark object.shared %}
    {% trans "Weight" %}{{ object.weight }}
    -
    - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "Columns Displayed" %}

    - -
    -
    -

    {% trans "Ordering" %}

    - -
    - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/tag.html b/netbox/templates/extras/tag.html index 61d130322..f15e1d050 100644 --- a/netbox/templates/extras/tag.html +++ b/netbox/templates/extras/tag.html @@ -1,94 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load render_table from django_tables2 %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Tag" %}

    - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Name" %} - {{ object.name }} -
    {% trans "Description" %} - {{ object.description|placeholder }} -
    {% trans "Color" %} -   -
    {% trans "Weight" %}{{ object.weight }}
    {% trans "Tagged Items" %} - {{ taggeditem_table.rows|length }} -
    -
    - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "Allowed Object Types" %}

    - - {% for ct in object.object_types.all %} - - - - {% empty %} - - - - {% endfor %} -
    {{ ct }}
    {% trans "Any" %}
    -
    -
    -

    {% trans "Tagged Item Types" %}

    - -
    - {% plugin_right_page object %} -
    -
    -
    -
    -
    -

    {% trans "Tagged Objects" %}

    -
    - {% render_table taggeditem_table 'inc/table.html' %} - {% include 'inc/paginator.html' with paginator=taggeditem_table.paginator page=taggeditem_table.page %} -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/extras/tag/attrs/tagged_item_count.html b/netbox/templates/extras/tag/attrs/tagged_item_count.html new file mode 100644 index 000000000..5a051633a --- /dev/null +++ b/netbox/templates/extras/tag/attrs/tagged_item_count.html @@ -0,0 +1 @@ +{{ value.count }} diff --git a/netbox/templates/extras/webhook.html b/netbox/templates/extras/webhook.html index 6ec1d3942..f15e1d050 100644 --- a/netbox/templates/extras/webhook.html +++ b/netbox/templates/extras/webhook.html @@ -1,89 +1 @@ {% extends 'generic/object.html' %} -{% load helpers %} -{% load plugins %} -{% load i18n %} - -{% block content %} -
    -
    -
    -

    {% trans "Webhook" %}

    - - - - - - - - - -
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    -
    -
    -

    {% trans "HTTP Request" %}

    - - - - - - - - - - - - - - - - - -
    {% trans "HTTP Method" %}{{ object.get_http_method_display }}
    {% trans "Payload URL" %}{{ object.payload_url }}
    {% trans "HTTP Content Type" %}{{ object.http_content_type }}
    {% trans "Secret" %}{{ object.secret|placeholder }}
    -
    -
    -

    {% trans "SSL" %}

    - - - - - - - - - -
    {% trans "SSL Verification" %}{% checkmark object.ssl_verification %}
    {% trans "CA File Path" %}{{ object.ca_file_path|placeholder }}
    -
    - {% plugin_left_page object %} -
    -
    -
    -

    {% trans "Additional Headers" %}

    -
    - {% if object.additional_headers %} -
    {{ object.additional_headers }}
    - {% else %} - {% trans "None" %} - {% endif %} -
    -
    -
    -

    {% trans "Body Template" %}

    -
    - {% if object.body_template %} -
    {{ object.body_template }}
    - {% else %} - {% trans "None" %} - {% endif %} -
    -
    - {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} - {% plugin_right_page object %} -
    -
    -
    -
    - {% plugin_full_width_page object %} -
    -
    -{% endblock %} diff --git a/netbox/templates/ui/panels/text_code.html b/netbox/templates/ui/panels/text_code.html new file mode 100644 index 000000000..01182340f --- /dev/null +++ b/netbox/templates/ui/panels/text_code.html @@ -0,0 +1,15 @@ +{% extends "ui/panels/_base.html" %} +{% load i18n %} + +{% block panel_content %} +
    + {% if value %} +
    {{ value }}
    + {% else %} + {% if show_sync_warning %} + {% include 'inc/sync_warning.html' %} + {% endif %} + {% trans "None" %} + {% endif %} +
    +{% endblock panel_content %} From 0455e14c2926d170d9d3ceedb3380871a17bcbcc Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Tue, 31 Mar 2026 20:34:31 +0200 Subject: [PATCH 35/41] docs(plugins): Use @register_search in plugin search docs Align the plugin search example with the recommended registration pattern used in the general search documentation and NetBox core. Replace the legacy `indexes = [...]` example with decorator-based registration to make the preferred approach clearer for plugin authors. --- docs/plugins/development/search.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/docs/plugins/development/search.md b/docs/plugins/development/search.md index e54844cf0..16b0ff2c1 100644 --- a/docs/plugins/development/search.md +++ b/docs/plugins/development/search.md @@ -1,12 +1,14 @@ # Search -Plugins can define and register their own models to extend NetBox's core search functionality. Typically, a plugin will include a file named `search.py`, which holds all search indexes for its models (see the example below). +Plugins can define and register their own models to extend NetBox's core search functionality. Typically, a plugin will include a file named `search.py`, which holds all search indexes for its models. -```python +```python title="search.py" # search.py -from netbox.search import SearchIndex +from netbox.search import SearchIndex, register_search + from .models import MyModel +@register_search class MyModelIndex(SearchIndex): model = MyModel fields = ( @@ -17,15 +19,11 @@ class MyModelIndex(SearchIndex): display_attrs = ('site', 'device', 'status', 'description') ``` -Fields listed in `display_attrs` will not be cached for search, but will be displayed alongside the object when it appears in global search results. This is helpful for conveying to the user additional information about an object. +Decorate each `SearchIndex` subclass with `@register_search` to register it with NetBox. When using the default `search.py` module, no additional `indexes = [...]` list is required. -To register one or more indexes with NetBox, define a list named `indexes` at the end of this file: - -```python -indexes = [MyModelIndex] -``` +Fields listed in `display_attrs` are not cached for matching, but they are displayed alongside the object in global search results to provide additional context. !!! tip - The path to the list of search indexes can be modified by setting `search_indexes` in the PluginConfig instance. + The legacy `indexes = [...]` list remains supported via `PluginConfig.search_indexes` for backward compatibility and custom loading patterns. ::: netbox.search.SearchIndex From 2563122352b8b0702ac1a6243ae65a22a35dde16 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 05:39:05 +0000 Subject: [PATCH 36/41] Update source translation strings --- netbox/translations/en/LC_MESSAGES/django.po | 830 ++++++++----------- 1 file changed, 354 insertions(+), 476 deletions(-) diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index 8f946e717..86ab63fdb 100644 --- a/netbox/translations/en/LC_MESSAGES/django.po +++ b/netbox/translations/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-31 05:31+0000\n" +"POT-Creation-Date: 2026-04-01 05:38+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -41,9 +41,9 @@ msgstr "" #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 #: netbox/dcim/choices.py:102 netbox/dcim/choices.py:204 -#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1954 -#: netbox/dcim/choices.py:2012 netbox/dcim/choices.py:2079 -#: netbox/dcim/choices.py:2101 netbox/virtualization/choices.py:20 +#: netbox/dcim/choices.py:257 netbox/dcim/choices.py:1959 +#: netbox/dcim/choices.py:2017 netbox/dcim/choices.py:2084 +#: netbox/dcim/choices.py:2106 netbox/virtualization/choices.py:20 #: netbox/virtualization/choices.py:46 netbox/vpn/choices.py:18 #: netbox/vpn/choices.py:281 msgid "Planned" @@ -57,21 +57,20 @@ msgstr "" #: netbox/core/tables/tasks.py:23 netbox/dcim/choices.py:22 #: netbox/dcim/choices.py:103 netbox/dcim/choices.py:155 #: netbox/dcim/choices.py:203 netbox/dcim/choices.py:256 -#: netbox/dcim/choices.py:2011 netbox/dcim/choices.py:2078 -#: netbox/dcim/choices.py:2100 netbox/extras/tables/tables.py:642 -#: netbox/ipam/choices.py:31 netbox/ipam/choices.py:49 -#: netbox/ipam/choices.py:69 netbox/ipam/choices.py:154 -#: netbox/templates/extras/configcontext.html:29 -#: netbox/users/forms/bulk_edit.py:41 netbox/users/ui/panels.py:38 -#: netbox/virtualization/choices.py:22 netbox/virtualization/choices.py:45 -#: netbox/vpn/choices.py:19 netbox/vpn/choices.py:280 -#: netbox/wireless/choices.py:25 +#: netbox/dcim/choices.py:2016 netbox/dcim/choices.py:2083 +#: netbox/dcim/choices.py:2105 netbox/extras/tables/tables.py:643 +#: netbox/extras/ui/panels.py:446 netbox/ipam/choices.py:31 +#: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 +#: netbox/ipam/choices.py:154 netbox/users/forms/bulk_edit.py:41 +#: netbox/users/ui/panels.py:38 netbox/virtualization/choices.py:22 +#: netbox/virtualization/choices.py:45 netbox/vpn/choices.py:19 +#: netbox/vpn/choices.py:280 netbox/wireless/choices.py:25 msgid "Active" msgstr "" #: netbox/circuits/choices.py:24 netbox/dcim/choices.py:202 -#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:2010 -#: netbox/dcim/choices.py:2080 netbox/dcim/choices.py:2099 +#: netbox/dcim/choices.py:255 netbox/dcim/choices.py:2015 +#: netbox/dcim/choices.py:2085 netbox/dcim/choices.py:2104 #: netbox/virtualization/choices.py:24 netbox/virtualization/choices.py:44 msgid "Offline" msgstr "" @@ -84,7 +83,7 @@ msgstr "" msgid "Decommissioned" msgstr "" -#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2023 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:2028 #: netbox/dcim/tables/devices.py:1208 #: netbox/templates/dcim/interface/attrs/mac_address.html:3 #: netbox/tenancy/choices.py:17 @@ -326,7 +325,7 @@ msgstr "" #: netbox/circuits/forms/model_forms.py:191 #: netbox/circuits/forms/model_forms.py:289 #: netbox/circuits/tables/circuits.py:103 -#: netbox/circuits/tables/circuits.py:199 netbox/dcim/forms/connections.py:83 +#: netbox/circuits/tables/circuits.py:200 netbox/dcim/forms/connections.py:83 #: netbox/templates/circuits/panels/circuit_termination.html:7 #: netbox/templates/dcim/inc/cable_termination.html:62 #: netbox/templates/dcim/trace/circuit.html:4 @@ -458,8 +457,8 @@ msgstr "" #: netbox/dcim/tables/devices.py:839 netbox/dcim/tables/devices.py:1100 #: netbox/dcim/tables/devicetypes.py:214 netbox/dcim/tables/devicetypes.py:255 #: netbox/dcim/tables/devicetypes.py:274 netbox/dcim/tables/racks.py:30 -#: netbox/extras/forms/bulk_edit.py:306 netbox/extras/tables/tables.py:552 -#: netbox/netbox/ui/attrs.py:213 netbox/templates/extras/tag.html:26 +#: netbox/extras/forms/bulk_edit.py:306 netbox/extras/tables/tables.py:553 +#: netbox/netbox/ui/attrs.py:213 msgid "Color" msgstr "" @@ -469,7 +468,7 @@ msgstr "" #: netbox/circuits/forms/bulk_import.py:220 #: netbox/circuits/forms/filtersets.py:146 #: netbox/circuits/forms/filtersets.py:370 -#: netbox/circuits/tables/circuits.py:64 netbox/circuits/tables/circuits.py:196 +#: netbox/circuits/tables/circuits.py:64 netbox/circuits/tables/circuits.py:197 #: netbox/circuits/tables/virtual_circuits.py:58 #: netbox/core/forms/bulk_edit.py:18 netbox/core/forms/filtersets.py:37 #: netbox/core/tables/change_logging.py:33 netbox/core/tables/data.py:22 @@ -497,9 +496,9 @@ msgstr "" #: netbox/dcim/forms/object_import.py:127 netbox/dcim/tables/devices.py:182 #: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:127 #: netbox/extras/forms/bulk_import.py:48 netbox/extras/tables/tables.py:510 -#: netbox/extras/tables/tables.py:578 netbox/netbox/tables/tables.py:339 +#: netbox/extras/tables/tables.py:579 netbox/extras/ui/panels.py:133 +#: netbox/extras/ui/panels.py:382 netbox/netbox/tables/tables.py:339 #: netbox/templates/dcim/panels/interface_connection.html:68 -#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/wireless/panels/wirelesslink_interface.html:16 #: netbox/virtualization/forms/bulk_edit.py:50 #: netbox/virtualization/forms/bulk_import.py:42 @@ -771,22 +770,11 @@ msgstr "" #: netbox/extras/tables/tables.py:97 netbox/ipam/tables/vlans.py:214 #: netbox/ipam/tables/vlans.py:241 netbox/netbox/forms/bulk_edit.py:79 #: netbox/netbox/forms/bulk_edit.py:91 netbox/netbox/forms/bulk_edit.py:103 -#: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 +#: netbox/netbox/ui/panels.py:201 netbox/netbox/ui/panels.py:210 #: netbox/templates/circuits/inc/circuit_termination_fields.html:85 #: netbox/templates/core/plugin.html:80 -#: netbox/templates/extras/configcontext.html:25 -#: netbox/templates/extras/configcontextprofile.html:17 -#: netbox/templates/extras/configtemplate.html:17 -#: netbox/templates/extras/customfield.html:34 #: netbox/templates/extras/dashboard/widget_add.html:14 -#: netbox/templates/extras/eventrule.html:21 -#: netbox/templates/extras/exporttemplate.html:19 -#: netbox/templates/extras/imageattachment.html:21 #: netbox/templates/extras/inc/script_list_content.html:33 -#: netbox/templates/extras/notificationgroup.html:20 -#: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/tableconfig.html:17 -#: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:151 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:12 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:12 @@ -846,7 +834,7 @@ msgstr "" #: netbox/circuits/forms/bulk_edit.py:261 #: netbox/circuits/forms/bulk_import.py:188 #: netbox/circuits/forms/filtersets.py:314 -#: netbox/circuits/tables/circuits.py:203 netbox/dcim/forms/model_forms.py:692 +#: netbox/circuits/tables/circuits.py:205 netbox/dcim/forms/model_forms.py:692 #: netbox/templates/dcim/panels/virtual_chassis_members.html:11 #: netbox/templates/dcim/virtualchassis_edit.html:68 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 @@ -1189,9 +1177,9 @@ msgid "Term Side" msgstr "" #: netbox/circuits/forms/filtersets.py:296 netbox/dcim/forms/bulk_edit.py:1540 -#: netbox/extras/forms/model_forms.py:706 netbox/ipam/forms/filtersets.py:154 -#: netbox/ipam/forms/filtersets.py:642 netbox/ipam/forms/model_forms.py:329 -#: netbox/ipam/ui/panels.py:121 netbox/templates/extras/configcontext.html:36 +#: netbox/extras/forms/model_forms.py:706 netbox/extras/ui/panels.py:451 +#: netbox/ipam/forms/filtersets.py:154 netbox/ipam/forms/filtersets.py:642 +#: netbox/ipam/forms/model_forms.py:329 netbox/ipam/ui/panels.py:121 #: netbox/templates/ipam/vlan_edit.html:42 #: netbox/tenancy/forms/filtersets.py:116 netbox/users/forms/model_forms.py:375 msgid "Assignment" @@ -1558,8 +1546,8 @@ msgstr "" #: netbox/extras/tables/tables.py:269 netbox/extras/tables/tables.py:312 #: netbox/extras/tables/tables.py:346 netbox/extras/tables/tables.py:462 #: netbox/extras/tables/tables.py:479 netbox/extras/tables/tables.py:506 -#: netbox/extras/tables/tables.py:548 netbox/extras/tables/tables.py:596 -#: netbox/extras/tables/tables.py:638 netbox/extras/tables/tables.py:668 +#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:597 +#: netbox/extras/tables/tables.py:639 netbox/extras/tables/tables.py:669 #: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:428 #: netbox/ipam/forms/filtersets.py:516 netbox/ipam/tables/asn.py:16 #: netbox/ipam/tables/ip.py:33 netbox/ipam/tables/ip.py:105 @@ -1567,25 +1555,13 @@ msgstr "" #: netbox/ipam/tables/vlans.py:33 netbox/ipam/tables/vlans.py:86 #: netbox/ipam/tables/vlans.py:205 netbox/ipam/tables/vrfs.py:26 #: netbox/ipam/tables/vrfs.py:65 netbox/netbox/tables/tables.py:325 -#: netbox/netbox/ui/panels.py:199 netbox/netbox/ui/panels.py:208 +#: netbox/netbox/ui/panels.py:200 netbox/netbox/ui/panels.py:209 #: netbox/templates/core/plugin.html:54 netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/inc/interface_vlans_table.html:5 #: netbox/templates/dcim/inc/panels/inventory_items.html:18 #: netbox/templates/dcim/panels/component_inventory_items.html:8 #: netbox/templates/dcim/panels/interface_connection.html:64 -#: netbox/templates/extras/configcontext.html:13 -#: netbox/templates/extras/configcontextprofile.html:13 -#: netbox/templates/extras/configtemplate.html:13 -#: netbox/templates/extras/customfield.html:13 -#: netbox/templates/extras/customlink.html:13 -#: netbox/templates/extras/eventrule.html:13 -#: netbox/templates/extras/exporttemplate.html:15 -#: netbox/templates/extras/imageattachment.html:17 #: netbox/templates/extras/inc/script_list_content.html:32 -#: netbox/templates/extras/notificationgroup.html:14 -#: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/tableconfig.html:13 -#: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/vpn/panels/ipsecprofile_ike_policy.html:8 #: netbox/templates/vpn/panels/ipsecprofile_ipsec_policy.html:8 #: netbox/tenancy/tables/contacts.py:38 netbox/tenancy/tables/contacts.py:53 @@ -1802,7 +1778,7 @@ msgstr "" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:21 netbox/core/tables/tasks.py:35 #: netbox/dcim/choices.py:206 netbox/dcim/choices.py:259 -#: netbox/dcim/choices.py:2013 netbox/dcim/choices.py:2103 +#: netbox/dcim/choices.py:2018 netbox/dcim/choices.py:2108 #: netbox/virtualization/choices.py:48 msgid "Failed" msgstr "" @@ -1863,13 +1839,12 @@ msgstr "" #: netbox/core/choices.py:102 netbox/core/tables/jobs.py:31 #: netbox/core/tables/tasks.py:80 netbox/extras/tables/tables.py:436 -#: netbox/extras/tables/tables.py:742 +#: netbox/extras/tables/tables.py:743 #: netbox/templates/core/configrevision.html:23 #: netbox/templates/core/configrevision_restore.html:12 #: netbox/templates/core/rq_task.html:16 netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 -#: netbox/templates/extras/journalentry.html:22 #: netbox/templates/generic/object.html:65 #: netbox/templates/htmx/quick_add_created.html:7 netbox/users/tables.py:37 msgid "Created" @@ -1983,7 +1958,7 @@ msgid "User name" msgstr "" #: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:47 -#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2061 +#: netbox/core/tables/data.py:28 netbox/dcim/choices.py:2066 #: netbox/dcim/forms/bulk_edit.py:1105 netbox/dcim/forms/bulk_edit.py:1386 #: netbox/dcim/forms/filtersets.py:1619 netbox/dcim/forms/filtersets.py:1712 #: netbox/dcim/tables/devices.py:581 netbox/dcim/tables/devicetypes.py:233 @@ -1992,12 +1967,8 @@ msgstr "" #: netbox/extras/forms/filtersets.py:156 netbox/extras/forms/filtersets.py:252 #: netbox/extras/forms/filtersets.py:283 netbox/extras/forms/filtersets.py:348 #: netbox/extras/tables/tables.py:188 netbox/extras/tables/tables.py:319 -#: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:520 +#: netbox/extras/tables/tables.py:356 netbox/extras/tables/tables.py:521 #: netbox/netbox/preferences.py:46 netbox/netbox/preferences.py:71 -#: netbox/templates/extras/customlink.html:17 -#: netbox/templates/extras/eventrule.html:17 -#: netbox/templates/extras/savedfilter.html:25 -#: netbox/templates/extras/tableconfig.html:33 #: netbox/users/forms/bulk_edit.py:87 netbox/users/forms/bulk_edit.py:105 #: netbox/users/forms/filtersets.py:67 netbox/users/forms/filtersets.py:133 #: netbox/users/tables.py:30 netbox/users/tables.py:113 @@ -2012,12 +1983,11 @@ msgid "Sync interval" msgstr "" #: netbox/core/forms/bulk_edit.py:33 netbox/extras/forms/model_forms.py:319 -#: netbox/templates/extras/savedfilter.html:56 -#: netbox/vpn/forms/filtersets.py:107 netbox/vpn/forms/filtersets.py:138 -#: netbox/vpn/forms/filtersets.py:163 netbox/vpn/forms/filtersets.py:183 -#: netbox/vpn/forms/model_forms.py:299 netbox/vpn/forms/model_forms.py:320 -#: netbox/vpn/forms/model_forms.py:336 netbox/vpn/forms/model_forms.py:357 -#: netbox/vpn/forms/model_forms.py:379 +#: netbox/extras/views.py:382 netbox/vpn/forms/filtersets.py:107 +#: netbox/vpn/forms/filtersets.py:138 netbox/vpn/forms/filtersets.py:163 +#: netbox/vpn/forms/filtersets.py:183 netbox/vpn/forms/model_forms.py:299 +#: netbox/vpn/forms/model_forms.py:320 netbox/vpn/forms/model_forms.py:336 +#: netbox/vpn/forms/model_forms.py:357 netbox/vpn/forms/model_forms.py:379 msgid "Parameters" msgstr "" @@ -2030,16 +2000,15 @@ msgstr "" #: netbox/extras/forms/model_forms.py:613 #: netbox/extras/forms/model_forms.py:702 #: netbox/extras/forms/model_forms.py:755 netbox/extras/tables/tables.py:230 -#: netbox/extras/tables/tables.py:600 netbox/extras/tables/tables.py:630 -#: netbox/extras/tables/tables.py:672 +#: netbox/extras/tables/tables.py:601 netbox/extras/tables/tables.py:631 +#: netbox/extras/tables/tables.py:673 #: netbox/templates/core/inc/datafile_panel.html:7 -#: netbox/templates/extras/configtemplate.html:37 #: netbox/templates/extras/object_render_config.html:19 msgid "Data Source" msgstr "" #: netbox/core/forms/filtersets.py:65 netbox/core/forms/mixins.py:21 -#: netbox/templates/extras/imageattachment.html:30 +#: netbox/extras/ui/panels.py:496 msgid "File" msgstr "" @@ -2058,9 +2027,8 @@ msgstr "" #: netbox/extras/forms/filtersets.py:580 netbox/extras/tables/tables.py:283 #: netbox/extras/tables/tables.py:350 netbox/extras/tables/tables.py:376 #: netbox/extras/tables/tables.py:395 netbox/extras/tables/tables.py:427 -#: netbox/extras/tables/tables.py:747 -#: netbox/templates/extras/tableconfig.html:21 -#: netbox/tenancy/tables/contacts.py:84 netbox/vpn/tables/l2vpn.py:59 +#: netbox/extras/tables/tables.py:748 netbox/tenancy/tables/contacts.py:84 +#: netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "" @@ -2106,8 +2074,6 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/model_forms.py:362 #: netbox/extras/forms/filtersets.py:575 netbox/extras/forms/filtersets.py:595 #: netbox/extras/tables/tables.py:403 netbox/extras/tables/tables.py:443 -#: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/extras/tableconfig.html:29 #: netbox/templates/inc/user_menu.html:31 netbox/users/filtersets.py:135 #: netbox/users/filtersets.py:217 netbox/users/forms/filtersets.py:81 #: netbox/users/forms/filtersets.py:126 netbox/users/forms/model_forms.py:181 @@ -2116,8 +2082,8 @@ msgid "User" msgstr "" #: netbox/core/forms/filtersets.py:149 netbox/core/tables/change_logging.py:16 -#: netbox/core/tables/jobs.py:72 netbox/extras/tables/tables.py:785 -#: netbox/extras/tables/tables.py:840 +#: netbox/core/tables/jobs.py:72 netbox/extras/tables/tables.py:786 +#: netbox/extras/tables/tables.py:841 msgid "Time" msgstr "" @@ -2130,8 +2096,7 @@ msgid "Before" msgstr "" #: netbox/core/forms/filtersets.py:163 netbox/core/tables/change_logging.py:30 -#: netbox/extras/forms/model_forms.py:490 -#: netbox/templates/extras/eventrule.html:71 +#: netbox/extras/forms/model_forms.py:490 netbox/extras/ui/panels.py:380 msgid "Action" msgstr "" @@ -2168,7 +2133,7 @@ msgstr "" msgid "Rack Elevations" msgstr "" -#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1932 +#: netbox/core/forms/model_forms.py:160 netbox/dcim/choices.py:1937 #: netbox/dcim/forms/bulk_edit.py:944 netbox/dcim/forms/bulk_edit.py:1340 #: netbox/dcim/forms/bulk_edit.py:1361 netbox/dcim/tables/racks.py:144 #: netbox/netbox/navigation/menu.py:316 netbox/netbox/navigation/menu.py:320 @@ -2332,7 +2297,7 @@ msgstr "" #: netbox/core/models/data.py:50 netbox/core/ui/panels.py:17 #: netbox/extras/choices.py:37 netbox/extras/models/models.py:183 -#: netbox/extras/tables/tables.py:850 netbox/templates/core/plugin.html:66 +#: netbox/extras/tables/tables.py:851 netbox/templates/core/plugin.html:66 msgid "URL" msgstr "" @@ -2556,11 +2521,10 @@ msgstr "" #: netbox/core/ui/panels.py:83 netbox/extras/choices.py:41 #: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:379 #: netbox/extras/tables/tables.py:398 netbox/extras/tables/tables.py:430 -#: netbox/extras/tables/tables.py:514 netbox/extras/tables/tables.py:583 -#: netbox/extras/tables/tables.py:752 netbox/extras/tables/tables.py:793 -#: netbox/extras/tables/tables.py:847 netbox/netbox/tables/tables.py:343 -#: netbox/templates/extras/eventrule.html:78 -#: netbox/templates/extras/journalentry.html:18 +#: netbox/extras/tables/tables.py:513 netbox/extras/tables/tables.py:584 +#: netbox/extras/tables/tables.py:753 netbox/extras/tables/tables.py:794 +#: netbox/extras/tables/tables.py:848 netbox/extras/ui/panels.py:383 +#: netbox/extras/ui/panels.py:511 netbox/netbox/tables/tables.py:343 #: netbox/tenancy/tables/contacts.py:87 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "" @@ -2570,7 +2534,7 @@ msgid "Request ID" msgstr "" #: netbox/core/tables/change_logging.py:46 netbox/core/tables/jobs.py:79 -#: netbox/extras/tables/tables.py:796 netbox/extras/tables/tables.py:853 +#: netbox/extras/tables/tables.py:797 netbox/extras/tables/tables.py:854 msgid "Message" msgstr "" @@ -2599,7 +2563,7 @@ msgstr "" #: netbox/core/tables/jobs.py:12 netbox/core/tables/tasks.py:77 #: netbox/dcim/tables/devicetypes.py:168 netbox/extras/tables/tables.py:260 -#: netbox/extras/tables/tables.py:573 netbox/extras/tables/tables.py:818 +#: netbox/extras/tables/tables.py:574 netbox/extras/tables/tables.py:819 #: netbox/netbox/tables/tables.py:233 #: netbox/templates/dcim/virtualchassis_edit.html:64 #: netbox/utilities/forms/forms.py:119 @@ -2615,8 +2579,8 @@ msgstr "" msgid "Log Entries" msgstr "" -#: netbox/core/tables/jobs.py:76 netbox/extras/tables/tables.py:790 -#: netbox/extras/tables/tables.py:844 +#: netbox/core/tables/jobs.py:76 netbox/extras/tables/tables.py:791 +#: netbox/extras/tables/tables.py:845 msgid "Level" msgstr "" @@ -2736,11 +2700,10 @@ msgid "Backend" msgstr "" #: netbox/core/ui/panels.py:33 netbox/extras/tables/tables.py:234 -#: netbox/extras/tables/tables.py:604 netbox/extras/tables/tables.py:634 -#: netbox/extras/tables/tables.py:676 +#: netbox/extras/tables/tables.py:605 netbox/extras/tables/tables.py:635 +#: netbox/extras/tables/tables.py:677 #: netbox/templates/core/inc/datafile_panel.html:4 #: netbox/templates/core/inc/datafile_panel.html:17 -#: netbox/templates/extras/configtemplate.html:47 #: netbox/templates/extras/object_render_config.html:23 #: netbox/templates/generic/bulk_import.html:35 msgid "Data File" @@ -2798,7 +2761,7 @@ msgstr "" #: netbox/core/views.py:237 netbox/extras/forms/filtersets.py:179 #: netbox/extras/forms/filtersets.py:380 netbox/extras/forms/filtersets.py:403 #: netbox/extras/forms/filtersets.py:499 netbox/extras/forms/model_forms.py:696 -#: netbox/templates/extras/eventrule.html:84 +#: netbox/extras/ui/panels.py:386 msgid "Data" msgstr "" @@ -2891,8 +2854,8 @@ msgid "Staging" msgstr "" #: netbox/dcim/choices.py:23 netbox/dcim/choices.py:208 -#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1955 -#: netbox/dcim/choices.py:2104 netbox/virtualization/choices.py:23 +#: netbox/dcim/choices.py:260 netbox/dcim/choices.py:1960 +#: netbox/dcim/choices.py:2109 netbox/virtualization/choices.py:23 #: netbox/virtualization/choices.py:49 netbox/vpn/choices.py:282 msgid "Decommissioning" msgstr "" @@ -2958,7 +2921,7 @@ msgstr "" msgid "Millimeters" msgstr "" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1977 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1982 msgid "Inches" msgstr "" @@ -2994,7 +2957,7 @@ msgstr "" #: netbox/dcim/tables/devices.py:1205 netbox/ipam/forms/bulk_import.py:601 #: netbox/ipam/forms/model_forms.py:758 netbox/ipam/tables/fhrp.py:56 #: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/services.py:42 -#: netbox/netbox/tables/tables.py:329 netbox/netbox/ui/panels.py:207 +#: netbox/netbox/tables/tables.py:329 netbox/netbox/ui/panels.py:208 #: netbox/tenancy/forms/bulk_edit.py:33 netbox/tenancy/forms/bulk_edit.py:62 #: netbox/tenancy/forms/bulk_import.py:31 #: netbox/tenancy/forms/bulk_import.py:64 @@ -3030,7 +2993,7 @@ msgid "Rear" msgstr "" #: netbox/dcim/choices.py:205 netbox/dcim/choices.py:258 -#: netbox/dcim/choices.py:2102 netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:2107 netbox/virtualization/choices.py:47 msgid "Staged" msgstr "" @@ -3063,7 +3026,7 @@ msgid "Top to bottom" msgstr "" #: netbox/dcim/choices.py:235 netbox/dcim/choices.py:280 -#: netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:1592 msgid "Passive" msgstr "" @@ -3092,8 +3055,8 @@ msgid "Proprietary" msgstr "" #: netbox/dcim/choices.py:606 netbox/dcim/choices.py:853 -#: netbox/dcim/choices.py:1499 netbox/dcim/choices.py:1501 -#: netbox/dcim/choices.py:1737 netbox/dcim/choices.py:1739 +#: netbox/dcim/choices.py:1501 netbox/dcim/choices.py:1503 +#: netbox/dcim/choices.py:1742 netbox/dcim/choices.py:1744 #: netbox/netbox/navigation/menu.py:212 msgid "Other" msgstr "" @@ -3106,11 +3069,11 @@ msgstr "" msgid "Physical" msgstr "" -#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1162 +#: netbox/dcim/choices.py:884 netbox/dcim/choices.py:1163 msgid "Virtual" msgstr "" -#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1376 +#: netbox/dcim/choices.py:885 netbox/dcim/choices.py:1378 #: netbox/dcim/forms/bulk_edit.py:1546 netbox/dcim/forms/filtersets.py:1577 #: netbox/dcim/forms/filtersets.py:1703 netbox/dcim/forms/model_forms.py:1151 #: netbox/dcim/forms/model_forms.py:1615 netbox/dcim/ui/panels.py:546 @@ -3118,11 +3081,11 @@ msgstr "" msgid "Wireless" msgstr "" -#: netbox/dcim/choices.py:1160 +#: netbox/dcim/choices.py:1161 msgid "Virtual interfaces" msgstr "" -#: netbox/dcim/choices.py:1163 netbox/dcim/forms/bulk_edit.py:1399 +#: netbox/dcim/choices.py:1164 netbox/dcim/forms/bulk_edit.py:1399 #: netbox/dcim/forms/bulk_import.py:949 netbox/dcim/forms/model_forms.py:1133 #: netbox/dcim/tables/devices.py:741 #: netbox/virtualization/forms/bulk_edit.py:177 @@ -3131,325 +3094,325 @@ msgstr "" msgid "Bridge" msgstr "" -#: netbox/dcim/choices.py:1164 +#: netbox/dcim/choices.py:1165 msgid "Link Aggregation Group (LAG)" msgstr "" -#: netbox/dcim/choices.py:1168 +#: netbox/dcim/choices.py:1169 msgid "FastEthernet (100 Mbps)" msgstr "" -#: netbox/dcim/choices.py:1177 +#: netbox/dcim/choices.py:1178 msgid "GigabitEthernet (1 Gbps)" msgstr "" -#: netbox/dcim/choices.py:1195 +#: netbox/dcim/choices.py:1196 msgid "2.5/5 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1202 +#: netbox/dcim/choices.py:1203 msgid "10 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1218 +#: netbox/dcim/choices.py:1219 msgid "25 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1228 +#: netbox/dcim/choices.py:1229 msgid "40 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1239 +#: netbox/dcim/choices.py:1240 msgid "50 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1249 +#: netbox/dcim/choices.py:1250 msgid "100 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1270 +#: netbox/dcim/choices.py:1271 msgid "200 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1284 +#: netbox/dcim/choices.py:1285 msgid "400 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1302 +#: netbox/dcim/choices.py:1303 msgid "800 Gbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1311 +#: netbox/dcim/choices.py:1312 msgid "1.6 Tbps Ethernet" msgstr "" -#: netbox/dcim/choices.py:1319 +#: netbox/dcim/choices.py:1320 msgid "Pluggable transceivers" msgstr "" -#: netbox/dcim/choices.py:1359 +#: netbox/dcim/choices.py:1361 msgid "Backplane Ethernet" msgstr "" -#: netbox/dcim/choices.py:1392 +#: netbox/dcim/choices.py:1394 msgid "Cellular" msgstr "" -#: netbox/dcim/choices.py:1444 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/choices.py:1446 netbox/dcim/forms/filtersets.py:425 #: netbox/dcim/forms/filtersets.py:911 netbox/dcim/forms/filtersets.py:1112 #: netbox/dcim/forms/filtersets.py:1910 #: netbox/templates/dcim/virtualchassis_edit.html:66 msgid "Serial" msgstr "" -#: netbox/dcim/choices.py:1459 +#: netbox/dcim/choices.py:1461 msgid "Coaxial" msgstr "" -#: netbox/dcim/choices.py:1480 +#: netbox/dcim/choices.py:1482 msgid "Stacking" msgstr "" -#: netbox/dcim/choices.py:1532 +#: netbox/dcim/choices.py:1537 msgid "Half" msgstr "" -#: netbox/dcim/choices.py:1533 +#: netbox/dcim/choices.py:1538 msgid "Full" msgstr "" -#: netbox/dcim/choices.py:1534 netbox/netbox/preferences.py:32 +#: netbox/dcim/choices.py:1539 netbox/netbox/preferences.py:32 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "" -#: netbox/dcim/choices.py:1546 +#: netbox/dcim/choices.py:1551 msgid "Access" msgstr "" -#: netbox/dcim/choices.py:1547 netbox/ipam/tables/vlans.py:148 +#: netbox/dcim/choices.py:1552 netbox/ipam/tables/vlans.py:148 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "" -#: netbox/dcim/choices.py:1548 +#: netbox/dcim/choices.py:1553 msgid "Tagged (All)" msgstr "" -#: netbox/dcim/choices.py:1549 netbox/templates/ipam/vlan_edit.html:26 +#: netbox/dcim/choices.py:1554 netbox/templates/ipam/vlan_edit.html:26 msgid "Q-in-Q (802.1ad)" msgstr "" -#: netbox/dcim/choices.py:1578 +#: netbox/dcim/choices.py:1583 msgid "IEEE Standard" msgstr "" -#: netbox/dcim/choices.py:1589 +#: netbox/dcim/choices.py:1594 msgid "Passive 24V (2-pair)" msgstr "" -#: netbox/dcim/choices.py:1590 +#: netbox/dcim/choices.py:1595 msgid "Passive 24V (4-pair)" msgstr "" -#: netbox/dcim/choices.py:1591 +#: netbox/dcim/choices.py:1596 msgid "Passive 48V (2-pair)" msgstr "" -#: netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1597 msgid "Passive 48V (4-pair)" msgstr "" -#: netbox/dcim/choices.py:1665 +#: netbox/dcim/choices.py:1670 msgid "Copper" msgstr "" -#: netbox/dcim/choices.py:1688 +#: netbox/dcim/choices.py:1693 msgid "Fiber Optic" msgstr "" -#: netbox/dcim/choices.py:1724 netbox/dcim/choices.py:1938 +#: netbox/dcim/choices.py:1729 netbox/dcim/choices.py:1943 msgid "USB" msgstr "" -#: netbox/dcim/choices.py:1780 +#: netbox/dcim/choices.py:1785 msgid "Single" msgstr "" -#: netbox/dcim/choices.py:1782 +#: netbox/dcim/choices.py:1787 msgid "1C1P" msgstr "" -#: netbox/dcim/choices.py:1783 +#: netbox/dcim/choices.py:1788 msgid "1C2P" msgstr "" -#: netbox/dcim/choices.py:1784 +#: netbox/dcim/choices.py:1789 msgid "1C4P" msgstr "" -#: netbox/dcim/choices.py:1785 +#: netbox/dcim/choices.py:1790 msgid "1C6P" msgstr "" -#: netbox/dcim/choices.py:1786 +#: netbox/dcim/choices.py:1791 msgid "1C8P" msgstr "" -#: netbox/dcim/choices.py:1787 +#: netbox/dcim/choices.py:1792 msgid "1C12P" msgstr "" -#: netbox/dcim/choices.py:1788 +#: netbox/dcim/choices.py:1793 msgid "1C16P" msgstr "" -#: netbox/dcim/choices.py:1792 +#: netbox/dcim/choices.py:1797 msgid "Trunk" msgstr "" -#: netbox/dcim/choices.py:1794 +#: netbox/dcim/choices.py:1799 msgid "2C1P trunk" msgstr "" -#: netbox/dcim/choices.py:1795 +#: netbox/dcim/choices.py:1800 msgid "2C2P trunk" msgstr "" -#: netbox/dcim/choices.py:1796 +#: netbox/dcim/choices.py:1801 msgid "2C4P trunk" msgstr "" -#: netbox/dcim/choices.py:1797 +#: netbox/dcim/choices.py:1802 msgid "2C4P trunk (shuffle)" msgstr "" -#: netbox/dcim/choices.py:1798 +#: netbox/dcim/choices.py:1803 msgid "2C6P trunk" msgstr "" -#: netbox/dcim/choices.py:1799 +#: netbox/dcim/choices.py:1804 msgid "2C8P trunk" msgstr "" -#: netbox/dcim/choices.py:1800 +#: netbox/dcim/choices.py:1805 msgid "2C12P trunk" msgstr "" -#: netbox/dcim/choices.py:1801 +#: netbox/dcim/choices.py:1806 msgid "4C1P trunk" msgstr "" -#: netbox/dcim/choices.py:1802 +#: netbox/dcim/choices.py:1807 msgid "4C2P trunk" msgstr "" -#: netbox/dcim/choices.py:1803 +#: netbox/dcim/choices.py:1808 msgid "4C4P trunk" msgstr "" -#: netbox/dcim/choices.py:1804 +#: netbox/dcim/choices.py:1809 msgid "4C4P trunk (shuffle)" msgstr "" -#: netbox/dcim/choices.py:1805 +#: netbox/dcim/choices.py:1810 msgid "4C6P trunk" msgstr "" -#: netbox/dcim/choices.py:1806 +#: netbox/dcim/choices.py:1811 msgid "4C8P trunk" msgstr "" -#: netbox/dcim/choices.py:1807 +#: netbox/dcim/choices.py:1812 msgid "8C4P trunk" msgstr "" -#: netbox/dcim/choices.py:1811 +#: netbox/dcim/choices.py:1816 msgid "Breakout" msgstr "" -#: netbox/dcim/choices.py:1813 +#: netbox/dcim/choices.py:1818 msgid "1C4P:4C1P breakout" msgstr "" -#: netbox/dcim/choices.py:1814 +#: netbox/dcim/choices.py:1819 msgid "1C6P:6C1P breakout" msgstr "" -#: netbox/dcim/choices.py:1815 +#: netbox/dcim/choices.py:1820 msgid "2C4P:8C1P breakout (shuffle)" msgstr "" -#: netbox/dcim/choices.py:1873 +#: netbox/dcim/choices.py:1878 msgid "Copper - Twisted Pair (UTP/STP)" msgstr "" -#: netbox/dcim/choices.py:1887 +#: netbox/dcim/choices.py:1892 msgid "Copper - Twinax (DAC)" msgstr "" -#: netbox/dcim/choices.py:1894 +#: netbox/dcim/choices.py:1899 msgid "Copper - Coaxial" msgstr "" -#: netbox/dcim/choices.py:1909 +#: netbox/dcim/choices.py:1914 msgid "Fiber - Multimode" msgstr "" -#: netbox/dcim/choices.py:1920 +#: netbox/dcim/choices.py:1925 msgid "Fiber - Single-mode" msgstr "" -#: netbox/dcim/choices.py:1928 +#: netbox/dcim/choices.py:1933 msgid "Fiber - Other" msgstr "" -#: netbox/dcim/choices.py:1953 netbox/dcim/forms/filtersets.py:1402 +#: netbox/dcim/choices.py:1958 netbox/dcim/forms/filtersets.py:1402 msgid "Connected" msgstr "" -#: netbox/dcim/choices.py:1972 netbox/netbox/choices.py:177 +#: netbox/dcim/choices.py:1977 netbox/netbox/choices.py:177 msgid "Kilometers" msgstr "" -#: netbox/dcim/choices.py:1973 netbox/netbox/choices.py:178 +#: netbox/dcim/choices.py:1978 netbox/netbox/choices.py:178 #: netbox/templates/dcim/cable_trace.html:65 msgid "Meters" msgstr "" -#: netbox/dcim/choices.py:1974 +#: netbox/dcim/choices.py:1979 msgid "Centimeters" msgstr "" -#: netbox/dcim/choices.py:1975 netbox/netbox/choices.py:179 +#: netbox/dcim/choices.py:1980 netbox/netbox/choices.py:179 msgid "Miles" msgstr "" -#: netbox/dcim/choices.py:1976 netbox/netbox/choices.py:180 +#: netbox/dcim/choices.py:1981 netbox/netbox/choices.py:180 #: netbox/templates/dcim/cable_trace.html:66 msgid "Feet" msgstr "" -#: netbox/dcim/choices.py:2024 +#: netbox/dcim/choices.py:2029 msgid "Redundant" msgstr "" -#: netbox/dcim/choices.py:2045 +#: netbox/dcim/choices.py:2050 msgid "Single phase" msgstr "" -#: netbox/dcim/choices.py:2046 +#: netbox/dcim/choices.py:2051 msgid "Three-phase" msgstr "" -#: netbox/dcim/choices.py:2062 netbox/extras/choices.py:53 +#: netbox/dcim/choices.py:2067 netbox/extras/choices.py:53 #: netbox/netbox/preferences.py:45 netbox/netbox/preferences.py:70 -#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 -#: netbox/wireless/choices.py:27 +#: netbox/templates/extras/customfield/attrs/search_weight.html:1 +#: netbox/vpn/choices.py:20 netbox/wireless/choices.py:27 msgid "Disabled" msgstr "" -#: netbox/dcim/choices.py:2063 +#: netbox/dcim/choices.py:2068 msgid "Faulty" msgstr "" @@ -4066,7 +4029,7 @@ msgstr "" #: netbox/dcim/forms/bulk_create.py:41 netbox/extras/forms/filtersets.py:491 #: netbox/extras/forms/model_forms.py:606 #: netbox/extras/forms/model_forms.py:691 -#: netbox/extras/forms/model_forms.py:743 netbox/extras/ui/panels.py:69 +#: netbox/extras/forms/model_forms.py:743 netbox/extras/ui/panels.py:108 #: netbox/netbox/forms/bulk_import.py:27 netbox/netbox/forms/mixins.py:131 #: netbox/netbox/tables/columns.py:495 #: netbox/templates/circuits/inc/circuit_termination.html:29 @@ -4205,11 +4168,6 @@ msgstr "" #: netbox/extras/forms/filtersets.py:74 netbox/extras/forms/filtersets.py:170 #: netbox/extras/forms/filtersets.py:266 netbox/extras/forms/filtersets.py:297 #: netbox/ipam/forms/bulk_edit.py:162 -#: netbox/templates/extras/configcontext.html:17 -#: netbox/templates/extras/customlink.html:25 -#: netbox/templates/extras/savedfilter.html:33 -#: netbox/templates/extras/tableconfig.html:41 -#: netbox/templates/extras/tag.html:32 msgid "Weight" msgstr "" @@ -4242,7 +4200,7 @@ msgstr "" #: netbox/dcim/views.py:887 netbox/dcim/views.py:1019 #: netbox/extras/tables/tables.py:278 #: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 -#: netbox/templates/extras/imageattachment.html:40 +#: netbox/templates/extras/panels/imageattachment_file.html:14 msgid "Dimensions" msgstr "" @@ -4346,8 +4304,7 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1215 netbox/dcim/forms/model_forms.py:444 #: netbox/dcim/forms/model_forms.py:457 netbox/dcim/tables/modules.py:43 #: netbox/extras/forms/filtersets.py:413 netbox/extras/forms/model_forms.py:626 -#: netbox/extras/tables/tables.py:627 netbox/templates/account/base.html:7 -#: netbox/templates/extras/configcontext.html:21 +#: netbox/extras/tables/tables.py:628 netbox/templates/account/base.html:7 #: netbox/templates/inc/user_menu.html:38 netbox/vpn/forms/bulk_edit.py:213 #: netbox/vpn/forms/filtersets.py:203 netbox/vpn/forms/model_forms.py:378 msgid "Profile" @@ -4458,7 +4415,7 @@ msgstr "" #: netbox/dcim/forms/object_create.py:48 #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/panels/component_inventory_items.html:9 -#: netbox/templates/extras/customfield.html:26 +#: netbox/templates/extras/panels/customfieldchoiceset_choices.html:9 #: netbox/templates/generic/bulk_import.html:193 msgid "Label" msgstr "" @@ -5409,8 +5366,7 @@ msgstr "" #: netbox/dcim/forms/filtersets.py:1597 netbox/extras/forms/bulk_edit.py:421 #: netbox/extras/forms/bulk_import.py:300 netbox/extras/forms/filtersets.py:583 -#: netbox/extras/forms/model_forms.py:807 netbox/extras/tables/tables.py:755 -#: netbox/templates/extras/journalentry.html:30 +#: netbox/extras/forms/model_forms.py:807 netbox/extras/tables/tables.py:756 msgid "Kind" msgstr "" @@ -7415,7 +7371,7 @@ msgstr "" #: netbox/dcim/tables/devices.py:67 netbox/dcim/tables/devices.py:111 #: netbox/dcim/tables/racks.py:136 netbox/dcim/tables/sites.py:84 -#: netbox/dcim/tables/sites.py:116 netbox/extras/tables/tables.py:720 +#: netbox/dcim/tables/sites.py:116 netbox/extras/tables/tables.py:721 #: netbox/netbox/navigation/menu.py:72 netbox/netbox/navigation/menu.py:76 #: netbox/netbox/navigation/menu.py:78 #: netbox/virtualization/forms/model_forms.py:116 @@ -7430,8 +7386,7 @@ msgid "VMs" msgstr "" #: netbox/dcim/tables/devices.py:105 netbox/dcim/tables/devices.py:225 -#: netbox/extras/forms/model_forms.py:754 -#: netbox/templates/extras/configtemplate.html:10 +#: netbox/extras/forms/model_forms.py:754 netbox/extras/ui/panels.py:465 #: netbox/templates/extras/object_render_config.html:12 #: netbox/templates/extras/object_render_config.html:15 #: netbox/virtualization/tables/virtualmachines.py:78 @@ -7683,7 +7638,7 @@ msgid "Module Types" msgstr "" #: netbox/dcim/tables/devicetypes.py:58 netbox/extras/forms/filtersets.py:461 -#: netbox/extras/forms/model_forms.py:661 netbox/extras/tables/tables.py:715 +#: netbox/extras/forms/model_forms.py:661 netbox/extras/tables/tables.py:716 #: netbox/netbox/navigation/menu.py:81 msgid "Platforms" msgstr "" @@ -7972,8 +7927,7 @@ msgid "Application Services" msgstr "" #: netbox/dcim/views.py:2751 netbox/extras/forms/filtersets.py:402 -#: netbox/extras/forms/model_forms.py:701 -#: netbox/templates/extras/configcontext.html:10 +#: netbox/extras/forms/model_forms.py:701 netbox/extras/ui/panels.py:440 #: netbox/virtualization/forms/model_forms.py:225 #: netbox/virtualization/views.py:493 msgid "Config Context" @@ -7983,7 +7937,7 @@ msgstr "" msgid "Render Config" msgstr "" -#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:725 +#: netbox/dcim/views.py:2775 netbox/extras/tables/tables.py:726 #: netbox/netbox/navigation/menu.py:259 netbox/netbox/navigation/menu.py:261 #: netbox/virtualization/views.py:278 msgid "Virtual Machines" @@ -8237,8 +8191,7 @@ msgid "White" msgstr "" #: netbox/extras/choices.py:249 netbox/extras/forms/model_forms.py:447 -#: netbox/extras/forms/model_forms.py:524 -#: netbox/templates/extras/webhook.html:10 +#: netbox/extras/forms/model_forms.py:524 netbox/extras/ui/panels.py:334 msgid "Webhook" msgstr "" @@ -8423,7 +8376,7 @@ msgid "Tenant group (slug)" msgstr "" #: netbox/extras/filtersets.py:805 netbox/extras/forms/model_forms.py:589 -#: netbox/templates/extras/tag.html:11 +#: netbox/extras/ui/panels.py:396 msgid "Tag" msgstr "" @@ -8436,29 +8389,30 @@ msgid "Has local config context data" msgstr "" #: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/filtersets.py:70 +#: netbox/extras/ui/panels.py:135 msgid "Group name" msgstr "" #: netbox/extras/forms/bulk_edit.py:47 netbox/extras/forms/filtersets.py:78 #: netbox/extras/tables/tables.py:83 -#: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:149 msgid "Required" msgstr "" #: netbox/extras/forms/bulk_edit.py:52 netbox/extras/forms/filtersets.py:85 +#: netbox/extras/ui/panels.py:138 msgid "Must be unique" msgstr "" #: netbox/extras/forms/bulk_edit.py:65 netbox/extras/forms/bulk_import.py:66 #: netbox/extras/forms/filtersets.py:99 -#: netbox/extras/models/customfields.py:237 +#: netbox/extras/models/customfields.py:237 netbox/extras/ui/panels.py:160 msgid "UI visible" msgstr "" #: netbox/extras/forms/bulk_edit.py:70 netbox/extras/forms/bulk_import.py:72 #: netbox/extras/forms/filtersets.py:104 -#: netbox/extras/models/customfields.py:244 +#: netbox/extras/models/customfields.py:244 netbox/extras/ui/panels.py:161 msgid "UI editable" msgstr "" @@ -8467,10 +8421,12 @@ msgid "Is cloneable" msgstr "" #: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:114 +#: netbox/extras/ui/panels.py:167 msgid "Minimum value" msgstr "" #: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:118 +#: netbox/extras/ui/panels.py:168 msgid "Maximum value" msgstr "" @@ -8479,8 +8435,7 @@ msgid "Validation regex" msgstr "" #: netbox/extras/forms/bulk_edit.py:95 netbox/extras/forms/filtersets.py:50 -#: netbox/extras/forms/model_forms.py:87 -#: netbox/templates/extras/customfield.html:70 +#: netbox/extras/forms/model_forms.py:87 netbox/extras/ui/panels.py:152 msgid "Behavior" msgstr "" @@ -8494,7 +8449,8 @@ msgstr "" #: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:377 #: netbox/extras/forms/filtersets.py:203 netbox/extras/forms/filtersets.py:526 -#: netbox/extras/models/mixins.py:99 +#: netbox/extras/models/mixins.py:99 netbox/extras/ui/panels.py:243 +#: netbox/extras/ui/panels.py:469 msgid "MIME type" msgstr "" @@ -8516,30 +8472,29 @@ msgstr "" #: netbox/extras/forms/bulk_edit.py:200 netbox/extras/forms/bulk_edit.py:228 #: netbox/extras/forms/filtersets.py:259 netbox/extras/forms/filtersets.py:290 #: netbox/extras/tables/tables.py:322 netbox/extras/tables/tables.py:359 -#: netbox/templates/extras/savedfilter.html:29 -#: netbox/templates/extras/tableconfig.html:37 msgid "Shared" msgstr "" #: netbox/extras/forms/bulk_edit.py:251 netbox/extras/forms/filtersets.py:320 -#: netbox/extras/models/models.py:193 +#: netbox/extras/models/models.py:193 netbox/extras/ui/panels.py:343 msgid "HTTP method" msgstr "" #: netbox/extras/forms/bulk_edit.py:255 netbox/extras/forms/filtersets.py:314 -#: netbox/templates/extras/webhook.html:30 +#: netbox/extras/ui/panels.py:344 msgid "Payload URL" msgstr "" #: netbox/extras/forms/bulk_edit.py:260 netbox/extras/models/models.py:233 +#: netbox/extras/ui/panels.py:352 msgid "SSL verification" msgstr "" -#: netbox/extras/forms/bulk_edit.py:263 netbox/templates/extras/webhook.html:38 +#: netbox/extras/forms/bulk_edit.py:263 msgid "Secret" msgstr "" -#: netbox/extras/forms/bulk_edit.py:268 +#: netbox/extras/forms/bulk_edit.py:268 netbox/extras/ui/panels.py:353 msgid "CA file path" msgstr "" @@ -8681,9 +8636,9 @@ msgstr "" msgid "The classification of entry" msgstr "" -#: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:758 +#: netbox/extras/forms/bulk_import.py:305 netbox/extras/tables/tables.py:759 #: netbox/netbox/tables/tables.py:295 netbox/netbox/tables/tables.py:310 -#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:220 +#: netbox/netbox/tables/tables.py:333 netbox/netbox/ui/panels.py:221 #: netbox/templates/dcim/htmx/cable_edit.html:99 #: netbox/templates/generic/bulk_edit.html:99 #: netbox/templates/inc/panels/comments.html:5 @@ -8692,12 +8647,12 @@ msgid "Comments" msgstr "" #: netbox/extras/forms/bulk_import.py:318 -#: netbox/extras/forms/model_forms.py:414 netbox/netbox/navigation/menu.py:415 -#: netbox/templates/extras/notificationgroup.html:41 -#: netbox/users/forms/filtersets.py:181 netbox/users/forms/model_forms.py:265 -#: netbox/users/forms/model_forms.py:277 netbox/users/forms/model_forms.py:352 -#: netbox/users/forms/model_forms.py:483 netbox/users/forms/model_forms.py:498 -#: netbox/users/tables.py:136 netbox/users/tables.py:194 +#: netbox/extras/forms/model_forms.py:414 netbox/extras/ui/panels.py:326 +#: netbox/netbox/navigation/menu.py:415 netbox/users/forms/filtersets.py:181 +#: netbox/users/forms/model_forms.py:265 netbox/users/forms/model_forms.py:277 +#: netbox/users/forms/model_forms.py:352 netbox/users/forms/model_forms.py:483 +#: netbox/users/forms/model_forms.py:498 netbox/users/tables.py:136 +#: netbox/users/tables.py:194 msgid "Users" msgstr "" @@ -8706,9 +8661,8 @@ msgid "User names separated by commas, encased with double quotes" msgstr "" #: netbox/extras/forms/bulk_import.py:325 -#: netbox/extras/forms/model_forms.py:409 netbox/netbox/navigation/menu.py:298 -#: netbox/netbox/navigation/menu.py:416 -#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/extras/forms/model_forms.py:409 netbox/extras/ui/panels.py:321 +#: netbox/netbox/navigation/menu.py:298 netbox/netbox/navigation/menu.py:416 #: netbox/tenancy/forms/bulk_edit.py:121 netbox/tenancy/forms/filtersets.py:107 #: netbox/tenancy/forms/model_forms.py:93 netbox/tenancy/tables/contacts.py:57 #: netbox/tenancy/tables/contacts.py:101 netbox/tenancy/ui/panels.py:12 @@ -8752,6 +8706,7 @@ msgid "Content types" msgstr "" #: netbox/extras/forms/filtersets.py:310 netbox/extras/models/models.py:198 +#: netbox/extras/ui/panels.py:345 msgid "HTTP content type" msgstr "" @@ -8816,7 +8771,7 @@ msgstr "" msgid "The type(s) of object that have this custom field" msgstr "" -#: netbox/extras/forms/model_forms.py:63 +#: netbox/extras/forms/model_forms.py:63 netbox/extras/ui/panels.py:144 msgid "Default value" msgstr "" @@ -8825,7 +8780,6 @@ msgid "Type of the related object (for object/multi-object fields only)" msgstr "" #: netbox/extras/forms/model_forms.py:72 -#: netbox/templates/extras/customfield.html:60 msgid "Related object filter" msgstr "" @@ -8833,8 +8787,7 @@ msgstr "" msgid "Specify query parameters as a JSON object." msgstr "" -#: netbox/extras/forms/model_forms.py:84 -#: netbox/templates/extras/customfield.html:10 +#: netbox/extras/forms/model_forms.py:84 netbox/extras/ui/panels.py:130 msgid "Custom Field" msgstr "" @@ -8860,12 +8813,11 @@ msgid "" "choice by appending it with a colon. Example:" msgstr "" -#: netbox/extras/forms/model_forms.py:189 +#: netbox/extras/forms/model_forms.py:189 netbox/extras/ui/panels.py:197 msgid "Custom Field Choice Set" msgstr "" -#: netbox/extras/forms/model_forms.py:244 -#: netbox/templates/extras/customlink.html:10 +#: netbox/extras/forms/model_forms.py:244 netbox/extras/ui/panels.py:224 msgid "Custom Link" msgstr "" @@ -8891,8 +8843,7 @@ msgstr "" msgid "Template code" msgstr "" -#: netbox/extras/forms/model_forms.py:279 -#: netbox/templates/extras/exporttemplate.html:12 +#: netbox/extras/forms/model_forms.py:279 netbox/extras/ui/panels.py:239 msgid "Export Template" msgstr "" @@ -8901,14 +8852,13 @@ msgstr "" msgid "Template content is populated from the remote source selected below." msgstr "" -#: netbox/extras/forms/model_forms.py:318 netbox/netbox/forms/mixins.py:103 -#: netbox/templates/extras/savedfilter.html:10 +#: netbox/extras/forms/model_forms.py:318 netbox/extras/ui/panels.py:254 +#: netbox/netbox/forms/mixins.py:103 msgid "Saved Filter" msgstr "" -#: netbox/extras/forms/model_forms.py:344 +#: netbox/extras/forms/model_forms.py:344 netbox/extras/ui/panels.py:299 #: netbox/templates/account/preferences.html:50 -#: netbox/templates/extras/tableconfig.html:62 msgid "Ordering" msgstr "" @@ -8930,13 +8880,11 @@ msgstr "" msgid "A notification group specify at least one user or group." msgstr "" -#: netbox/extras/forms/model_forms.py:450 -#: netbox/templates/extras/webhook.html:23 +#: netbox/extras/forms/model_forms.py:450 netbox/extras/ui/panels.py:341 msgid "HTTP Request" msgstr "" -#: netbox/extras/forms/model_forms.py:452 -#: netbox/templates/extras/webhook.html:44 +#: netbox/extras/forms/model_forms.py:452 netbox/extras/ui/panels.py:350 msgid "SSL" msgstr "" @@ -8954,8 +8902,7 @@ msgid "" "\">JSON format." msgstr "" -#: netbox/extras/forms/model_forms.py:488 -#: netbox/templates/extras/eventrule.html:10 +#: netbox/extras/forms/model_forms.py:488 netbox/extras/ui/panels.py:361 msgid "Event Rule" msgstr "" @@ -8967,8 +8914,7 @@ msgstr "" msgid "Notification group" msgstr "" -#: netbox/extras/forms/model_forms.py:612 -#: netbox/templates/extras/configcontextprofile.html:10 +#: netbox/extras/forms/model_forms.py:612 netbox/extras/ui/panels.py:429 msgid "Config Context Profile" msgstr "" @@ -9562,7 +9508,7 @@ msgstr "" msgid "Enable SSL certificate verification. Disable with caution!" msgstr "" -#: netbox/extras/models/models.py:240 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:240 msgid "CA File Path" msgstr "" @@ -9861,9 +9807,8 @@ msgstr "" #: netbox/extras/tables/tables.py:80 netbox/extras/tables/tables.py:185 #: netbox/extras/tables/tables.py:214 netbox/extras/tables/tables.py:316 -#: netbox/extras/tables/tables.py:517 netbox/extras/tables/tables.py:555 -#: netbox/templates/extras/customfield.html:105 -#: netbox/templates/extras/eventrule.html:27 +#: netbox/extras/tables/tables.py:518 netbox/extras/tables/tables.py:556 +#: netbox/extras/ui/panels.py:122 netbox/extras/ui/panels.py:178 #: netbox/templates/users/panels/object_types.html:3 netbox/users/tables.py:110 msgid "Object Types" msgstr "" @@ -9885,7 +9830,6 @@ msgid "Related Object Type" msgstr "" #: netbox/extras/tables/tables.py:104 -#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "" @@ -9894,12 +9838,10 @@ msgid "Is Cloneable" msgstr "" #: netbox/extras/tables/tables.py:116 -#: netbox/templates/extras/customfield.html:118 msgid "Minimum Value" msgstr "" #: netbox/extras/tables/tables.py:119 -#: netbox/templates/extras/customfield.html:122 msgid "Maximum Value" msgstr "" @@ -9910,8 +9852,8 @@ msgstr "" #: netbox/extras/tables/tables.py:126 netbox/extras/tables/tables.py:167 #: netbox/extras/tables/tables.py:196 netbox/extras/tables/tables.py:243 #: netbox/extras/tables/tables.py:327 netbox/extras/tables/tables.py:487 -#: netbox/extras/tables/tables.py:529 netbox/extras/tables/tables.py:559 -#: netbox/extras/tables/tables.py:650 netbox/extras/tables/tables.py:702 +#: netbox/extras/tables/tables.py:530 netbox/extras/tables/tables.py:560 +#: netbox/extras/tables/tables.py:651 netbox/extras/tables/tables.py:703 #: netbox/netbox/forms/mixins.py:162 netbox/netbox/forms/mixins.py:187 #: netbox/netbox/tables/tables.py:292 netbox/netbox/tables/tables.py:307 #: netbox/netbox/tables/tables.py:322 netbox/templates/generic/object.html:61 @@ -9928,49 +9870,41 @@ msgid "Order Alphabetically" msgstr "" #: netbox/extras/tables/tables.py:191 -#: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "" -#: netbox/extras/tables/tables.py:217 netbox/extras/tables/tables.py:688 -#: netbox/templates/extras/configtemplate.html:21 -#: netbox/templates/extras/exporttemplate.html:23 +#: netbox/extras/tables/tables.py:217 netbox/extras/tables/tables.py:689 msgid "MIME Type" msgstr "" -#: netbox/extras/tables/tables.py:220 netbox/extras/tables/tables.py:691 -#: netbox/templates/extras/configtemplate.html:25 -#: netbox/templates/extras/exporttemplate.html:27 +#: netbox/extras/tables/tables.py:220 netbox/extras/tables/tables.py:692 msgid "File Name" msgstr "" -#: netbox/extras/tables/tables.py:223 netbox/extras/tables/tables.py:694 -#: netbox/templates/extras/configtemplate.html:29 -#: netbox/templates/extras/exporttemplate.html:31 +#: netbox/extras/tables/tables.py:223 netbox/extras/tables/tables.py:695 msgid "File Extension" msgstr "" -#: netbox/extras/tables/tables.py:226 netbox/extras/tables/tables.py:697 +#: netbox/extras/tables/tables.py:226 netbox/extras/tables/tables.py:698 msgid "As Attachment" msgstr "" -#: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:609 -#: netbox/extras/tables/tables.py:646 netbox/extras/tables/tables.py:681 +#: netbox/extras/tables/tables.py:239 netbox/extras/tables/tables.py:610 +#: netbox/extras/tables/tables.py:647 netbox/extras/tables/tables.py:682 msgid "Synced" msgstr "" -#: netbox/extras/tables/tables.py:264 -#: netbox/templates/extras/imageattachment.html:57 +#: netbox/extras/tables/tables.py:264 netbox/extras/ui/panels.py:501 msgid "Image" msgstr "" #: netbox/extras/tables/tables.py:273 -#: netbox/templates/extras/imageattachment.html:33 +#: netbox/templates/extras/panels/imageattachment_file.html:7 msgid "Filename" msgstr "" #: netbox/extras/tables/tables.py:292 -#: netbox/templates/extras/imageattachment.html:44 +#: netbox/templates/extras/panels/imageattachment_file.html:18 #: netbox/virtualization/tables/virtualmachines.py:170 msgid "Size" msgstr "" @@ -9987,29 +9921,28 @@ msgstr "" msgid "SSL Validation" msgstr "" -#: netbox/extras/tables/tables.py:523 netbox/templates/extras/eventrule.html:37 +#: netbox/extras/tables/tables.py:524 netbox/extras/ui/panels.py:370 msgid "Event Types" msgstr "" -#: netbox/extras/tables/tables.py:684 -#: netbox/templates/extras/configtemplate.html:66 +#: netbox/extras/tables/tables.py:685 msgid "Auto Sync Enabled" msgstr "" -#: netbox/extras/tables/tables.py:710 netbox/netbox/navigation/menu.py:80 +#: netbox/extras/tables/tables.py:711 netbox/netbox/navigation/menu.py:80 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "" -#: netbox/extras/tables/tables.py:763 +#: netbox/extras/tables/tables.py:764 msgid "Comments (Short)" msgstr "" -#: netbox/extras/tables/tables.py:782 netbox/extras/tables/tables.py:834 +#: netbox/extras/tables/tables.py:783 netbox/extras/tables/tables.py:835 msgid "Line" msgstr "" -#: netbox/extras/tables/tables.py:837 +#: netbox/extras/tables/tables.py:838 msgid "Method" msgstr "" @@ -10021,7 +9954,7 @@ msgstr "" msgid "Please try reconfiguring the widget, or remove it from your dashboard." msgstr "" -#: netbox/extras/ui/panels.py:20 netbox/netbox/navigation/menu.py:351 +#: netbox/extras/ui/panels.py:59 netbox/netbox/navigation/menu.py:351 #: netbox/templates/circuits/panels/circuit_circuit_termination.html:41 #: netbox/templates/dcim/device_edit.html:113 #: netbox/templates/dcim/htmx/cable_edit.html:92 @@ -10034,11 +9967,78 @@ msgstr "" msgid "Custom Fields" msgstr "" -#: netbox/extras/ui/panels.py:49 +#: netbox/extras/ui/panels.py:88 #: netbox/templates/inc/panels/image_attachments.html:10 msgid "Attach an image" msgstr "" +#: netbox/extras/ui/panels.py:139 +msgid "Cloneable" +msgstr "" + +#: netbox/extras/ui/panels.py:159 +msgid "Display weight" +msgstr "" + +#: netbox/extras/ui/panels.py:165 +msgid "Validation Rules" +msgstr "" + +#: netbox/extras/ui/panels.py:171 +msgid "Regular expression" +msgstr "" + +#: netbox/extras/ui/panels.py:183 netbox/netbox/ui/panels.py:268 +#: netbox/templates/inc/panels/related_objects.html:5 +msgid "Related Objects" +msgstr "" + +#: netbox/extras/ui/panels.py:203 +msgid "Used by" +msgstr "" + +#: netbox/extras/ui/panels.py:246 netbox/extras/ui/panels.py:472 +#: netbox/templates/dcim/trace/attachment.html:5 +msgid "Attachment" +msgstr "" + +#: netbox/extras/ui/panels.py:266 netbox/extras/views.py:238 +#: netbox/extras/views.py:308 +msgid "Assigned Models" +msgstr "" + +#: netbox/extras/ui/panels.py:274 +msgid "Table Config" +msgstr "" + +#: netbox/extras/ui/panels.py:288 +msgid "Columns Displayed" +msgstr "" + +#: netbox/extras/ui/panels.py:313 +msgid "Notification Group" +msgstr "" + +#: netbox/extras/ui/panels.py:410 +msgid "Allowed Object Types" +msgstr "" + +#: netbox/extras/ui/panels.py:415 +msgid "Tagged Item Types" +msgstr "" + +#: netbox/extras/ui/panels.py:487 +msgid "Image Attachment" +msgstr "" + +#: netbox/extras/ui/panels.py:489 +msgid "Parent object" +msgstr "" + +#: netbox/extras/ui/panels.py:509 +msgid "Journal Entry" +msgstr "" + #: netbox/extras/validators.py:15 #, python-format msgid "Ensure this value is equal to %(limit_value)s." @@ -10076,32 +10076,68 @@ msgstr "" msgid "Invalid attribute \"{name}\" for {model}" msgstr "" -#: netbox/extras/views.py:1127 +#: netbox/extras/views.py:241 +msgid "Link Text" +msgstr "" + +#: netbox/extras/views.py:242 +msgid "Link URL" +msgstr "" + +#: netbox/extras/views.py:309 netbox/extras/views.py:1182 +msgid "Environment Parameters" +msgstr "" + +#: netbox/extras/views.py:312 netbox/extras/views.py:1185 +msgid "Template" +msgstr "" + +#: netbox/extras/views.py:749 +msgid "Additional Headers" +msgstr "" + +#: netbox/extras/views.py:750 +msgid "Body Template" +msgstr "" + +#: netbox/extras/views.py:818 +msgid "Conditions" +msgstr "" + +#: netbox/extras/views.py:891 +msgid "Tagged Objects" +msgstr "" + +#: netbox/extras/views.py:982 +msgid "JSON Schema" +msgstr "" + +#: netbox/extras/views.py:1278 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "" -#: netbox/extras/views.py:1290 +#: netbox/extras/views.py:1462 msgid "Your dashboard has been reset." msgstr "" -#: netbox/extras/views.py:1336 +#: netbox/extras/views.py:1508 msgid "Added widget: " msgstr "" -#: netbox/extras/views.py:1377 +#: netbox/extras/views.py:1549 msgid "Updated widget: " msgstr "" -#: netbox/extras/views.py:1413 +#: netbox/extras/views.py:1585 msgid "Deleted widget: " msgstr "" -#: netbox/extras/views.py:1415 +#: netbox/extras/views.py:1587 msgid "Error deleting widget: " msgstr "" -#: netbox/extras/views.py:1530 +#: netbox/extras/views.py:1702 msgid "Unable to run script: RQ worker process not running." msgstr "" @@ -11698,8 +11734,9 @@ msgstr "" msgid "Dark Grey" msgstr "" -#: netbox/netbox/choices.py:103 netbox/templates/extras/script_result.html:56 -#: netbox/templates/extras/tableconfig.html:76 +#: netbox/netbox/choices.py:103 +#: netbox/templates/extras/panels/tableconfig_ordering.html:19 +#: netbox/templates/extras/script_result.html:56 msgid "Default" msgstr "" @@ -12702,6 +12739,7 @@ msgid "Field" msgstr "" #: netbox/netbox/tables/tables.py:351 +#: netbox/templates/extras/panels/customfieldchoiceset_choices.html:8 msgid "Value" msgstr "" @@ -12729,11 +12767,6 @@ msgstr "" msgid "GPS coordinates" msgstr "" -#: netbox/netbox/ui/panels.py:267 -#: netbox/templates/inc/panels/related_objects.html:5 -msgid "Related Objects" -msgstr "" - #: netbox/netbox/views/generic/bulk_views.py:124 #, python-brace-format msgid "" @@ -12971,7 +13004,6 @@ msgid "Toggle All" msgstr "" #: netbox/templates/account/preferences.html:49 -#: netbox/templates/extras/tableconfig.html:25 msgid "Table" msgstr "" @@ -13027,13 +13059,9 @@ msgstr "" #: netbox/templates/dcim/panels/installed_module.html:31 #: netbox/templates/dcim/panels/interface_wireless_lans.html:20 #: netbox/templates/dcim/panels/module_type_attributes.html:26 -#: netbox/templates/extras/configcontext.html:46 -#: netbox/templates/extras/configtemplate.html:81 -#: netbox/templates/extras/eventrule.html:66 -#: netbox/templates/extras/exporttemplate.html:60 #: netbox/templates/extras/htmx/script_result.html:70 -#: netbox/templates/extras/webhook.html:65 -#: netbox/templates/extras/webhook.html:75 +#: netbox/templates/extras/panels/configcontext_assignment.html:14 +#: netbox/templates/extras/panels/customfield_related_objects.html:18 #: netbox/templates/inc/panel_table.html:13 #: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/inc/panels/related_objects.html:22 @@ -13041,6 +13069,7 @@ msgstr "" #: netbox/templates/ipam/panels/fhrp_groups.html:42 #: netbox/templates/ui/panels/comments.html:9 #: netbox/templates/ui/panels/related_objects.html:22 +#: netbox/templates/ui/panels/text_code.html:12 #: netbox/templates/users/panels/object_types.html:8 msgid "None" msgstr "" @@ -13203,7 +13232,7 @@ msgid "Changed" msgstr "" #: netbox/templates/core/datafile/attrs/size.html:1 -#: netbox/templates/extras/imageattachment.html:46 +#: netbox/templates/extras/panels/imageattachment_file.html:20 msgid "bytes" msgstr "" @@ -13256,12 +13285,11 @@ msgid "Job retention" msgstr "" #: netbox/templates/core/inc/datafile_panel.html:23 -#: netbox/templates/extras/configtemplate.html:53 +#: netbox/templates/extras/configtemplate/attrs/data_file.html:6 msgid "The data file associated with this object has been deleted" msgstr "" #: netbox/templates/core/inc/datafile_panel.html:32 -#: netbox/templates/extras/configtemplate.html:62 msgid "Data Synced" msgstr "" @@ -13937,12 +13965,6 @@ msgstr "" msgid "Add Site" msgstr "" -#: netbox/templates/dcim/trace/attachment.html:5 -#: netbox/templates/extras/configtemplate.html:33 -#: netbox/templates/extras/exporttemplate.html:35 -msgid "Attachment" -msgstr "" - #: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" @@ -14072,81 +14094,9 @@ msgid "" "for %(sql_query)s." msgstr "" -#: netbox/templates/extras/configcontextprofile.html:30 -msgid "JSON Schema" -msgstr "" - -#: netbox/templates/extras/configtemplate.html:76 -#: netbox/templates/extras/exporttemplate.html:55 -msgid "Environment Parameters" -msgstr "" - -#: netbox/templates/extras/configtemplate.html:91 -#: netbox/templates/extras/exporttemplate.html:70 -msgid "Template" -msgstr "" - -#: netbox/templates/extras/customfield.html:30 -#: netbox/templates/extras/customlink.html:21 -msgid "Group Name" -msgstr "" - -#: netbox/templates/extras/customfield.html:42 -msgid "Must be Unique" -msgstr "" - -#: netbox/templates/extras/customfield.html:46 -msgid "Cloneable" -msgstr "" - -#: netbox/templates/extras/customfield.html:56 -msgid "Default Value" -msgstr "" - -#: netbox/templates/extras/customfield.html:73 -msgid "Search Weight" -msgstr "" - -#: netbox/templates/extras/customfield.html:83 -msgid "Filter Logic" -msgstr "" - -#: netbox/templates/extras/customfield.html:87 -msgid "Display Weight" -msgstr "" - -#: netbox/templates/extras/customfield.html:91 -msgid "UI Visible" -msgstr "" - -#: netbox/templates/extras/customfield.html:95 -msgid "UI Editable" -msgstr "" - -#: netbox/templates/extras/customfield.html:115 -msgid "Validation Rules" -msgstr "" - -#: netbox/templates/extras/customfield.html:126 -msgid "Regular Expression" -msgstr "" - -#: netbox/templates/extras/customlink.html:29 -msgid "Button Class" -msgstr "" - -#: netbox/templates/extras/customlink.html:39 -#: netbox/templates/extras/exporttemplate.html:45 -#: netbox/templates/extras/savedfilter.html:39 -msgid "Assigned Models" -msgstr "" - -#: netbox/templates/extras/customlink.html:52 -msgid "Link Text" -msgstr "" - -#: netbox/templates/extras/customlink.html:58 -msgid "Link URL" +#: netbox/templates/extras/customfield/attrs/choice_set.html:1 +#: netbox/templates/generic/bulk_import.html:179 +msgid "choices" msgstr "" #: netbox/templates/extras/dashboard/reset.html:4 netbox/templates/home.html:66 @@ -14211,10 +14161,6 @@ msgstr "" msgid "HTTP" msgstr "" -#: netbox/templates/extras/eventrule.html:61 -msgid "Conditions" -msgstr "" - #: netbox/templates/extras/htmx/script_result.html:10 msgid "Scheduled for" msgstr "" @@ -14236,14 +14182,6 @@ msgstr "" msgid "Download" msgstr "" -#: netbox/templates/extras/imageattachment.html:10 -msgid "Image Attachment" -msgstr "" - -#: netbox/templates/extras/imageattachment.html:13 -msgid "Parent Object" -msgstr "" - #: netbox/templates/extras/inc/result_pending.html:4 msgid "Loading" msgstr "" @@ -14290,24 +14228,6 @@ msgid "" "an uploaded file or data source." msgstr "" -#: netbox/templates/extras/journalentry.html:15 -msgid "Journal Entry" -msgstr "" - -#: netbox/templates/extras/journalentry.html:26 -msgid "Created By" -msgstr "" - -#: netbox/templates/extras/notificationgroup.html:11 -msgid "Notification Group" -msgstr "" - -#: netbox/templates/extras/notificationgroup.html:36 -#: netbox/templates/extras/notificationgroup.html:46 -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "" - #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" msgstr "" @@ -14360,6 +14280,16 @@ msgstr "" msgid "No configuration template has been assigned." msgstr "" +#: netbox/templates/extras/panels/notificationgroup_groups.html:9 +#: netbox/templates/extras/panels/notificationgroup_users.html:9 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "" + +#: netbox/templates/extras/panels/tag_object_types.html:12 +msgid "Any" +msgstr "" + #: netbox/templates/extras/panels/tags.html:11 #: netbox/templates/inc/panels/tags.html:11 msgid "No tags assigned" @@ -14395,14 +14325,6 @@ msgstr "" msgid "All" msgstr "" -#: netbox/templates/extras/tableconfig.html:10 -msgid "Table Config" -msgstr "" - -#: netbox/templates/extras/tableconfig.html:50 -msgid "Columns Displayed" -msgstr "" - #: netbox/templates/extras/tableconfig_edit.html:8 #: netbox/utilities/templates/helpers/table_config_form.html:8 msgid "Table Configuration" @@ -14420,46 +14342,6 @@ msgstr "" msgid "Move Down" msgstr "" -#: netbox/templates/extras/tag.html:36 -msgid "Tagged Items" -msgstr "" - -#: netbox/templates/extras/tag.html:47 -msgid "Allowed Object Types" -msgstr "" - -#: netbox/templates/extras/tag.html:55 -msgid "Any" -msgstr "" - -#: netbox/templates/extras/tag.html:61 -msgid "Tagged Item Types" -msgstr "" - -#: netbox/templates/extras/tag.html:85 -msgid "Tagged Objects" -msgstr "" - -#: netbox/templates/extras/webhook.html:26 -msgid "HTTP Method" -msgstr "" - -#: netbox/templates/extras/webhook.html:34 -msgid "HTTP Content Type" -msgstr "" - -#: netbox/templates/extras/webhook.html:47 -msgid "SSL Verification" -msgstr "" - -#: netbox/templates/extras/webhook.html:60 -msgid "Additional Headers" -msgstr "" - -#: netbox/templates/extras/webhook.html:70 -msgid "Body Template" -msgstr "" - #: netbox/templates/generic/bulk_add_component.html:29 msgid "Bulk Creation" msgstr "" @@ -14530,10 +14412,6 @@ msgstr "" msgid "Accessor" msgstr "" -#: netbox/templates/generic/bulk_import.html:179 -msgid "choices" -msgstr "" - #: netbox/templates/generic/bulk_import.html:192 msgid "Import Value" msgstr "" From 9492b55f4bddc3b34d52e6297f11e11de5b6a858 Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Wed, 1 Apr 2026 14:18:55 +0200 Subject: [PATCH 37/41] fix(dcim): Fix Virtual Chassis Member add action context Fix context variable references in VirtualChassMembersPanel add action to use 'virtual_chassis' instead of 'object'. Add safe checks for master_id existence to prevent errors when master is not set. Fixes #21810 --- netbox/dcim/ui/panels.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/netbox/dcim/ui/panels.py b/netbox/dcim/ui/panels.py index f75e3d478..74e5dfb60 100644 --- a/netbox/dcim/ui/panels.py +++ b/netbox/dcim/ui/panels.py @@ -420,14 +420,23 @@ class VirtualChassisMembersPanel(panels.ObjectPanel): """ A panel which lists all members of a virtual chassis. """ + template_name = 'dcim/panels/virtual_chassis_members.html' title = _('Virtual Chassis Members') actions = [ actions.AddObject( 'dcim.device', url_params={ - 'site': lambda ctx: ctx['object'].master.site_id if ctx['object'].master else '', - 'rack': lambda ctx: ctx['object'].master.rack_id if ctx['object'].master else '', + 'site': lambda ctx: ( + ctx['virtual_chassis'].master.site_id + if ctx['virtual_chassis'] and ctx['virtual_chassis'].master_id + else '' + ), + 'rack': lambda ctx: ( + ctx['virtual_chassis'].master.rack_id + if ctx['virtual_chassis'] and ctx['virtual_chassis'].master_id + else '' + ), }, ), ] From b73f7f7d00dcb75c33161d659c30f53f7101fe49 Mon Sep 17 00:00:00 2001 From: Artem Kotik Date: Wed, 1 Apr 2026 16:52:38 +0200 Subject: [PATCH 38/41] Fixes #21655: Fix duplicate SQL queries on serializing custom fields (#21750) Co-authored-by: Jason Novinger Co-authored-by: Artem Kotik --- netbox/extras/api/customfields.py | 50 ++++++++++++++++++++++- netbox/extras/models/customfields.py | 2 +- netbox/netbox/api/serializers/features.py | 25 +++++++++++- 3 files changed, 73 insertions(+), 4 deletions(-) diff --git a/netbox/extras/api/customfields.py b/netbox/extras/api/customfields.py index f2368dbf5..2113cd0c0 100644 --- a/netbox/extras/api/customfields.py +++ b/netbox/extras/api/customfields.py @@ -2,7 +2,7 @@ from django.utils.translation import gettext as _ from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import extend_schema_field from rest_framework.fields import Field -from rest_framework.serializers import ValidationError +from rest_framework.serializers import ListSerializer, ValidationError from extras.choices import CustomFieldTypeChoices from extras.constants import CUSTOMFIELD_EMPTY_VALUES @@ -49,8 +49,25 @@ class CustomFieldsDataField(Field): # TODO: Fix circular import from utilities.api import get_serializer_for_model data = {} + cache = self.parent.context.get('cf_object_cache') + for cf in self._get_custom_fields(): - value = cf.deserialize(obj.get(cf.name)) + if cache is not None and cf.type in ( + CustomFieldTypeChoices.TYPE_OBJECT, + CustomFieldTypeChoices.TYPE_MULTIOBJECT, + ): + raw = obj.get(cf.name) + if raw is None: + value = None + elif cf.type == CustomFieldTypeChoices.TYPE_OBJECT: + model = cf.related_object_type.model_class() + value = cache.get((model, raw)) + else: + model = cf.related_object_type.model_class() + value = [cache[(model, pk)] for pk in raw if (model, pk) in cache] or None + else: + value = cf.deserialize(obj.get(cf.name)) + if value is not None and cf.type == CustomFieldTypeChoices.TYPE_OBJECT: serializer = get_serializer_for_model(cf.related_object_type.model_class()) value = serializer(value, nested=True, context=self.parent.context).data @@ -87,3 +104,32 @@ class CustomFieldsDataField(Field): data = {**self.parent.instance.custom_field_data, **data} return data + + +class CustomFieldListSerializer(ListSerializer): + """ + ListSerializer that pre-fetches all OBJECT/MULTIOBJECT custom field related objects + in bulk before per-item serialization. + """ + def to_representation(self, data): + cf_field = self.child.fields.get('custom_fields') + if isinstance(cf_field, CustomFieldsDataField): + object_type_cfs = [ + cf for cf in cf_field._get_custom_fields() + if cf.type in (CustomFieldTypeChoices.TYPE_OBJECT, CustomFieldTypeChoices.TYPE_MULTIOBJECT) + ] + cache = {} + for cf in object_type_cfs: + model = cf.related_object_type.model_class() + pks = set() + for item in data: + raw = item.custom_field_data.get(cf.name) + if raw is not None: + if cf.type == CustomFieldTypeChoices.TYPE_MULTIOBJECT: + pks.update(raw) + else: + pks.add(raw) + for obj in model.objects.filter(pk__in=pks): + cache[(model, obj.pk)] = obj + self.child.context['cf_object_cache'] = cache + return super().to_representation(data) diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index c9cfc4105..f6c2d183c 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -74,7 +74,7 @@ class CustomFieldManager(models.Manager.from_queryset(RestrictedQuerySet)): return custom_fields content_type = ObjectType.objects.get_for_model(model._meta.concrete_model) - custom_fields = self.get_queryset().filter(object_types=content_type) + custom_fields = self.get_queryset().filter(object_types=content_type).select_related('related_object_type') # Populate the request cache to avoid redundant lookups if cache is not None: diff --git a/netbox/netbox/api/serializers/features.py b/netbox/netbox/api/serializers/features.py index 6a89e7b1c..34dce1e16 100644 --- a/netbox/netbox/api/serializers/features.py +++ b/netbox/netbox/api/serializers/features.py @@ -1,7 +1,7 @@ from rest_framework import serializers from rest_framework.fields import CreateOnlyDefault -from extras.api.customfields import CustomFieldDefaultValues, CustomFieldsDataField +from extras.api.customfields import CustomFieldDefaultValues, CustomFieldListSerializer, CustomFieldsDataField from .base import ValidatedModelSerializer from .nested import NestedTagSerializer @@ -23,6 +23,29 @@ class CustomFieldModelSerializer(serializers.Serializer): default=CreateOnlyDefault(CustomFieldDefaultValues()) ) + @classmethod + def many_init(cls, *args, **kwargs): + """ + We can't call super().many_init() and change the outcome because by the time it returns, + the plain ListSerializer is already instantiated. + Because every NetBox serializer defines its own Meta which doesn't inherit from a parent Meta, + this would silently not apply to any real serializer. + Thats why this method replicates many_init from parent and changed the default value for list_serializer_class. + """ + list_kwargs = {} + for key in serializers.LIST_SERIALIZER_KWARGS_REMOVE: + value = kwargs.pop(key, None) + if value is not None: + list_kwargs[key] = value + list_kwargs['child'] = cls(*args, **kwargs) + list_kwargs.update({ + key: value for key, value in kwargs.items() + if key in serializers.LIST_SERIALIZER_KWARGS + }) + meta = getattr(cls, 'Meta', None) + list_serializer_class = getattr(meta, 'list_serializer_class', CustomFieldListSerializer) + return list_serializer_class(*args, **list_kwargs) + class TaggableModelSerializer(serializers.Serializer): """ From b1af9a72186df8f5a2a6602dbf96a6d1314e9254 Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Wed, 1 Apr 2026 18:06:18 +0200 Subject: [PATCH 39/41] fix(dcim): Use hasattr check for virtual_circuit_termination (#21811) Replace direct attribute access with hasattr() to prevent AttributeError when the virtual_circuit_termination relation doesn't exist on the object. Fixes #21808 --- netbox/dcim/ui/panels.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/dcim/ui/panels.py b/netbox/dcim/ui/panels.py index 74e5dfb60..07f9b8357 100644 --- a/netbox/dcim/ui/panels.py +++ b/netbox/dcim/ui/panels.py @@ -541,7 +541,7 @@ class VirtualCircuitPanel(panels.ObjectPanel): def render(self, context): obj = context.get('object') - if not obj or not obj.is_virtual or not obj.virtual_circuit_termination: + if not obj or not obj.is_virtual or not hasattr(obj, 'virtual_circuit_termination'): return '' ctx = self.get_context(context) return render_to_string(self.template_name, ctx, request=ctx.get('request')) From 3ce2bf75b4512d596333eb5ba2e28596f1952e4b Mon Sep 17 00:00:00 2001 From: Johannes Rueschel Date: Wed, 1 Apr 2026 18:25:00 +0200 Subject: [PATCH 40/41] Fixes #21533: Fix missing `family`/`mask_length` in API when creating IP-related objects (#21546) --- netbox/ipam/models/ip.py | 34 +++++++++++++++++++++++-------- netbox/ipam/tests/test_models.py | 35 ++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 9 deletions(-) diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index 6d629d89c..5d11622f6 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -159,9 +159,11 @@ class Aggregate(ContactsMixin, GetAvailablePrefixesMixin, PrimaryModel): @property def family(self): - if self.prefix: - return self.prefix.version - return None + if not self.prefix: + return None + if isinstance(self.prefix, str): + return netaddr.IPNetwork(self.prefix).version + return self.prefix.version @property def ipv6_full(self): @@ -335,11 +337,19 @@ class Prefix(ContactsMixin, GetAvailablePrefixesMixin, CachedScopeMixin, Primary @property def family(self): - return self.prefix.version if self.prefix else None + if not self.prefix: + return None + if isinstance(self.prefix, str): + return netaddr.IPNetwork(self.prefix).version + return self.prefix.version @property def mask_length(self): - return self.prefix.prefixlen if self.prefix else None + if not self.prefix: + return None + if isinstance(self.prefix, str): + return netaddr.IPNetwork(self.prefix).prefixlen + return self.prefix.prefixlen @property def ipv6_full(self): @@ -642,7 +652,11 @@ class IPRange(ContactsMixin, PrimaryModel): @property def family(self): - return self.start_address.version if self.start_address else None + if not self.start_address: + return None + if isinstance(self.start_address, str): + return netaddr.IPAddress(self.start_address.split('/')[0]).version + return self.start_address.version @property def range(self): @@ -990,9 +1004,11 @@ class IPAddress(ContactsMixin, PrimaryModel): @property def family(self): - if self.address: - return self.address.version - return None + if not self.address: + return None + if isinstance(self.address, str): + return netaddr.IPNetwork(self.address).version + return self.address.version @property def is_oob_ip(self): diff --git a/netbox/ipam/tests/test_models.py b/netbox/ipam/tests/test_models.py index 80ac92ef2..e81900ec9 100644 --- a/netbox/ipam/tests/test_models.py +++ b/netbox/ipam/tests/test_models.py @@ -11,6 +11,13 @@ from utilities.data import string_to_ranges class TestAggregate(TestCase): + def test_family_string(self): + # Test property when prefix is a string + agg = Aggregate(prefix='10.0.0.0/8') + self.assertEqual(agg.family, 4) + agg_v6 = Aggregate(prefix='2001:db8::/32') + self.assertEqual(agg_v6.family, 6) + def test_get_utilization(self): rir = RIR.objects.create(name='RIR 1', slug='rir-1') aggregate = Aggregate(prefix=IPNetwork('10.0.0.0/8'), rir=rir) @@ -40,6 +47,13 @@ class TestAggregate(TestCase): class TestIPRange(TestCase): + def test_family_string(self): + # Test property when start_address is a string + ip_range = IPRange(start_address='10.0.0.1/24', end_address='10.0.0.254/24') + self.assertEqual(ip_range.family, 4) + ip_range_v6 = IPRange(start_address='2001:db8::1/64', end_address='2001:db8::ffff/64') + self.assertEqual(ip_range_v6.family, 6) + def test_overlapping_range(self): iprange_192_168 = IPRange.objects.create( start_address=IPNetwork('192.168.0.1/22'), end_address=IPNetwork('192.168.0.49/22') @@ -90,6 +104,20 @@ class TestIPRange(TestCase): class TestPrefix(TestCase): + def test_family_string(self): + # Test property when prefix is a string + prefix = Prefix(prefix='10.0.0.0/8') + self.assertEqual(prefix.family, 4) + prefix_v6 = Prefix(prefix='2001:db8::/32') + self.assertEqual(prefix_v6.family, 6) + + def test_mask_length_string(self): + # Test property when prefix is a string + prefix = Prefix(prefix='10.0.0.0/8') + self.assertEqual(prefix.mask_length, 8) + prefix_v6 = Prefix(prefix='2001:db8::/32') + self.assertEqual(prefix_v6.mask_length, 32) + def test_get_duplicates(self): prefixes = Prefix.objects.bulk_create(( Prefix(prefix=IPNetwork('192.0.2.0/24')), @@ -533,6 +561,13 @@ class TestPrefixHierarchy(TestCase): class TestIPAddress(TestCase): + def test_family_string(self): + # Test property when address is a string + ip = IPAddress(address='10.0.0.1/24') + self.assertEqual(ip.family, 4) + ip_v6 = IPAddress(address='2001:db8::1/64') + self.assertEqual(ip_v6.family, 6) + def test_get_duplicates(self): ips = IPAddress.objects.bulk_create(( IPAddress(address=IPNetwork('192.0.2.1/24')), From e98e5e11a733a6d45a7ac78cc25809605239af6d Mon Sep 17 00:00:00 2001 From: Fabi <18670690+fabi125@users.noreply.github.com> Date: Wed, 1 Apr 2026 12:36:21 -0400 Subject: [PATCH 41/41] Fixes #21784: Fix AttributeError when an AnonymousUser tries to sort a table (#21817) --- netbox/netbox/tables/tables.py | 2 +- netbox/netbox/tests/test_tables.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/netbox/netbox/tables/tables.py b/netbox/netbox/tables/tables.py index 41dd3df10..d016cbf28 100644 --- a/netbox/netbox/tables/tables.py +++ b/netbox/netbox/tables/tables.py @@ -159,7 +159,7 @@ class BaseTable(tables.Table): columns = None ordering = None - if self.prefixed_order_by_field in request.GET: + if request.user.is_authenticated and self.prefixed_order_by_field in request.GET: if request.GET[self.prefixed_order_by_field]: # If an ordering has been specified as a query parameter, save it as the # user's preferred ordering for this table. diff --git a/netbox/netbox/tests/test_tables.py b/netbox/netbox/tests/test_tables.py index 730874c49..7ccf7041b 100644 --- a/netbox/netbox/tests/test_tables.py +++ b/netbox/netbox/tests/test_tables.py @@ -1,3 +1,4 @@ +from django.contrib.auth.models import AnonymousUser from django.template import Context, Template from django.test import RequestFactory, TestCase @@ -46,6 +47,16 @@ class BaseTableTest(TestCase): prefetch_lookups = table.data.data._prefetch_related_lookups self.assertEqual(prefetch_lookups, tuple()) + def test_configure_anonymous_user_with_ordering(self): + """ + Verify that table.configure() does not raise an error when an anonymous + user sorts a table column. + """ + request = RequestFactory().get('/?sort=name') + request.user = AnonymousUser() + table = DeviceTable(Device.objects.all()) + table.configure(request) + class TagColumnTable(NetBoxTable): tags = columns.TagColumn(url_name='dcim:site_list')