nautobot 2.1.0b1__py3-none-any.whl → 2.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nautobot/__init__.py +1 -3
- nautobot/apps/__init__.py +1 -2
- nautobot/apps/admin.py +0 -1
- nautobot/apps/api.py +0 -1
- nautobot/apps/change_logging.py +0 -1
- nautobot/apps/choices.py +0 -3
- nautobot/apps/datasources.py +2 -2
- nautobot/apps/exceptions.py +0 -1
- nautobot/apps/factory.py +0 -1
- nautobot/apps/filters.py +6 -9
- nautobot/apps/forms.py +1 -2
- nautobot/apps/graphql.py +0 -1
- nautobot/apps/jobs.py +2 -1
- nautobot/apps/models.py +4 -2
- nautobot/apps/querysets.py +0 -1
- nautobot/apps/secrets.py +0 -1
- nautobot/apps/tables.py +0 -1
- nautobot/apps/testing.py +0 -1
- nautobot/apps/ui.py +1 -3
- nautobot/apps/urls.py +0 -1
- nautobot/apps/utils.py +0 -1
- nautobot/apps/views.py +0 -1
- nautobot/circuits/api/serializers.py +1 -1
- nautobot/circuits/api/urls.py +1 -1
- nautobot/circuits/api/views.py +2 -1
- nautobot/circuits/apps.py +1 -1
- nautobot/circuits/choices.py +0 -1
- nautobot/circuits/factory.py +1 -1
- nautobot/circuits/filters.py +2 -1
- nautobot/circuits/forms.py +2 -2
- nautobot/circuits/homepage.py +0 -1
- nautobot/circuits/migrations/0001_initial_part_1.py +3 -1
- nautobot/circuits/migrations/0002_initial_part_2.py +2 -1
- nautobot/circuits/migrations/0003_auto_slug.py +1 -0
- nautobot/circuits/migrations/0005_providernetwork.py +4 -2
- nautobot/circuits/migrations/0013_alter_circuittermination__path.py +1 -0
- nautobot/circuits/migrations/0014_related_name_changes.py +1 -0
- nautobot/circuits/migrations/0016_tagsfield.py +1 -0
- nautobot/circuits/migrations/0018_status_nonnullable.py +1 -0
- nautobot/circuits/models.py +2 -2
- nautobot/circuits/navigation.py +0 -1
- nautobot/circuits/signals.py +3 -2
- nautobot/circuits/tables.py +1 -0
- nautobot/circuits/tests/integration/test_relationships.py +1 -1
- nautobot/circuits/tests/test_api.py +1 -1
- nautobot/circuits/tests/test_urls.py +1 -1
- nautobot/circuits/tests/test_views.py +1 -0
- nautobot/circuits/urls.py +1 -1
- nautobot/circuits/views.py +1 -10
- nautobot/core/__init__.py +0 -1
- nautobot/core/admin.py +3 -5
- nautobot/core/api/__init__.py +0 -1
- nautobot/core/api/metadata.py +4 -6
- nautobot/core/api/pagination.py +2 -2
- nautobot/core/api/parsers.py +1 -3
- nautobot/core/api/renderers.py +0 -1
- nautobot/core/api/schema.py +2 -3
- nautobot/core/api/serializers.py +9 -7
- nautobot/core/api/urls.py +1 -5
- nautobot/core/api/utils.py +14 -15
- nautobot/core/api/versioning.py +1 -1
- nautobot/core/api/views.py +22 -91
- nautobot/core/apps/__init__.py +5 -7
- nautobot/core/authentication.py +1 -1
- nautobot/core/celery/__init__.py +1 -2
- nautobot/core/celery/control.py +0 -2
- nautobot/core/celery/encoders.py +0 -1
- nautobot/core/celery/schedulers.py +1 -2
- nautobot/core/celery/task.py +1 -1
- nautobot/core/checks.py +31 -2
- nautobot/core/choices.py +2 -2
- nautobot/core/cli/__init__.py +8 -17
- nautobot/core/context_processors.py +1 -5
- nautobot/core/factory.py +2 -2
- nautobot/core/filters.py +1 -1
- nautobot/core/forms/fields.py +2 -4
- nautobot/core/forms/forms.py +1 -1
- nautobot/core/forms/search.py +1 -1
- nautobot/core/forms/utils.py +1 -1
- nautobot/core/graphql/__init__.py +2 -3
- nautobot/core/graphql/generators.py +2 -2
- nautobot/core/graphql/schema.py +21 -8
- nautobot/core/graphql/schema_init.py +0 -1
- nautobot/core/graphql/types.py +10 -0
- nautobot/core/graphql/utils.py +1 -2
- nautobot/core/management/commands/generate_test_data.py +7 -6
- nautobot/core/management/commands/makemigrations.py +1 -1
- nautobot/core/management/commands/migrate.py +1 -1
- nautobot/core/management/commands/post_upgrade.py +1 -15
- nautobot/core/management/commands/refresh_content_type_cache.py +1 -2
- nautobot/core/management/commands/send_installation_metrics.py +2 -3
- nautobot/core/management/commands/validate_models.py +1 -1
- nautobot/core/middleware.py +2 -2
- nautobot/core/models/__init__.py +12 -12
- nautobot/core/models/fields.py +1 -1
- nautobot/core/models/generics.py +2 -3
- nautobot/core/models/managers.py +0 -1
- nautobot/core/models/name_color_content_types.py +2 -2
- nautobot/core/models/tree_queries.py +2 -4
- nautobot/core/models/validators.py +1 -1
- nautobot/core/releases.py +1 -1
- nautobot/core/runner/importer.py +2 -25
- nautobot/core/runner/runner.py +2 -2
- nautobot/core/runner/settings.py +1 -1
- nautobot/core/settings.py +15 -21
- nautobot/core/settings_funcs.py +1 -2
- nautobot/core/signals.py +0 -1
- nautobot/core/tables.py +1 -1
- nautobot/core/templates/admin/base.html +9 -9
- nautobot/core/templates/exceptions/programming_error.html +2 -2
- nautobot/core/templates/graphene/graphiql.html +9 -3
- nautobot/core/templates/home.html +26 -6
- nautobot/core/templates/inc/footer.html +0 -7
- nautobot/core/templates/inc/javascript.html +4 -2
- nautobot/core/templates/inc/media.html +2 -2
- nautobot/core/templates/inc/nav_menu.html +27 -25
- nautobot/core/templates/inc/object_details_advanced_panel.html +12 -0
- nautobot/core/templates/nautobot_config.py.j2 +4 -4
- nautobot/core/templates/utilities/theme_preview.html +883 -0
- nautobot/core/templatetags/bootstrapped_goodies_tags.py +6 -3
- nautobot/core/templatetags/buttons.py +2 -1
- nautobot/core/templatetags/helpers.py +45 -18
- nautobot/core/testing/__init__.py +1 -2
- nautobot/core/testing/api.py +2 -4
- nautobot/core/testing/filters.py +1 -1
- nautobot/core/testing/integration.py +2 -2
- nautobot/core/testing/migrations.py +1 -0
- nautobot/core/testing/mixins.py +1 -2
- nautobot/core/testing/schema.py +1 -1
- nautobot/core/testing/utils.py +3 -3
- nautobot/core/testing/views.py +8 -8
- nautobot/core/tests/integration/test_home.py +1 -1
- nautobot/core/tests/integration/test_navbar.py +2 -2
- nautobot/core/tests/integration/test_plugin_home.py +2 -1
- nautobot/core/tests/integration/test_plugin_navbar.py +6 -6
- nautobot/core/tests/nautobot_config.py +3 -3
- nautobot/core/tests/runner.py +3 -4
- nautobot/core/tests/test_api.py +6 -51
- nautobot/core/tests/test_authentication.py +2 -3
- nautobot/core/tests/test_checks.py +1 -2
- nautobot/core/tests/test_config.py +1 -1
- nautobot/core/tests/test_csv.py +4 -4
- nautobot/core/tests/test_factory.py +1 -3
- nautobot/core/tests/test_filters.py +4 -7
- nautobot/core/tests/test_forms.py +3 -6
- nautobot/core/tests/test_graphql.py +33 -17
- nautobot/core/tests/test_jinja_filters.py +5 -4
- nautobot/core/tests/test_jobs.py +1 -1
- nautobot/core/tests/test_models.py +28 -3
- nautobot/core/tests/test_navigations.py +2 -1
- nautobot/core/tests/test_openapi.py +0 -1
- nautobot/core/tests/test_paginator.py +2 -2
- nautobot/core/tests/test_releases.py +2 -2
- nautobot/core/tests/test_tables.py +1 -1
- nautobot/core/tests/test_templatetags_helpers.py +17 -2
- nautobot/core/tests/test_templatetags_netutils.py +1 -2
- nautobot/core/tests/test_utils.py +4 -8
- nautobot/core/tests/test_views.py +95 -1
- nautobot/core/tests/test_views_utils.py +0 -1
- nautobot/core/urls.py +24 -4
- nautobot/core/utils/color.py +1 -1
- nautobot/core/utils/data.py +1 -2
- nautobot/core/utils/filtering.py +4 -5
- nautobot/core/utils/git.py +6 -2
- nautobot/core/utils/logging.py +2 -1
- nautobot/core/utils/lookup.py +4 -6
- nautobot/core/utils/migrations.py +1 -0
- nautobot/core/utils/permissions.py +2 -4
- nautobot/core/utils/requests.py +10 -0
- nautobot/core/views/__init__.py +32 -8
- nautobot/core/views/generic.py +14 -13
- nautobot/core/views/mixins.py +24 -22
- nautobot/core/views/renderers.py +1 -1
- nautobot/core/views/routers.py +6 -0
- nautobot/core/views/utils.py +2 -1
- nautobot/dcim/api/urls.py +1 -1
- nautobot/dcim/api/views.py +6 -5
- nautobot/dcim/apps.py +1 -1
- nautobot/dcim/choices.py +4 -1
- nautobot/dcim/constants.py +0 -1
- nautobot/dcim/elevations.py +1 -2
- nautobot/dcim/factory.py +125 -13
- nautobot/dcim/fields.py +1 -0
- nautobot/dcim/filters/__init__.py +2 -3
- nautobot/dcim/filters/mixins.py +1 -1
- nautobot/dcim/forms.py +37 -44
- nautobot/dcim/graphql/types.py +16 -17
- nautobot/dcim/migrations/0001_initial_part_1.py +4 -2
- nautobot/dcim/migrations/0002_initial_part_2.py +2 -1
- nautobot/dcim/migrations/0003_initial_part_3.py +2 -1
- nautobot/dcim/migrations/0004_initial_part_4.py +2 -1
- nautobot/dcim/migrations/0006_auto_slug.py +1 -0
- nautobot/dcim/migrations/0009_add_natural_indexing.py +1 -0
- nautobot/dcim/migrations/0010_interface_status.py +1 -0
- nautobot/dcim/migrations/0011_interface_status_data_migration.py +1 -0
- nautobot/dcim/migrations/0013_location_location_type.py +4 -2
- nautobot/dcim/migrations/0014_location_status_data_migration.py +1 -0
- nautobot/dcim/migrations/0016_device_components__timestamp_data_migration.py +0 -1
- nautobot/dcim/migrations/0018_device_redundancy_group.py +4 -2
- nautobot/dcim/migrations/0019_device_redundancy_group_data_migration.py +1 -0
- nautobot/dcim/migrations/0022_interface_redundancy_group.py +3 -1
- nautobot/dcim/migrations/0023_interface_redundancy_group_data_migration.py +1 -0
- nautobot/dcim/migrations/0024_move_site_fields_to_location_model.py +2 -1
- nautobot/dcim/migrations/0027_alter_interface_mac_address.py +1 -0
- nautobot/dcim/migrations/0028_alter_device_and_rack_role_add_new_role.py +1 -0
- nautobot/dcim/migrations/0029_device_and_rack_roles_data_migrations.py +1 -0
- nautobot/dcim/migrations/0033_add_tree_managers_and_foreign_keys_pre_data_migration.py +1 -0
- nautobot/dcim/migrations/0034_migrate_region_and_site_data_to_locations.py +1 -2
- nautobot/dcim/migrations/0038_fixup_fks_and_related_names.py +1 -0
- nautobot/dcim/migrations/0039_related_name_changes.py +1 -0
- nautobot/dcim/migrations/0042_alter_location_managers.py +1 -0
- nautobot/dcim/migrations/0044_tagsfield.py +1 -0
- nautobot/dcim/migrations/0047_status_nonnullable.py +1 -0
- nautobot/dcim/migrations/0051_interface_redundancy_group_nullable_status.py +1 -0
- nautobot/dcim/models/cables.py +3 -3
- nautobot/dcim/models/device_component_templates.py +6 -6
- nautobot/dcim/models/devices.py +9 -4
- nautobot/dcim/models/locations.py +6 -1
- nautobot/dcim/models/power.py +1 -1
- nautobot/dcim/models/racks.py +5 -4
- nautobot/dcim/navigation.py +0 -1
- nautobot/dcim/signals.py +3 -2
- nautobot/dcim/tables/__init__.py +5 -4
- nautobot/dcim/tables/cables.py +1 -0
- nautobot/dcim/tables/devices.py +1 -0
- nautobot/dcim/tables/locations.py +1 -1
- nautobot/dcim/tables/power.py +1 -0
- nautobot/dcim/tables/racks.py +2 -1
- nautobot/dcim/templates/dcim/device/consoleports.html +2 -2
- nautobot/dcim/templates/dcim/device/consoleserverports.html +2 -2
- nautobot/dcim/templates/dcim/device/devicebays.html +1 -1
- nautobot/dcim/templates/dcim/device/frontports.html +2 -2
- nautobot/dcim/templates/dcim/device/interfaces.html +4 -4
- nautobot/dcim/templates/dcim/device/inventory.html +1 -1
- nautobot/dcim/templates/dcim/device/poweroutlets.html +2 -2
- nautobot/dcim/templates/dcim/device/powerports.html +2 -2
- nautobot/dcim/templates/dcim/device/rearports.html +2 -2
- nautobot/dcim/templates/dcim/inc/location_hierarchy.html +4 -2
- nautobot/dcim/templates/dcim/rack.html +1 -1
- nautobot/dcim/templates/dcim/rack_elevation_list.html +1 -1
- nautobot/dcim/templates/dcim/rackreservation.html +1 -1
- nautobot/dcim/tests/test_api.py +7 -7
- nautobot/dcim/tests/test_cablepaths.py +0 -1
- nautobot/dcim/tests/test_filters.py +16 -13
- nautobot/dcim/tests/test_forms.py +2 -3
- nautobot/dcim/tests/test_graphql.py +1 -0
- nautobot/dcim/tests/test_migrations.py +2 -2
- nautobot/dcim/tests/test_models.py +2 -2
- nautobot/dcim/tests/test_views.py +77 -14
- nautobot/dcim/urls.py +3 -2
- nautobot/dcim/utils.py +1 -1
- nautobot/dcim/views.py +4 -3
- nautobot/extras/admin.py +2 -1
- nautobot/extras/api/customfields.py +0 -2
- nautobot/extras/api/mixins.py +0 -1
- nautobot/extras/api/serializers.py +4 -4
- nautobot/extras/api/urls.py +1 -1
- nautobot/extras/api/views.py +1 -1
- nautobot/extras/apps.py +3 -4
- nautobot/extras/choices.py +3 -18
- nautobot/extras/context_managers.py +1 -1
- nautobot/extras/datasources/__init__.py +3 -1
- nautobot/extras/datasources/git.py +33 -12
- nautobot/extras/datasources/utils.py +0 -1
- nautobot/extras/factory.py +20 -0
- nautobot/extras/filters/__init__.py +2 -3
- nautobot/extras/filters/customfields.py +0 -1
- nautobot/extras/filters/mixins.py +1 -1
- nautobot/extras/forms/__init__.py +3 -4
- nautobot/extras/forms/base.py +1 -1
- nautobot/extras/forms/forms.py +29 -11
- nautobot/extras/forms/mixins.py +1 -1
- nautobot/extras/graphql/types.py +2 -2
- nautobot/extras/health_checks.py +1 -1
- nautobot/extras/jobs.py +43 -25
- nautobot/extras/management/__init__.py +0 -1
- nautobot/extras/management/commands/refresh_dynamic_group_member_caches.py +1 -1
- nautobot/extras/management/commands/runjob.py +3 -3
- nautobot/extras/management/commands/webhook_receiver.py +1 -2
- nautobot/extras/migrations/0001_initial_part_1.py +2 -1
- nautobot/extras/migrations/0002_initial_part_2.py +2 -1
- nautobot/extras/migrations/0003_initial_part_3.py +1 -0
- nautobot/extras/migrations/0006_graphqlquery.py +2 -1
- nautobot/extras/migrations/0007_configcontextschema.py +3 -1
- nautobot/extras/migrations/0009_computedfield.py +3 -1
- nautobot/extras/migrations/0011_fileattachment_fileproxy.py +3 -1
- nautobot/extras/migrations/0012_healthchecktestmodel.py +2 -1
- nautobot/extras/migrations/0014_auto_slug.py +1 -0
- nautobot/extras/migrations/0015_scheduled_job.py +3 -1
- nautobot/extras/migrations/0016_secret.py +4 -2
- nautobot/extras/migrations/0017_joblogentry.py +2 -1
- nautobot/extras/migrations/0018_joblog_data_migration.py +2 -1
- nautobot/extras/migrations/0021_customfield_changelog_data.py +3 -2
- nautobot/extras/migrations/0022_objectchange_object_datav2.py +1 -0
- nautobot/extras/migrations/0023_job_model.py +4 -2
- nautobot/extras/migrations/0026_job_add_gitrepository_fk.py +1 -0
- nautobot/extras/migrations/0029_dynamicgroup.py +3 -1
- nautobot/extras/migrations/0031_tag_content_types.py +1 -0
- nautobot/extras/migrations/0032_tag_content_types_data_migration.py +1 -0
- nautobot/extras/migrations/0040_dynamicgroup__dynamicgroupmembership.py +2 -1
- nautobot/extras/migrations/0041_jobresult_job_kwargs.py +1 -0
- nautobot/extras/migrations/0043_note.py +3 -1
- nautobot/extras/migrations/0044_add_job_hook.py +3 -1
- nautobot/extras/migrations/0046_populate_custom_field_slug_label.py +1 -0
- nautobot/extras/migrations/0047_enforce_custom_field_slug.py +1 -0
- nautobot/extras/migrations/0051_add_job_task_queues.py +1 -0
- nautobot/extras/migrations/0055_configcontext_dynamic_groups.py +1 -0
- nautobot/extras/migrations/0057_jobbutton.py +3 -1
- nautobot/extras/migrations/0065_configcontext_data_migrations.py +1 -0
- nautobot/extras/migrations/0067_migrate_job_result_status.py +0 -1
- nautobot/extras/migrations/0068_jobresult__add_celery_fields.py +1 -0
- nautobot/extras/migrations/0071_replace_related_names.py +1 -0
- nautobot/extras/migrations/0077_migrate_custom_field_data.py +1 -0
- nautobot/extras/migrations/0078_remove_name_field_and_make_label_field_non_nullable.py +1 -0
- nautobot/extras/migrations/0080_tagsfield.py +1 -0
- nautobot/extras/migrations/0082_rename_relationship_name_to_label.py +1 -0
- nautobot/extras/migrations/0083_ensure_relationship_keys_are_unique.py +1 -0
- nautobot/extras/migrations/0090_joblogentry__log_level_data_migration.py +0 -1
- nautobot/extras/migrations/0095_ensure_note_timestamps_are_unique.py +4 -5
- nautobot/extras/migrations/0097_alter_job_result_remove_result.py +1 -0
- nautobot/extras/migrations/0100_fileproxy_job_result.py +1 -0
- nautobot/extras/migrations/0101_externalintegration.py +9 -1
- nautobot/extras/models/__init__.py +2 -3
- nautobot/extras/models/change_logging.py +0 -1
- nautobot/extras/models/customfields.py +13 -4
- nautobot/extras/models/datasources.py +2 -2
- nautobot/extras/models/groups.py +3 -4
- nautobot/extras/models/jobs.py +13 -7
- nautobot/extras/models/models.py +61 -24
- nautobot/extras/models/relationships.py +8 -4
- nautobot/extras/models/roles.py +1 -1
- nautobot/extras/models/secrets.py +1 -3
- nautobot/extras/models/tags.py +0 -1
- nautobot/extras/navigation.py +0 -1
- nautobot/extras/plugins/__init__.py +6 -7
- nautobot/extras/plugins/tables.py +1 -2
- nautobot/extras/plugins/utils.py +1 -1
- nautobot/extras/plugins/views.py +21 -21
- nautobot/extras/querysets.py +30 -13
- nautobot/extras/signals.py +6 -7
- nautobot/extras/tables.py +13 -5
- nautobot/extras/tasks.py +1 -2
- nautobot/extras/templates/extras/configcontext_edit.html +1 -1
- nautobot/extras/templates/extras/customfield_edit.html +7 -12
- nautobot/extras/templates/extras/dynamicgroup_edit.html +42 -47
- nautobot/extras/templates/extras/externalintegration_retrieve.html +12 -0
- nautobot/extras/templates/extras/externalintegration_update.html +28 -0
- nautobot/extras/templates/extras/gitrepository_result.html +2 -2
- nautobot/extras/templates/extras/graphqlquery.html +4 -2
- nautobot/extras/templates/extras/inc/jobresult_js.html +1 -1
- nautobot/extras/templates/extras/job_list.html +1 -1
- nautobot/extras/templates/extras/jobresult.html +2 -2
- nautobot/extras/templates/extras/secretsgroup_edit.html +40 -45
- nautobot/extras/templatetags/custom_links.py +2 -3
- nautobot/extras/templatetags/job_buttons.py +76 -83
- nautobot/extras/templatetags/log_levels.py +0 -1
- nautobot/extras/templatetags/plugins.py +1 -1
- nautobot/extras/test_jobs/api_test_job.py +1 -2
- nautobot/extras/test_jobs/atomic_transaction.py +1 -2
- nautobot/extras/test_jobs/dry_run.py +1 -2
- nautobot/extras/test_jobs/fail.py +1 -2
- nautobot/extras/test_jobs/field_order.py +1 -1
- nautobot/extras/test_jobs/file_upload_fail.py +1 -2
- nautobot/extras/test_jobs/file_upload_pass.py +1 -2
- nautobot/extras/test_jobs/has_sensitive_variables.py +1 -2
- nautobot/extras/test_jobs/ipaddress_vars.py +1 -4
- nautobot/extras/test_jobs/job_button_receiver.py +1 -2
- nautobot/extras/test_jobs/job_hook_receiver.py +1 -2
- nautobot/extras/test_jobs/job_variables.py +7 -2
- nautobot/extras/test_jobs/location_with_custom_field.py +1 -2
- nautobot/extras/test_jobs/log_redaction.py +1 -2
- nautobot/extras/test_jobs/log_skip_db_logging.py +1 -2
- nautobot/extras/test_jobs/modify_db.py +1 -2
- nautobot/extras/test_jobs/object_var_optional.py +1 -2
- nautobot/extras/test_jobs/object_var_required.py +1 -2
- nautobot/extras/test_jobs/object_vars.py +1 -2
- nautobot/extras/test_jobs/pass.py +1 -2
- nautobot/extras/test_jobs/profiling.py +1 -2
- nautobot/extras/tests/integration/__init__.py +1 -1
- nautobot/extras/tests/integration/test_computedfields.py +2 -2
- nautobot/extras/tests/integration/test_configcontextschema.py +5 -5
- nautobot/extras/tests/integration/test_plugins.py +5 -4
- nautobot/extras/tests/integration/test_tagfilter.py +1 -1
- nautobot/extras/tests/test_api.py +15 -9
- nautobot/extras/tests/test_changelog.py +3 -2
- nautobot/extras/tests/test_context_managers.py +6 -3
- nautobot/extras/tests/test_customfields.py +4 -4
- nautobot/extras/tests/test_datasources.py +1 -1
- nautobot/extras/tests/test_dynamicgroups.py +3 -3
- nautobot/extras/tests/test_filters.py +3 -2
- nautobot/extras/tests/test_forms.py +5 -6
- nautobot/extras/tests/test_git.py +1 -1
- nautobot/extras/tests/test_job_variables.py +20 -1
- nautobot/extras/tests/test_jobs.py +34 -5
- nautobot/extras/tests/test_models.py +156 -6
- nautobot/extras/tests/test_notes.py +0 -1
- nautobot/extras/tests/test_plugins.py +71 -9
- nautobot/extras/tests/test_relationships.py +3 -3
- nautobot/extras/tests/test_tags.py +1 -1
- nautobot/extras/tests/test_views.py +105 -25
- nautobot/extras/tests/test_webhooks.py +4 -5
- nautobot/extras/urls.py +0 -2
- nautobot/extras/utils.py +11 -9
- nautobot/extras/views.py +42 -44
- nautobot/generate_secret_key.py +10 -5
- nautobot/ipam/api/serializers.py +1 -2
- nautobot/ipam/api/urls.py +1 -1
- nautobot/ipam/api/views.py +1 -0
- nautobot/ipam/apps.py +2 -1
- nautobot/ipam/factory.py +6 -9
- nautobot/ipam/fields.py +1 -1
- nautobot/ipam/filters.py +42 -58
- nautobot/ipam/formfields.py +1 -2
- nautobot/ipam/forms.py +5 -4
- nautobot/ipam/graphql/types.py +1 -1
- nautobot/ipam/homepage.py +0 -1
- nautobot/ipam/lookups.py +2 -3
- nautobot/ipam/migrations/0002_initial_part_2.py +2 -1
- nautobot/ipam/migrations/0003_remove_max_length.py +1 -0
- nautobot/ipam/migrations/0004_fixup_p2p_broadcast.py +0 -1
- nautobot/ipam/migrations/0005_auto_slug.py +1 -0
- nautobot/ipam/migrations/0010_alter_ipam_role_add_new_role.py +1 -0
- nautobot/ipam/migrations/0011_migrate_ipam_role_data.py +1 -0
- nautobot/ipam/migrations/0020_related_name_changes.py +1 -0
- nautobot/ipam/migrations/0022_aggregate_to_prefix_data_migration.py +1 -2
- nautobot/ipam/migrations/0024_interface_to_ipaddress_m2m.py +2 -1
- nautobot/ipam/migrations/0025_interface_ipaddress_m2m_data_migration.py +15 -13
- nautobot/ipam/migrations/0028_tagsfield.py +1 -0
- nautobot/ipam/migrations/0030_ipam__namespaces.py +3 -1
- nautobot/ipam/migrations/0034_status_nonnullable.py +1 -0
- nautobot/ipam/migrations/0037_data_migration_vlan_group_name_uniqueness.py +0 -1
- nautobot/ipam/migrations/0039_alter_ipaddresstointerface_ip_address.py +20 -0
- nautobot/ipam/models.py +11 -8
- nautobot/ipam/navigation.py +0 -1
- nautobot/ipam/querysets.py +48 -49
- nautobot/ipam/tables.py +11 -2
- nautobot/ipam/templates/ipam/ipaddress.html +30 -6
- nautobot/ipam/templates/ipam/ipaddress_interfaces.html +3 -3
- nautobot/ipam/templates/ipam/ipaddress_vm_interfaces.html +32 -0
- nautobot/ipam/tests/test_api.py +2 -2
- nautobot/ipam/tests/test_filters.py +13 -17
- nautobot/ipam/tests/test_migrations.py +1 -2
- nautobot/ipam/tests/test_models.py +17 -2
- nautobot/ipam/tests/test_ordering.py +1 -1
- nautobot/ipam/tests/test_querysets.py +2 -2
- nautobot/ipam/tests/test_views.py +6 -6
- nautobot/ipam/urls.py +6 -0
- nautobot/ipam/utils/migrations.py +0 -1
- nautobot/ipam/views.py +26 -6
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.css +142 -142
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.css.map +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css.map +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css +307 -307
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css.map +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css.map +1 -1
- nautobot/project-static/css/base.css +59 -30
- nautobot/project-static/css/dark.css +38 -31
- nautobot/project-static/docs/404.html +17 -87
- nautobot/project-static/docs/apps/index.html +17 -87
- nautobot/project-static/docs/apps/nautobot-apps.html +17 -87
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +405 -475
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +28 -98
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +2334 -2396
- nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +17 -87
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +132 -202
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +17 -87
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +155 -87
- nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +17 -87
- nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +17 -87
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +42 -112
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +1028 -1098
- nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +186 -256
- nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +1454 -1156
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +1443 -1507
- nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +157 -203
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +17 -87
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +32 -102
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +3822 -3888
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +990 -1060
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +65 -123
- nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +1431 -1495
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +3618 -3640
- nautobot/project-static/docs/development/apps/api/configuration-view.html +17 -87
- nautobot/project-static/docs/development/apps/api/database-backend-config.html +19 -89
- nautobot/project-static/docs/development/apps/api/models/django-admin.html +17 -87
- nautobot/project-static/docs/development/apps/api/models/global-search.html +17 -87
- nautobot/project-static/docs/development/apps/api/models/graphql.html +17 -87
- nautobot/project-static/docs/development/apps/api/models/index.html +17 -87
- nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +17 -87
- nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +17 -87
- nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +19 -89
- nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +19 -89
- nautobot/project-static/docs/development/apps/api/platform-features/index.html +19 -89
- nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +17 -87
- nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +17 -87
- nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +21 -87
- nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +17 -87
- nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +17 -87
- nautobot/project-static/docs/development/apps/api/prometheus.html +17 -87
- nautobot/project-static/docs/development/apps/api/setup.html +17 -87
- nautobot/project-static/docs/development/apps/api/testing.html +20 -90
- nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +17 -87
- nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +17 -87
- nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +17 -87
- nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +19 -89
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-detail-views.html +209 -140
- nautobot/project-static/docs/development/apps/api/ui-extensions/tabs.html +13 -5390
- nautobot/project-static/docs/development/apps/api/views/base-template.html +17 -87
- nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +22 -92
- nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +17 -87
- nautobot/project-static/docs/development/apps/api/views/help-documentation.html +17 -87
- nautobot/project-static/docs/development/apps/api/views/index.html +17 -87
- nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +17 -87
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +17 -87
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +17 -87
- nautobot/project-static/docs/development/apps/api/views/notes.html +19 -89
- nautobot/project-static/docs/development/apps/api/views/rest-api.html +17 -87
- nautobot/project-static/docs/development/apps/api/views/urls.html +17 -87
- nautobot/project-static/docs/development/apps/api/views/view-overrides.html +13 -5385
- nautobot/project-static/docs/development/apps/index.html +17 -87
- nautobot/project-static/docs/development/apps/migration/code-updates.html +17 -87
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +17 -87
- nautobot/project-static/docs/development/apps/migration/from-v1.html +17 -88
- nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +17 -87
- nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +17 -87
- nautobot/project-static/docs/development/apps/migration/model-updates/global.html +17 -87
- nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +17 -87
- nautobot/project-static/docs/development/apps/porting-from-netbox.html +17 -87
- nautobot/project-static/docs/development/core/application-registry.html +20 -90
- nautobot/project-static/docs/development/core/best-practices.html +20 -90
- nautobot/project-static/docs/development/core/bootstrap-ui.html +5360 -0
- nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +17 -87
- nautobot/project-static/docs/development/core/extending-models.html +21 -87
- nautobot/project-static/docs/development/core/generic-views.html +17 -87
- nautobot/project-static/docs/development/core/getting-started.html +124 -301
- nautobot/project-static/docs/development/core/homepage.html +17 -87
- nautobot/project-static/docs/development/core/index.html +17 -87
- nautobot/project-static/docs/development/core/model-features.html +17 -87
- nautobot/project-static/docs/development/core/natural-keys.html +17 -87
- nautobot/project-static/docs/development/core/navigation-menu.html +17 -87
- nautobot/project-static/docs/development/core/react-ui.html +13 -5668
- nautobot/project-static/docs/development/core/release-checklist.html +20 -96
- nautobot/project-static/docs/development/core/role-internals.html +20 -90
- nautobot/project-static/docs/development/core/style-guide.html +77 -146
- nautobot/project-static/docs/development/core/templates.html +20 -90
- nautobot/project-static/docs/development/core/testing.html +17 -87
- nautobot/project-static/docs/development/core/user-preferences.html +17 -87
- nautobot/project-static/docs/development/index.html +17 -87
- nautobot/project-static/docs/development/jobs/index.html +424 -425
- nautobot/project-static/docs/development/jobs/migration/from-v1.html +75 -98
- nautobot/project-static/docs/development/react-ui.html +3 -3
- nautobot/project-static/docs/img/relationship_w_json_filter.png +0 -0
- nautobot/project-static/docs/index.html +90 -93
- nautobot/project-static/docs/media/admin_ui_run_permission.png +0 -0
- nautobot/project-static/docs/media/development/homepage_changelog_panel.png +0 -0
- nautobot/project-static/docs/media/development/homepage_dcim_panel.png +0 -0
- nautobot/project-static/docs/media/installation/nautobot_ui_admin.png +0 -0
- nautobot/project-static/docs/media/installation/nautobot_ui_login.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_filtering_01.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_advanced_1_01.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_advanced_1_02.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_advanced_1_03.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_advanced_1_04.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_advanced_1_05.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_advanced_2_01.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_advanced_2_02.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_advanced_2_03.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_advanced_2_04.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_advanced_2_05.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_advanced_2_06.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_advanced_2_07.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_basic_01.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_basic_02.png +0 -0
- nautobot/project-static/docs/media/models/dynamicgroup_workflow_basic_03.png +0 -0
- nautobot/project-static/docs/media/models/jobbutton_form.png +0 -0
- nautobot/project-static/docs/media/models/site_jobbuttons.png +0 -0
- nautobot/project-static/docs/media/plugins/plugin_admin_config.png +0 -0
- nautobot/project-static/docs/media/plugins/plugin_admin_ui.png +0 -0
- nautobot/project-static/docs/media/ss_config_contexts.png +0 -0
- nautobot/project-static/docs/media/ss_graphiql.png +0 -0
- nautobot/project-static/docs/media/ss_main_page.png +0 -0
- nautobot/project-static/docs/media/ss_plugin_chatops.png +0 -0
- nautobot/project-static/docs/media/ss_plugin_golden_config.png +0 -0
- nautobot/project-static/docs/media/ss_prefix_hierarchy.png +0 -0
- nautobot/project-static/docs/objects.inv +0 -0
- nautobot/project-static/docs/release-notes/index.html +17 -87
- nautobot/project-static/docs/release-notes/version-1.0.html +17 -87
- nautobot/project-static/docs/release-notes/version-1.1.html +17 -87
- nautobot/project-static/docs/release-notes/version-1.2.html +17 -87
- nautobot/project-static/docs/release-notes/version-1.3.html +17 -87
- nautobot/project-static/docs/release-notes/version-1.4.html +18 -88
- nautobot/project-static/docs/release-notes/version-1.5.html +17 -87
- nautobot/project-static/docs/release-notes/version-1.6.html +17 -87
- nautobot/project-static/docs/release-notes/version-2.0.html +467 -336
- nautobot/project-static/docs/release-notes/version-2.1.html +470 -108
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +240 -255
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +17 -87
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +20 -90
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +17 -87
- nautobot/project-static/docs/user-guide/administration/configuration/index.html +17 -87
- nautobot/project-static/docs/user-guide/administration/configuration/node-configuration.html +13 -5417
- nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +47 -113
- nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +17 -87
- nautobot/project-static/docs/user-guide/administration/guides/caching.html +17 -87
- nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +17 -87
- nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +17 -87
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +17 -87
- nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +17 -87
- nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +17 -87
- nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +17 -87
- nautobot/project-static/docs/user-guide/administration/installation/app-install.html +17 -87
- nautobot/project-static/docs/user-guide/administration/installation/docker.html +17 -87
- nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +17 -87
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +17 -87
- nautobot/project-static/docs/user-guide/administration/installation/index.html +22 -109
- nautobot/project-static/docs/user-guide/administration/installation/install_system.html +18 -101
- nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +23 -140
- nautobot/project-static/docs/user-guide/administration/installation/selinux-troubleshooting.html +17 -87
- nautobot/project-static/docs/user-guide/administration/installation/services.html +17 -87
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +17 -87
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +17 -87
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +92 -181
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +17 -87
- nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +17 -87
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +17 -87
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +17 -87
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +17 -87
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +17 -87
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +18 -88
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +17 -87
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +17 -87
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +23 -89
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +18 -88
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/ipam/media/ipam_namespace_documentation.drawio +259 -1
- nautobot/project-static/docs/user-guide/core-data-model/ipam/media/ipam_namespace_documentation.drawio.png +0 -0
- nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +18 -88
- nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +17 -87
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +17 -87
- nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +17 -87
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +23 -93
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +17 -87
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +17 -87
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +26 -96
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +35 -103
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +19 -89
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +19 -91
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +19 -89
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +24 -94
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +39 -258
- nautobot/project-static/docs/user-guide/feature-guides/graphql.html +45 -243
- nautobot/project-static/docs/user-guide/feature-guides/images/custom-fields/custom_field_choices.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/custom-fields/custom_field_detail_grouped.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/custom-fields/custom_field_detail_label.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/custom-fields/custom_field_edit.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/custom-fields/custom_field_select.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/1-create-location-type.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/10-add-platform.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/11-platforms-page.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/12-add-tenant.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/13-assign-tenant-to-device.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/14-assign-tenant-to-device-2.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/15-create-device-type.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/16-interface-templates.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/17-templated-interfaces.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/18-assign-device-type.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/19-edit-ints-for-lag.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/2-create-manufacturer.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/20-ints-int-lag.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/21-device-type.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/22-create-vlans.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/23-create-vlans-2.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/24-vlan-main-page.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/25-add-vlan-to-interface.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/26-add-vlan-to-interface-2.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/27-add-rir.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/3-create-role.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/30-add-prefix.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/32-add-ip-addr.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/33-assign-address.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/34-assign-address-2.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/35-assign-address-3.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/36-verify-address.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/37-verify-prefix.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/38-verify-prefix2.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/4-create-device-type.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/41-device-search-results.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/42-address-search-v2.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/43-get-to-device-main-page.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/44-add-platform.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/5-create-device.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/6-create-location.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/7-location-type-page.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/8-location-page.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/01-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/02-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/03-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/04-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/05-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/06-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/07-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/08-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/09-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/10-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/11-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/12-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/13-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/14-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/15-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/16-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/17-git-data-source.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/graphql/00-graphiql.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/graphql/01-graphiql-explorer.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/graphql/02-graphiql-explorer-device-query.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/graphql/03-graphiql-explorer-device-attributes.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/graphql/04-graphql-query-01.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/graphql/05-graphiql-autocomplete.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/graphql/06-graphql-query-02.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/graphql/07-graphql-query-03.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/graphql/08-graphql-query-04.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/graphql/09-graphql-query-05.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/graphql/10-graphql-swagger.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/graphql/11-graphql-query-06.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/ip-address-merge-tool/ip_merge_button.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/ip-address-merge-tool/merge_button.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/ip-address-merge-tool/merge_view.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/ip-address-merge-tool/no_more_dup_ips.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/ip-address-merge-tool/skip_button.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/ip-address-merge-tool/unselect_ips.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/relationships/01-relationships.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/relationships/02-relationships.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/relationships/03-relationships.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/relationships/04-relationships.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/relationships/05-relationships.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/relationships/06-relationships.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/relationships/07-relationships.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/relationships/08-relationships.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/relationships/09-relationships.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/relationships/10-relationships.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/relationships/11-relationships.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +20 -90
- nautobot/project-static/docs/user-guide/feature-guides/relationships.html +22 -92
- nautobot/project-static/docs/user-guide/index.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +22 -88
- nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +68 -87
- nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +18 -88
- nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +22 -88
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/note.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +18 -88
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/role.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/secret.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/status.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/tag.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +43 -91
- nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +21 -87
- nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +17 -87
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +17 -87
- nautobot/project-static/js/homepage_layout.js +170 -0
- nautobot/project-static/js/theme.js +0 -5
- nautobot/tenancy/api/urls.py +1 -1
- nautobot/tenancy/api/views.py +1 -0
- nautobot/tenancy/factory.py +2 -2
- nautobot/tenancy/filters/__init__.py +1 -2
- nautobot/tenancy/forms.py +2 -2
- nautobot/tenancy/homepage.py +0 -1
- nautobot/tenancy/migrations/0001_initial.py +2 -1
- nautobot/tenancy/migrations/0002_auto_slug.py +1 -0
- nautobot/tenancy/migrations/0004_change_tree_manager_on_tree_models.py +1 -0
- nautobot/tenancy/migrations/0008_tagsfield.py +1 -0
- nautobot/tenancy/models.py +0 -1
- nautobot/tenancy/navigation.py +0 -1
- nautobot/tenancy/tables.py +1 -0
- nautobot/tenancy/templates/tenancy/tenantgroup.html +1 -1
- nautobot/tenancy/tests/test_filters.py +5 -5
- nautobot/tenancy/urls.py +1 -0
- nautobot/tenancy/views.py +2 -2
- nautobot/users/admin.py +1 -2
- nautobot/users/api/urls.py +1 -1
- nautobot/users/api/views.py +6 -4
- nautobot/users/factory.py +8 -24
- nautobot/users/filters.py +4 -4
- nautobot/users/forms.py +1 -0
- nautobot/users/migrations/0004_alter_user_managers.py +1 -0
- nautobot/users/migrations/0008_make_object_permission_a_changelogged_model.py +22 -0
- nautobot/users/models.py +2 -2
- nautobot/users/tests/test_api.py +7 -6
- nautobot/users/tests/test_filters.py +0 -1
- nautobot/users/tests/test_models.py +0 -1
- nautobot/users/tests/test_password_ui.py +1 -1
- nautobot/users/views.py +5 -4
- nautobot/virtualization/api/urls.py +1 -1
- nautobot/virtualization/api/views.py +2 -1
- nautobot/virtualization/apps.py +1 -1
- nautobot/virtualization/choices.py +0 -1
- nautobot/virtualization/factory.py +1 -1
- nautobot/virtualization/filters.py +1 -1
- nautobot/virtualization/forms.py +6 -6
- nautobot/virtualization/homepage.py +0 -1
- nautobot/virtualization/migrations/0003_vminterface_verbose_name.py +1 -0
- nautobot/virtualization/migrations/0004_auto_slug.py +1 -0
- nautobot/virtualization/migrations/0005_add_natural_indexing.py +1 -0
- nautobot/virtualization/migrations/0006_vminterface_status.py +1 -0
- nautobot/virtualization/migrations/0007_vminterface_status_data_migration.py +1 -0
- nautobot/virtualization/migrations/0011_alter_vminterface_mac_address.py +1 -0
- nautobot/virtualization/migrations/0012_alter_virtualmachine_role_add_new_role.py +1 -0
- nautobot/virtualization/migrations/0013_migrate_virtualmachine_role_data.py +1 -0
- nautobot/virtualization/migrations/0018_related_name_changes.py +1 -0
- nautobot/virtualization/migrations/0021_tagsfield_and_vminterface_to_primarymodel.py +1 -0
- nautobot/virtualization/migrations/0025_status_nonnullable.py +1 -0
- nautobot/virtualization/models.py +1 -2
- nautobot/virtualization/navigation.py +0 -1
- nautobot/virtualization/signals.py +0 -1
- nautobot/virtualization/tables.py +1 -0
- nautobot/virtualization/templates/virtualization/virtualmachine.html +2 -2
- nautobot/virtualization/tests/test_filters.py +3 -3
- nautobot/virtualization/tests/test_models.py +1 -1
- nautobot/virtualization/tests/test_views.py +2 -2
- nautobot/virtualization/urls.py +1 -0
- nautobot/virtualization/views.py +1 -1
- {nautobot-2.1.0b1.dist-info → nautobot-2.1.1.dist-info}/METADATA +10 -2
- {nautobot-2.1.0b1.dist-info → nautobot-2.1.1.dist-info}/RECORD +895 -993
- nautobot/core/management/commands/build_ui.py +0 -281
- nautobot/core/templates/base_react.html +0 -55
- nautobot/core/tests/test_cli.py +0 -25
- nautobot/project-static/docs/media/installation/nautobot_ui_guest.png +0 -0
- nautobot/project-static/docs/user-guide/core-data-model/ipam/media/ipam_namespace_documentation.drawio.svg +0 -4
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/39-address-search.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/getting-started-nautobot-ui/40-addr-main-page.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/git-as-data-source/18-git-data-source.png +0 -0
- nautobot/ui/.eslintignore +0 -3
- nautobot/ui/.gitignore +0 -7
- nautobot/ui/.prettierignore +0 -6
- nautobot/ui/.prettierrc +0 -4
- nautobot/ui/README.md +0 -27
- nautobot/ui/config/env.js +0 -102
- nautobot/ui/config/getHttpsConfig.js +0 -68
- nautobot/ui/config/jest/babelTransform.js +0 -14
- nautobot/ui/config/jest/cssTransform.js +0 -12
- nautobot/ui/config/jest/fileTransform.js +0 -38
- nautobot/ui/config/modules.js +0 -151
- nautobot/ui/config/paths.js +0 -67
- nautobot/ui/config/webpack/persistentCache/createEnvironmentHash.js +0 -8
- nautobot/ui/config/webpack.config.js +0 -674
- nautobot/ui/config/webpackDevServer.config.js +0 -127
- nautobot/ui/jest.config.js +0 -35
- nautobot/ui/jsconfig.json +0 -4
- nautobot/ui/package-lock.json +0 -22947
- nautobot/ui/package.json +0 -119
- nautobot/ui/public/index.html +0 -47
- nautobot/ui/public/logo192.png +0 -0
- nautobot/ui/public/logo512.png +0 -0
- nautobot/ui/public/manifest.json +0 -25
- nautobot/ui/public/nautobot_logo.svg +0 -131
- nautobot/ui/public/robots.txt +0 -3
- nautobot/ui/scripts/build.js +0 -224
- nautobot/ui/scripts/start.js +0 -140
- nautobot/ui/scripts/test.js +0 -40
- nautobot/ui/src/App.js +0 -79
- nautobot/ui/src/components/AppFullWidthComponents.js +0 -8
- nautobot/ui/src/components/AppTab.js +0 -40
- nautobot/ui/src/components/Apps.js +0 -60
- nautobot/ui/src/components/FeedbackModal.js +0 -123
- nautobot/ui/src/components/FiltersPanel.js +0 -693
- nautobot/ui/src/components/HomeChangelogPanel.js +0 -98
- nautobot/ui/src/components/HomePanel.js +0 -58
- nautobot/ui/src/components/JobHistoryTable.js +0 -78
- nautobot/ui/src/components/Layout.js +0 -76
- nautobot/ui/src/components/LoadingWidget.js +0 -14
- nautobot/ui/src/components/Navbar.js +0 -204
- nautobot/ui/src/components/NotificationPopover.js +0 -27
- nautobot/ui/src/components/ObjectTable/ObjectListTable.js +0 -300
- nautobot/ui/src/components/ObjectTable/ObjectTable.js +0 -96
- nautobot/ui/src/components/ObjectTable/ObjectTableItem.js +0 -70
- nautobot/ui/src/components/ObjectTable/index.js +0 -3
- nautobot/ui/src/components/Pagination/PageNumberForm.js +0 -228
- nautobot/ui/src/components/Pagination/PageSizeForm.js +0 -65
- nautobot/ui/src/components/Pagination/Pagination.js +0 -67
- nautobot/ui/src/components/Pagination/index.js +0 -3
- nautobot/ui/src/components/ReferenceDataTag.js +0 -35
- nautobot/ui/src/components/Retrieve/RenderChangeLogsTab.js +0 -58
- nautobot/ui/src/components/Retrieve/RenderColumn.js +0 -30
- nautobot/ui/src/components/Retrieve/RenderGroup.js +0 -24
- nautobot/ui/src/components/Retrieve/RenderHeader.js +0 -125
- nautobot/ui/src/components/Retrieve/RenderNotesTab.js +0 -60
- nautobot/ui/src/components/Retrieve/RenderTable.js +0 -33
- nautobot/ui/src/components/Retrieve/RenderTabs.js +0 -56
- nautobot/ui/src/components/Retrieve/index.js +0 -7
- nautobot/ui/src/components/RouterButton.js +0 -10
- nautobot/ui/src/components/RouterLink.js +0 -10
- nautobot/ui/src/components/SidebarNav.js +0 -156
- nautobot/ui/src/components/__tests__/AppFullWidthComponents.test.js +0 -16
- nautobot/ui/src/components/__tests__/AppTab.test.js +0 -21
- nautobot/ui/src/components/__tests__/Apps.test.js +0 -14
- nautobot/ui/src/components/__tests__/Layout.test.js +0 -33
- nautobot/ui/src/components/__tests__/PageSizeForm.test.js +0 -13
- nautobot/ui/src/components/__tests__/Pagination.test.js +0 -43
- nautobot/ui/src/components/__tests__/Table.test.js +0 -39
- nautobot/ui/src/components/__tests__/TableItem.test.js +0 -39
- nautobot/ui/src/components/index.js +0 -4
- nautobot/ui/src/constants/apiPath.js +0 -13
- nautobot/ui/src/constants/icons.js +0 -15
- nautobot/ui/src/constants/size.js +0 -15
- nautobot/ui/src/file_templates/app_imports.js.j2 +0 -7
- nautobot/ui/src/file_templates/jsconfig-base.json +0 -12
- nautobot/ui/src/index.js +0 -65
- nautobot/ui/src/reportWebVitals.js +0 -15
- nautobot/ui/src/router.js +0 -77
- nautobot/ui/src/utils/api.js +0 -160
- nautobot/ui/src/utils/app-import.js +0 -15
- nautobot/ui/src/utils/color.js +0 -15
- nautobot/ui/src/utils/date.js +0 -14
- nautobot/ui/src/utils/index.js +0 -15
- nautobot/ui/src/utils/navigation.js +0 -48
- nautobot/ui/src/utils/session.js +0 -64
- nautobot/ui/src/utils/store.js +0 -242
- nautobot/ui/src/utils/string.js +0 -6
- nautobot/ui/src/utils/url.js +0 -4
- nautobot/ui/src/views/Home.js +0 -142
- nautobot/ui/src/views/InstalledApps.js +0 -80
- nautobot/ui/src/views/Login.js +0 -48
- nautobot/ui/src/views/Logout.js +0 -20
- nautobot/ui/src/views/__tests__/BSCreateViewTemplate.test.js +0 -11
- nautobot/ui/src/views/__tests__/BSListViewTemplate.test.js +0 -107
- nautobot/ui/src/views/__tests__/Login.test.js +0 -15
- nautobot/ui/src/views/generic/GenericView.js +0 -191
- nautobot/ui/src/views/generic/ObjectCreate.js +0 -96
- nautobot/ui/src/views/generic/ObjectList.js +0 -137
- nautobot/ui/src/views/generic/ObjectRetrieve.js +0 -87
- {nautobot-2.1.0b1.dist-info → nautobot-2.1.1.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.1.0b1.dist-info → nautobot-2.1.1.dist-info}/WHEEL +0 -0
- {nautobot-2.1.0b1.dist-info → nautobot-2.1.1.dist-info}/entry_points.txt +0 -0
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
import copy
|
|
2
|
-
from importlib import import_module
|
|
3
|
-
import json
|
|
4
|
-
import os
|
|
5
|
-
from pathlib import Path
|
|
6
|
-
import re
|
|
7
|
-
import shlex
|
|
8
|
-
import subprocess
|
|
9
|
-
|
|
10
|
-
from django.apps import apps
|
|
11
|
-
from django.conf import settings
|
|
12
|
-
from django.contrib.admindocs.views import simplify_regex
|
|
13
|
-
from django.core.management.base import BaseCommand, CommandError
|
|
14
|
-
import jinja2
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class Command(BaseCommand):
|
|
18
|
-
help = "Build the user interface for the Nautobot server environment and installed Nautobot Apps."
|
|
19
|
-
|
|
20
|
-
def add_arguments(self, parser):
|
|
21
|
-
parser.add_argument(
|
|
22
|
-
"--npm-install",
|
|
23
|
-
action="store_true",
|
|
24
|
-
dest="npm_install",
|
|
25
|
-
default=False,
|
|
26
|
-
help="Install UI packages.",
|
|
27
|
-
)
|
|
28
|
-
parser.add_argument(
|
|
29
|
-
"--no-render-apps",
|
|
30
|
-
action="store_false",
|
|
31
|
-
dest="render_apps",
|
|
32
|
-
default=True,
|
|
33
|
-
help="Do not (re)render Nautobot App imports.",
|
|
34
|
-
)
|
|
35
|
-
parser.add_argument(
|
|
36
|
-
"--no-npm-build",
|
|
37
|
-
action="store_false",
|
|
38
|
-
dest="npm_build",
|
|
39
|
-
default=True,
|
|
40
|
-
help="Do not compile UI.",
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
def convert_django_url_regex_to_react_route_path(self, regex):
|
|
44
|
-
"""
|
|
45
|
-
Converts a regular expression object to its equivalent react router path representation.
|
|
46
|
-
|
|
47
|
-
Args:
|
|
48
|
-
regex (re.Pattern): A regular expression object.
|
|
49
|
-
|
|
50
|
-
Example:
|
|
51
|
-
>>> pattern = re.compile('^other-models/(?P<pk>[^/.]+)/notes/$')
|
|
52
|
-
>>> convert_django_url_regex_to_react_route_path(pattern)
|
|
53
|
-
'/other-models/:pk/notes/'
|
|
54
|
-
"""
|
|
55
|
-
pattern = str(regex.pattern)
|
|
56
|
-
path = simplify_regex(pattern).replace("<", ":").replace(">", "").replace("\\Z", "").replace("\\", "")
|
|
57
|
-
return path if path.endswith("/") else f"{path}/"
|
|
58
|
-
|
|
59
|
-
def get_app_component(self, file_path, route_name):
|
|
60
|
-
"""
|
|
61
|
-
Obtains the view component for the given route name from the index.js file of the App.
|
|
62
|
-
This locates the `route_name` in the app configuration `routes_view_components` dict and
|
|
63
|
-
returns the View Component registered for the `route_name`.
|
|
64
|
-
|
|
65
|
-
Parameters:
|
|
66
|
-
file_path (str): The path to the JavaScript file to read from.
|
|
67
|
-
route_name (str): The name of the route to extract the view component for.
|
|
68
|
-
|
|
69
|
-
Returns:
|
|
70
|
-
str: The view component associated with the specified route name, or None if not found.
|
|
71
|
-
|
|
72
|
-
Example:
|
|
73
|
-
>>> get_app_component(file_path="/src/example_plugin/example_plugin/ui/index.js", route_name="example-plugin:examplemodel_list")
|
|
74
|
-
"ExampleModelListView"
|
|
75
|
-
"""
|
|
76
|
-
try:
|
|
77
|
-
with open(file_path, "r") as f:
|
|
78
|
-
js_content = f.read()
|
|
79
|
-
except FileNotFoundError:
|
|
80
|
-
return None
|
|
81
|
-
|
|
82
|
-
# Construct a regular expression that matches the specified key and extracts the associated view component
|
|
83
|
-
pattern = rf'routes_view_components:\s*{{[^}}]*"{re.escape(route_name)}"\s*:\s*"([^"]+)"'
|
|
84
|
-
view_component_match = re.search(pattern, js_content)
|
|
85
|
-
return view_component_match[1] if view_component_match else None
|
|
86
|
-
|
|
87
|
-
def render_routes_imports(self, app_base_path, app_name, app_config):
|
|
88
|
-
"""
|
|
89
|
-
Renders the imports for the React Router components of the App's URLs.
|
|
90
|
-
|
|
91
|
-
This method inspects the `urlpatterns` list of the `urls.py` module of the App and generates
|
|
92
|
-
a list of dictionaries representing the React Router components and their corresponding URL paths.
|
|
93
|
-
|
|
94
|
-
Args:
|
|
95
|
-
app_base_path (Path): The base path of the Django app.
|
|
96
|
-
app_name (str): The name of the Django app.
|
|
97
|
-
app_config (AppConfig): The configuration object of the Django app.
|
|
98
|
-
|
|
99
|
-
Returns:
|
|
100
|
-
List[Dict[str, str]]: A list of dictionaries representing the React Router components and their
|
|
101
|
-
corresponding URL paths.
|
|
102
|
-
Each dictionary has the following keys:
|
|
103
|
-
- "path": The URL path pattern.
|
|
104
|
-
- "component": The React component associated with the URL path.
|
|
105
|
-
|
|
106
|
-
Example:
|
|
107
|
-
>>> render_routes_imports("/src/example_plugin/", "example_plugin", <AppConfig instance>)
|
|
108
|
-
[
|
|
109
|
-
{ "path": "example-plugin/", "component": "HomeView"},
|
|
110
|
-
{ "path": "example-plugin/config/", "component": "ConfigView"},
|
|
111
|
-
]
|
|
112
|
-
"""
|
|
113
|
-
data = []
|
|
114
|
-
try:
|
|
115
|
-
module = import_module(f"{app_name}.urls")
|
|
116
|
-
base_url = app_config.base_url or app_config.label
|
|
117
|
-
for urlpattern in module.urlpatterns:
|
|
118
|
-
if component := self.get_app_component(
|
|
119
|
-
app_base_path / "ui/index.js",
|
|
120
|
-
f"{base_url}:{urlpattern.name}",
|
|
121
|
-
):
|
|
122
|
-
path_regex = urlpattern.pattern.regex
|
|
123
|
-
url_path = self.convert_django_url_regex_to_react_route_path(path_regex)
|
|
124
|
-
data.append({"path": base_url + url_path, "component": component})
|
|
125
|
-
return data
|
|
126
|
-
except (AttributeError, ModuleNotFoundError):
|
|
127
|
-
# If an app does not include its url.py file or urls.py does not include a urlpatterns, skip.
|
|
128
|
-
return data
|
|
129
|
-
|
|
130
|
-
def render_app_imports(self, render_apps=False):
|
|
131
|
-
"""
|
|
132
|
-
Render dynamically constructed app-related files - `app_imports.js`, `app_routes.json`, `jsconfig.paths.json`.
|
|
133
|
-
|
|
134
|
-
- If `render_apps` is True, these files will be regenerated according to the apps included in settings.PLUGINS.
|
|
135
|
-
- If `render_apps` is False but the files do not yet exist, they will be created but will not include any apps.
|
|
136
|
-
- If `render_apps` is False and the files already exist, they will be left untouched.
|
|
137
|
-
"""
|
|
138
|
-
|
|
139
|
-
ui_dir = settings.NAUTOBOT_UI_DIR
|
|
140
|
-
|
|
141
|
-
# Input files
|
|
142
|
-
router_file_path = Path(ui_dir, "src", "router.js")
|
|
143
|
-
jsconfig_base_file_path = Path(ui_dir, "src", "file_templates", "jsconfig-base.json")
|
|
144
|
-
environment = jinja2.sandbox.SandboxedEnvironment(
|
|
145
|
-
loader=jinja2.FileSystemLoader(Path(ui_dir, "src", "file_templates"))
|
|
146
|
-
)
|
|
147
|
-
template = environment.get_template("app_imports.js.j2")
|
|
148
|
-
|
|
149
|
-
# Output files
|
|
150
|
-
output_dir = Path(ui_dir, "generated")
|
|
151
|
-
os.makedirs(output_dir, exist_ok=True)
|
|
152
|
-
jsconfig_file_path = Path(output_dir, "jsconfig.paths.json")
|
|
153
|
-
app_routes_file_path = Path(output_dir, "app_routes.json")
|
|
154
|
-
app_imports_final_file_path = Path(output_dir, "app_imports.js")
|
|
155
|
-
|
|
156
|
-
app_routes = {}
|
|
157
|
-
with open(jsconfig_base_file_path, "r", encoding="utf-8") as base_config_file:
|
|
158
|
-
jsconfig = json.load(base_config_file)
|
|
159
|
-
|
|
160
|
-
if render_apps:
|
|
161
|
-
self.stdout.write(self.style.WARNING(">>> Rendering Nautobot App imports..."))
|
|
162
|
-
# We're going to modify this list if apps don't have a `ui` directory.
|
|
163
|
-
enabled_apps = copy.copy(settings.PLUGINS)
|
|
164
|
-
|
|
165
|
-
for app_class_path in settings.PLUGINS:
|
|
166
|
-
app_name = app_class_path.split(".")[-1]
|
|
167
|
-
app_config = apps.get_app_config(app_name)
|
|
168
|
-
abs_app_path = Path(app_config.path).resolve()
|
|
169
|
-
abs_app_ui_path = abs_app_path / "ui"
|
|
170
|
-
app_path = Path(os.path.relpath(abs_app_path, ui_dir))
|
|
171
|
-
app_ui_path = app_path / "ui"
|
|
172
|
-
if app_routes_imports := self.render_routes_imports(abs_app_path, app_name, app_config):
|
|
173
|
-
app_routes[app_name] = app_routes_imports
|
|
174
|
-
|
|
175
|
-
# Assert that an App has a UI folder.
|
|
176
|
-
if not abs_app_ui_path.exists():
|
|
177
|
-
self.stdout.write(self.style.ERROR(f" - App {app_name!r} does not publish a UI; Skipping..."))
|
|
178
|
-
enabled_apps.remove(app_class_path)
|
|
179
|
-
continue
|
|
180
|
-
self.stdout.write(self.style.SUCCESS(f" - App {app_name!r} imported"))
|
|
181
|
-
|
|
182
|
-
jsconfig["compilerOptions"]["paths"][f"@{app_name}/*"] = [f"{app_ui_path}/*"]
|
|
183
|
-
else:
|
|
184
|
-
enabled_apps = []
|
|
185
|
-
|
|
186
|
-
files_generated = False
|
|
187
|
-
|
|
188
|
-
if render_apps or not os.path.exists(jsconfig_file_path):
|
|
189
|
-
with open(jsconfig_file_path, "w", encoding="utf-8") as generated_config_file:
|
|
190
|
-
json.dump(jsconfig, generated_config_file, indent=4)
|
|
191
|
-
self.stdout.write(self.style.SUCCESS(f" - Rendered {jsconfig_file_path}"))
|
|
192
|
-
files_generated = True
|
|
193
|
-
|
|
194
|
-
if render_apps or not os.path.exists(app_routes_file_path):
|
|
195
|
-
with open(app_routes_file_path, "w", encoding="utf-8") as app_routes_file:
|
|
196
|
-
json.dump(app_routes, app_routes_file, indent=4)
|
|
197
|
-
self.stdout.write(self.style.SUCCESS(f" - Rendered {app_routes_file_path}"))
|
|
198
|
-
files_generated = True
|
|
199
|
-
|
|
200
|
-
if render_apps or not os.path.exists(app_imports_final_file_path):
|
|
201
|
-
content = template.render(apps=enabled_apps)
|
|
202
|
-
with open(app_imports_final_file_path, "w", encoding="utf-8") as generated_import_file:
|
|
203
|
-
generated_import_file.write(content)
|
|
204
|
-
self.stdout.write(self.style.SUCCESS(f" - Rendered {app_imports_final_file_path}"))
|
|
205
|
-
files_generated = True
|
|
206
|
-
|
|
207
|
-
if files_generated:
|
|
208
|
-
# Touch the router to attempt to trigger a server reload.
|
|
209
|
-
Path(router_file_path).touch()
|
|
210
|
-
|
|
211
|
-
def run_command(self, command, message, cwd=settings.NAUTOBOT_UI_DIR):
|
|
212
|
-
"""
|
|
213
|
-
Run a `command`, displaying `message` and exit. This splits it for you and runs it.
|
|
214
|
-
|
|
215
|
-
Args:
|
|
216
|
-
command (str): The command to execute
|
|
217
|
-
message (str): Message to display when command is executed
|
|
218
|
-
"""
|
|
219
|
-
self.stdout.write(self.style.WARNING(message))
|
|
220
|
-
self.stdout.write(f"Running '{command}' in '{cwd}'...")
|
|
221
|
-
|
|
222
|
-
try:
|
|
223
|
-
result = subprocess.run(
|
|
224
|
-
shlex.split(command),
|
|
225
|
-
check=False,
|
|
226
|
-
cwd=cwd,
|
|
227
|
-
env={**os.environ.copy()},
|
|
228
|
-
encoding="utf-8",
|
|
229
|
-
capture_output=True,
|
|
230
|
-
)
|
|
231
|
-
except FileNotFoundError as err:
|
|
232
|
-
raise CommandError(f"'{command}' failed with error: {err}")
|
|
233
|
-
|
|
234
|
-
if result.returncode:
|
|
235
|
-
self.stdout.write(self.style.NOTICE(result.stdout))
|
|
236
|
-
self.stderr.write(self.style.ERROR(result.stderr))
|
|
237
|
-
raise CommandError(f"'{command}' failed with exit code {result.returncode}")
|
|
238
|
-
|
|
239
|
-
def handle(self, *args, **options):
|
|
240
|
-
verbosity = options["verbosity"]
|
|
241
|
-
|
|
242
|
-
# NAUTOBOT_DEBUG is also set here so that `console.log` isn't suppressed when we want
|
|
243
|
-
# verbosity.
|
|
244
|
-
if verbosity > 1:
|
|
245
|
-
os.environ["NAUTOBOT_DEBUG"] = "1"
|
|
246
|
-
|
|
247
|
-
verbosity_map = {
|
|
248
|
-
0: "silent",
|
|
249
|
-
1: "notice",
|
|
250
|
-
2: "info",
|
|
251
|
-
3: "silly", # MAXIMUM OVERDEBUG
|
|
252
|
-
}
|
|
253
|
-
loglevel = f"--loglevel {verbosity_map[verbosity]}"
|
|
254
|
-
|
|
255
|
-
if not os.path.exists(Path(settings.NAUTOBOT_UI_DIR)):
|
|
256
|
-
os.makedirs(Path(settings.NAUTOBOT_UI_DIR))
|
|
257
|
-
|
|
258
|
-
self.run_command(
|
|
259
|
-
f"cp -r {Path(settings.BASE_DIR, 'ui')}/. {Path(settings.NAUTOBOT_UI_DIR)}",
|
|
260
|
-
">>> Copying UI source files...",
|
|
261
|
-
)
|
|
262
|
-
|
|
263
|
-
# Generate `app_imports.js`, `app_routes.json`, and `jsconfig.paths.json` if necessary or if requested.
|
|
264
|
-
self.render_app_imports(options["render_apps"])
|
|
265
|
-
|
|
266
|
-
# Run `npm install` and keep it silent by default.
|
|
267
|
-
if options["npm_install"]:
|
|
268
|
-
args = f"install {loglevel} --no-progress"
|
|
269
|
-
self.run_command(f"npm {args}", ">>> Installing Nautobot UI dependencies...")
|
|
270
|
-
|
|
271
|
-
# Run `npm build` and keep it silent by default.
|
|
272
|
-
if options["npm_build"]:
|
|
273
|
-
args = f"run build {loglevel}"
|
|
274
|
-
self.run_command(f"npm {args}", ">>> Compiling Nautobot UI packages...")
|
|
275
|
-
self.run_command(
|
|
276
|
-
f"cp {Path(settings.NAUTOBOT_UI_DIR, 'build' ,'asset-manifest.json')} "
|
|
277
|
-
f"{Path(settings.NAUTOBOT_UI_DIR, 'build' , 'static', 'asset-manifest.json')}",
|
|
278
|
-
">>> Copying built manifest...",
|
|
279
|
-
)
|
|
280
|
-
|
|
281
|
-
self.stdout.write(self.style.SUCCESS(">>> Nautobot UI build complete! 🎉"))
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
{% load static %}
|
|
2
|
-
{% load helpers %}
|
|
3
|
-
{% load plugins %}
|
|
4
|
-
<!DOCTYPE html>
|
|
5
|
-
<html lang="en">
|
|
6
|
-
<head>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="icon" href="/static/img/favicon.ico" />
|
|
9
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
10
|
-
<meta name="theme-color" content="#000000" />
|
|
11
|
-
<meta
|
|
12
|
-
name="description"
|
|
13
|
-
content="Web site created using create-react-app"
|
|
14
|
-
/>
|
|
15
|
-
<link rel="apple-touch-icon" href="/logo192.png" />
|
|
16
|
-
<!--
|
|
17
|
-
manifest.json provides metadata used when your web app is installed on a
|
|
18
|
-
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
|
19
|
-
-->
|
|
20
|
-
<link rel="manifest" href="{% static 'asset-manifest.json' %}" />
|
|
21
|
-
<link
|
|
22
|
-
href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"
|
|
23
|
-
rel="stylesheet"
|
|
24
|
-
/>
|
|
25
|
-
<!--
|
|
26
|
-
Notice the use of %PUBLIC_URL% in the tags above.
|
|
27
|
-
It will be replaced with the URL of the `public` folder during the build.
|
|
28
|
-
Only files inside the `public` folder can be referenced from the HTML.
|
|
29
|
-
|
|
30
|
-
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
|
|
31
|
-
work correctly both with client-side routing and a non-root public URL.
|
|
32
|
-
Learn how to configure a non-root public URL by running `npm run build`.
|
|
33
|
-
-->
|
|
34
|
-
<title>{{ settings.BRANDING_TITLE }}</title>
|
|
35
|
-
<script defer src="{% static 'js/main.js' %}"></script>
|
|
36
|
-
<link href="{% static 'css/main.css' %}" rel="stylesheet">
|
|
37
|
-
</head>
|
|
38
|
-
<body>
|
|
39
|
-
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
40
|
-
<div id="root"></div>
|
|
41
|
-
<div id="legacy-content" style="display:none">
|
|
42
|
-
{% block content %}{% endblock content %}
|
|
43
|
-
</div>
|
|
44
|
-
<!--
|
|
45
|
-
This HTML file is a template.
|
|
46
|
-
If you open it directly in the browser, you will see an empty page.
|
|
47
|
-
|
|
48
|
-
You can add webfonts, meta tags, or analytics to this file.
|
|
49
|
-
The build step will place the bundled scripts into the <body> tag.
|
|
50
|
-
|
|
51
|
-
To begin the development, run `npm start` or `yarn start`.
|
|
52
|
-
To create a production bundle, use `npm run build` or `yarn build`.
|
|
53
|
-
-->
|
|
54
|
-
</body>
|
|
55
|
-
</html>
|
nautobot/core/tests/test_cli.py
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"""Initial testing of cli.py"""
|
|
2
|
-
|
|
3
|
-
from nautobot.core import cli
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class TestCli:
|
|
7
|
-
def test_cli_setting_monkey_patch_return_value(self):
|
|
8
|
-
"""Validate _setting works provides the expected return value."""
|
|
9
|
-
storages_config = {
|
|
10
|
-
"AWS_ACCESS_KEY_ID": "ASFWDAMWWOQMEOQMWPMDA<WPDA",
|
|
11
|
-
"AWS_SECRET_ACCESS_KEY": "ASFKMWADMsacasdaw/dawrt1231541231231",
|
|
12
|
-
"AWS_STORAGE_BUCKET_NAME": "nautobot",
|
|
13
|
-
"AWS_S3_REGION_NAME": "us-west-1",
|
|
14
|
-
}
|
|
15
|
-
global_config = {"USE_TZ": True}
|
|
16
|
-
configs = storages_config.update(global_config)
|
|
17
|
-
for setting, value in configs.items():
|
|
18
|
-
result = cli._configure_settings._setting(setting)
|
|
19
|
-
assert result == value
|
|
20
|
-
|
|
21
|
-
def test_cli_setting_monkey_patch_return_none(self):
|
|
22
|
-
"""Validate _setting returns none for non-existent setting."""
|
|
23
|
-
configs = ("AWS_NON_EXISTENT_KEY", "STORAGE_NON_EXISTENT_KEY")
|
|
24
|
-
for setting in configs:
|
|
25
|
-
assert not cli._configure_settings._setting(setting)
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!-- Do not edit this file with editors other than diagrams.net -->
|
|
3
|
-
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
4
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1493px" height="1114px" viewBox="-0.5 -0.5 1493 1114" content="<mxfile host="app.diagrams.net" modified="2023-09-20T20:34:56.447Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36" etag="8MqqLsQ26hSuqF-_dJkI" version="20.8.23" type="device"><diagram name="Page-1" id="HMSZJAy41G0naUgyjOcL">7V1Xl5vKsv41XuveB3uRwyMggYQECggkeLmLnHOUfv2FmdHYCmPP9p5gn4M9toYGNVChq7rq6+ovMBN3XKFnnpBadvQFAqzuCzz5AkEQjgP9x9ByfGqBkKcWt/Ctxzbwe4Pkn+ynxvNltW/Z5cWFVZpGlZ9dNpppkthmddGmF0XaXl7mpNHlXTPdtW8aJFOPblv3vlV5j60ECnxvn9m+653vDAJPZ2L9fPFTQ+npVtr+0ARPv8BMkabV429xx9jRQL0zXR6/x75w9vnBCjupXvMFb1n8H8bZ7aGSmM4IoTBd7b7i+GM3jR7VT2/89LTV8UyCIq0Tyx56Ab7AdOv5lS1lujmcbXuu921eFUf9Edj/WlZFGj6TCu5bnDSpnvgKQsOxH0VMGqVF32DZjl5H/ePTemE+XTRc8/RQdlHZ3YuvCz4TsRc/O43tqjj2lzx94Sv8RPcnyft65kP7nY0gQj41ehc8PAuf/iQ87nPv3+nb//JE4n9AbvCNqf0jLb9AsA1aqI0/c+GHMySGwzr2cZSFsY8lLHRDWFGP7fKBcMPjYXk96BnNpEX2/eiG+D1RqnvyfKZkkib2FdmfmvTId5P+0OyJaPft9EBivx9HqKcTsW9Zw23usvSS6T9oDPxO2oC/kmXYezEMvmHYRK/0R+qVPYceBgWjuGDPmW0Dfb6WDwSi+gtALOseqPSdrZg7fILANxAivgHf+pdgyRtml6Fdmd4TzdO6ivykZ/TZjJwZ8YMS9X/Z4RVpt9At3/5+7o5YnC+fvCRDll56zxw/C8tSN+xonZZ+5aeD0BhpVaXxHWmq0uye0P04NPww7GLn46eXH87rZfb4oo7fDc9BZ6k/9DJt+s7Ks/R7ejZ8oazsxPSj/zkpJ8+ohXQ6w/SeplO5VSc9C9gdDuEkEkgknVkilkg4B8P4/gtEmyDtcnGQT3wlr9gVgMxq1fCaREBJt2cu60ygZoZbRcjUMIjBMSku+lY8ZGwxJ42u/72bEvCaRZrCM3ZkZ2ydgZeeXfDNhHCU9sD3d+GI4cpDdlL6A2NpDNLNakh/YC8N7BAgVn9cFSQcYMRyaax7QaDXNbmOsP5u9LKwRMY6pC1mkHvCJQhhfdpN0GbipASNb3C8wteVAS8J7DAx+44Sgej/F9v+P951GMSCl8fhvq0ZuCtBG+59wlbVppcBerjxEenkpRNApumx0sRZHh0aNev+RDioEESLiFkCOxIEO0BUD11bb4/w2iFtq8Gw2ZYzZ10p9FdOGrLiwYnOWEDUzts9GB3FgRi7XqarWZK2MhgKhYKCzECFDFJOcf/Z/2gItERsGNccR2oEftts61jdMkuAQZUcQxgJoAy+2tImP29kV1cY29zvtSPTn+OezhmqIoshNEn4mjsNNAg6zcFMUeUzB45OMwcp6cRDKUtsVpWLEZ3q+qlDOs6sllUeE4wG20+KNVMic3jb9PpNT7jAm7Bslk+ZUMQAZgNMhQyfetnqEBCFWC0OO1E/bCZBUzM+PuM2lBPLXDjTIhgzW0DXq13M+adDsZxwWE5rXt5lExfJUtM9iYzrO3S8jyJvRQlGf7eZB0/DFpN2ghUqXRoIjaKmuxhp9iHFs/Egyhh1ymnXXSJYFKpQ1CVl7TJHwNjuzGPBNDLlGcW26tQ23ujW4RQIh0iOUmoqswLtxKoWOvIgZPoqnVQ2kOYbMwXnQM2uDDlc9MpCr3jEGNwN2oK6zITjoJyrkgBZG3q+aCN4G1UQ1UjWghZXVe7sQWGGCJtip/I7ewX2r1aV5HGx1oROJ0OP2mxmRKRE6a4j+bXMeEYiecJqeJFZfwuaBbEI4KqASHW53cwiyU+QEpsyMpPGxxNCQahLmMouwiLdjneyLMPGblvT4iDT3HpPhCbDuIVbAN2DyKNzzJ0uLF1Yek5c9TeYih6Ud2sUKcQZkPmNG1t2PS11pbP307DWtfzkdQ63oDMNWiliKANGc6q23qA5cByfYp9m6aBpTuTSTgLDFVKWquqIWVnQXEQ1esYc4tN+s+r1h1YRBj/Mmu0RhQFL15xZo8QTpVUYy2IjYLPLlykfzKJdftwGbLLk3DBdzAerJLiwuJdWGY0EuVdp8wPvdjrKKHbSn9wfp4pZCguBUMz82NYY4GpWa0O1mZxOawkI5WR1kllmz8I7drd3aVWsBTbYmoaXLo7NgikKV1tu6DImOUaag/h6spJgB5xiSSCXG8V31AOecsJyy9fbZgE4e+zA9aMDxC+1lTQN0xkHuyzIZYImQiexsBQuNau1PfWMfkSle1IcNC4o0EUHljm9CAzNDhFAEZPdDrApf48pi/Uwuiihn4GUmy6QRZWksh6tK3MSrgK/rjiYbZjDojkQirEPpQwqcSx0dgfIrb3hm0dxy2vdMfBPdXqKQTjUExRlp4GMm0nQ5VYdKCQ72+brgV4yJu4qRt9yGYSLc2pvxSXhirsMtFs9A/TIEACPzgZ2nXpqrGANpfV0l+PE1KV1Tj8daSI1UtLBGQWrjDCUGsVZoe6CPFS+LjL5Hhe5dh/1vRqi3PdKYv3LZAYBaHRuG6dtCkqwhsB6/tCnUWu7gra8CF0dojU3yHwrLKsi4QHiBFQ8uzmFILWJUOfUTcGEUnDDoTX5wKl7ploezQwbrIN0onS0WbuhV6GQ5kkqgHHJtnRkfx1ER16VCjnZKLmHc1LLn1J2P+MOfrD3/GyXodNhGOSWA2myY9/Q/5KFJOVDSbteyEXkKToBk8EJ3Ie9FSwWfsLrU2Sq8PtByVhr+AatY3tlYe5klqIOJ2Ap2hkgu+QmpytSb3vjwOYyvj5E26VfrTvExQtnn9KVCqXbLF5x0DINlbUBLm0Ih5RQ32kWuAikwI79bcbXkueya61YcxMFs2bNIhe5YA+L3EYdXDYT0MVZBdkCVACYqJuyxQSQ1m3ngAmjaasvndQwpxrtc9qJjoZB1Chb1aA5bKHAIRNIztJyF9asznOWcfcnkd2os1gA9iLV97rYp73EaIKsMC4kD71SsJamOumEhjDd9wxj1Z1ZbEKpt1u4JNmlcOxm0AEXmZY5opOcj1omLAkbMtkyCh4ewJ5jYWJrp1oojxgRT9nVtJ3R0yoRWFQr2tnGbTLHVvnVvL+4Y2TZ2XoOR5hSeVT2COLNbEDfzsjdchW1ND9L60UWzpw9dRQ4H5eTeCf0LgntEbXHt21waDqQVFVJUrB5A6BCeOSDuT7wm/JBryObMFJFqc5ZHhUwDNgdClEvdQmZiRNLNZASPlDL48LYeJXFAFqzKm2Yq+xQ3GvNdo9Z9YYMvGUWlE2Jr6c0p5YS7OLrteGrgUXzStVxMYsuO0pLCk8xdrYN6mKXY/4yq6yVLy0XpAST9iahJ3N2xTXkoTf77PAC7qxK8OMeq1YHVQPXxwhvrH70OEQaJDbt+n/fZkYBYpczCgK4nVKg8O2MAifeaUaB3MwoVo7jm/YbziaAcS7xdnOJSissMyvb6XzvdIU5zCc2M7/MBAgfBht9xc3yDaXigbOGInPGpCKIqMtmoTFGwG87YB1GuN6PafaunykMPkkRaIYBwDW4GiRJOCHwfjBzmYQ74PoAI9ai0hc7vvZA7uTk+UyfuTiIJ8UJ70WHxephLmAM48z0sKvtwUFXRBLsfRTcxjBbh7D+VNAN7tC2yyE33pFqEYPA4F8StF3Dg6udgad+VAUCS8zt/pj0OmuNby3SWoAzAhycv5gjDvTD/KPvyFCtBg+I5eB3QaFuoIOvVXBToeT6S/DaMsrCg7l+BCOpxaQiGqp1YGeSYbDRlU4GGtTKsOT1pr9438678silK22C0MGE7IYhc7AgB2RqD7fC8OOEGSh7HAxQDdcpaQ9+6Qw4zTmlaZabrUJhYAnKR13bCVkyb8tjPyFY1pHfVEEND/YKSBhdzySdtSiGT1uLV6S8tDeFZjETBjvMvRmoE1wnszS68uXjrqZqQQaiCW1OQ3CxmNAbfTctARZTlCW9NTe+nO9qt17KA8um64XpydxenkeLKZ4tpU7k1wPRuvU8EbJaOuRH8BjEnVOUkozvN3OJmZwkhaPnrrqbIodsi0kUP1kYUy9MTL43BR5PKpQ3n69FPlR7MwXF/LyOZtmcCoWslFipn0yhahwm6JQOXb88Rltd5mF9H/qYZvJbOCw224W2A0I+BvvZm5EZhXC+N3WSPI5WXWM3TZ/v7Uw9ObF4e/9874m4kNWpT2eCtLUWa4li+Z5H0TzEpwdloUvrdMtJDH9aWNNsHiMSkO6yjDy2XsLAR9SdB0K+37OnDp1VR3SvlhkgUBv1mHX9k3Fqu1S4jRNtFgI/1SLdRVKjBkRuBoTSjNqsdDl1eXbCqBFTrdaSO42FXJCmkuMv/UiMZ6hMB8yW0/ZzkWbh/FAlC30tptOtx4DLpXT0oi0drpLFqUziTaQ3vcvsIXM+l+VIcnraSYkxTH5hFZjBw8Q32JG4OMtBtJvmfooN83Ksl6LcO9CRpOx0p5/TzbeKXptgneJFKtNFtGx1ufG2BMqbtg7qnBXj3EqyNUugQt7xlqo0SMdxxq8FG+OVclJJvf0nNoa9rxAn3zIQl4UTYlDAJVOFxQJUFeMgxra5VaalXbfUqVuoCRPqGjb39jEUkoWRLzKyWjkeTJIenkAuasXrSjmuy1oq89kRExQwlL0y7xg2oDNu4lX9v5oLqE5c87mSr0RYEqmVbwxzc86k80wLduBgg6eSiWjHXexgeu966UjsD7O/wUM9iBN7EssCJAxHm/yErzzXYNp+Ij/l0VPvAwCqvKozG4DWVGsdgarg8c4Ew3q7U2v1MC/jIKmTCp7xDZBNDCyZFZI/s0/s4KGHAMT2szAWoyZYkgU7wPAYiIlilYsSSmsOgwe1dT20TA7NKVyu6bbbxnhltPysWTe5yTLk4N20kzfyEOBXOAh3Qo7v5iCgbx18v7aKlybbgYa/g4WP9LJ86vLSfH9Pf2R24fdvaRfD7fzEfbr8Lbjwimg9gn9stB77WbT+u7P26Hd998SE9VLqv0brZmgMjs9/YRz/mZu/4h75Xrx7RcLwvZ1hZALhFPUnOMPQlTMM/K4zXChBVebzdjIDBkcYNvTeoqH1YQ3jSd36rBMvAm/wcdcTiAGllrGZ3gStBKDbrnboYlfNVHaGWZVZevu9rycbVLcHW0TjmSPHBc6DBFmrFYH6AV3ujzv0FDXb4ypzcFx01QblT1YI5iSxyxymlxG2hOrBR61I+6RWlVWe1kZj5C0xS6QGzYMVcFhXi+OCTjlbic1VVTpCQ8CS8RBxZoN6H+0XK95J8h0Oa73nVhmbGoP3UByplkjC61SuEgIf4vDwsT2Gxgo+sS2Ritm2UfSJFMOsF+8nFnGE1pB7Ktf9hQKK66SKSdlyBnuYJAZx4B9Q7DDkC5Z4gegLQwKOHFdtJSnYQg0gL2uCWFDulFapDaAw+xKihHKR9u41O3fbisLyaMpN0z2FBYgFbGYGt6FsgU0bg+lUX0z6G0rHeaDiaKqHpL7rHyJMe7JZfCVTbO4avpyuRQ8220ihDbys8rmqBP3QYxcUK7bV5gjweyncTjKy91MVb7lnYk/t3I4BdAKPOk83ty3ByqkaH5wwtCJ6w2xp1rKwAMS6E2Me42YyxY/CNG2o0McpfBrtc54GRAgLWJYtYxEyMK/UN5vFvhqIyRBqAZuurKhJCG+3k0GWiphvE7c68LDLqb1LHnPJEDeU99KO3eRLzfEgDxXkOSE7WlXQHsEn2TY+kVwZUU6jNk0u5RomQpPZErA0bVI5stNVAdcsm9TF8CnPRkvc3DSxF1fEMmbikO7kmF/4/FHlQj0+ca0VO3wRRg085TTH6D3rFRz20rIoGjJptx0YOEdK3fkALm8DcMsNM6+pseviYfpG+jrTNe0xc3lZNgFJ8HIFLpUhebSSl4KbLQ2ZV9RTu9tsKi3e5Q4pBHZyiNc4s7aqk166OLKfz1lgPpEPZbZM1WnvzxnM5rRgEs71/P3Cllzs6EwTNlBDUdp3YjfH5/jUgZu6oRXNnwZYUxuUnqq98qSqOXi1RbcpFfRIK3ThBkd5nof1kYYKIF7hq3gOy13ZX7TcuZVotB6bYz46zA9XnQZbtlAfJZWqI2umACsLVGDZUnvVYf/3PFo8DNoo3f8A38D+iwzwjYCGj+d/aD8QMg/niZfOo5O3sTnPtuSM4SHAb+iNFTq7bR/iyhH/xJUD/7UrZ+k24Zj3cBWYSdiGc4FfId6G6s/u8pnqd9xnDLlj+SEEfCeqkz9z234EWdRlb1ztIdxG/Tc6aSBAXPEOhG54BxF3ePducIuzKz+6baPbNrpto9s2um1v7La9gdnArzJqMIx/rpcF3qbUzuGZrLC/58WAbxjyDfg23A0Gz1cMmZfvF90YGzuxqAGePYzWQ3zMf3Sv9KK6bf5hFH/Rdj+4bdFgLobwkPtw3ZWFeTybFpZdXBuqq3yWbbn2+TgtKi9100SPpt9bn95nuO7nzO7fOa0L0/51QKV/ddeufmnCX0Z4At8QBCIvY33g60Ku57bCjvTKby7f6Z5YPT3FejCRPwgwdCnAGHDVxSMtnr71XThvO8IvO0LRq44eiXXTUS86+vGHy57mUi8+MIpe0uscXXvpuW6ux7ErJXt8gqtvnx8ndZzSrr5cq+UzL/+Fpr4itv0uGvehmnKW5l+rCnxfVT5GDUDgSg9g4jf1AATwa5PwOkV4M7m6F+19HN+9S/E6z/KGScPXM1EHPMUwzUHvAirWhT342uUPFmPo9Dnq/93Q/LP7ANeIDuIFRMdzruHuHV6+fuj/VVCSl278A5SE+OHtH/u9vNeQub/TdmFa/5MpRULfQOyM4e+HnH9PrTeLQpTPqTr0+9FumIhOhiTb/eBD2ruITvQw3Hq+ZdnJL4fYyxVV4BuFKEAEvRxZgNsQBXhvkCTfy9uEbrOCY4hiDFGMIYoxRDGGKN4ls3TOHKEflTlCMeCzM0fwaGVGKzNamdHKjFbmo/AL5IOVAV+CL2AfbIQI5NPhC/A9/MIYVvn3YZWnTMRDrAD42yIrb0yNr8PJHylykZv5r6fITbbqr6DIxyrUQLDeFf72mVR6kRjFGOh7hfWDMeLC+p2N4Y9hvntFkJ7rdL19Vvm29MtlPPyDZ2P/gUsrxzItX8YyLWOZlrFMy1imZSzTMpZpGcu0jGVa/lvLtJBX0a97oNIPLdOC364iuXH5x5zLmHMZcy5jzmXMubwu5/JcWvyNakZcr0SAIORzEybntXLvjm/+VysIfhjgv7zh+oAng/lr1DN0n6kfg3omr2QGvF7L+HrQM3jV03UdkvcGPUO3AcobGOoYpBzrv43138b6b2P9t7H+21j/7YXQwzPQ5id+5IeWgCNuTfvPVrTeoCbefUXrW/if9yz0H7mi9dGz/fmKVgS69AU/dEErdl3HA/hNnxa/KsL3vLLmvRe0gv9sQSuEwVc69kkLWolXwLTftMIPahMWcuNf92cIyICx4RvvXuEHOc/0Pq/CD3G73vOXJX4uMDpvhrn520r8ICR4w7yPLfFDvKIo1riyYYyyj1H2Mco+Rtn/jBI/2DmU+GmB9VdkY//+wiFn0/jLGQn5Avs+qXAI9vsxdPxa0D42hn72hkaQ7wjyHUG+I8h3BPmOIN8R5DuCfEeQ7wjyHUG+7w3yvTet/FCQL3kvzzbGIsdY5BiLHGORYyzyj4xFogD8ubFI8nZh+PvEIv9AkO/ZYP46Qol8ZoTyGuSLwOTvBiivQL4wcdXTewcob2vbg/gA8j1jfD/eYfkPjFGOGN8R4ztifEeM74jx/RMxvsazC7R6tGZf3mwF2S329557+aHYX/If7f/87yGFjmNj5t1NAy2cNADgIyCFzz7+J24a+NPNnu9DCpkRUjgwD4dumPexkEJy3Ox5DOONYbwxjDeG8f6aMB5BfvKugeQrcOh/P6SQfP22fS/s2/dJmELy2tP7bUwhQV719N7r8s/O7YsL8yF4DNqNwMIRWDgCC0dg4QgsHIGFI7BwBBaOwMIRWPhmwMJ7k8sPBRaCwO3CojEkOYYkx5DkGJIcQ5J/aEgSJz65fCh43tz6vxFa+GwyXxGqhD8zVHkNLsShq7zmb4MLMfyqp3ePVN7Z4+gpUgmNkcoRXjjCC0d44QgvHOGF/9HwwjeJP1zDCO/5kh8KI4TvwQjHvXv/9d69N4nccWPWX1MLejtqvRnM8m/eLRUEkcvhhsBuMZjgvfGGJN9pvIHG8eZdNOiiGtU41vyEUtfL4sah5l2GGvSOZ3N/qHm/MNnLY8298ujgWB/9tyJyMPbKgNxjtu2nBdKx80LVJyn6+rEV0p/7OdvL60jba2N28NXKFeI6+PdOFdIJ8p9VSCefmPfpFdJB4N7ijJeVlfhrdfXXunmpzZ+gqE8x9p9q6p+1lcFZ7v/1VgYE8kGKiv8zRSWgP2QrAxC4B4gfPfjRg/8oSn0dTn6nFjlS6xXUAiHib6XXvYjaUBFunKH9oxna1cKZ3kU9x6J/nKFhd2w2SFzZxLebokG3Xp+wXkp9i7Jln2WgOLNyWFRN3bp3UeRn5QN/njKqZpTW1gvseNHBu9h21h0cwvOJH1PZl6Ji2Y5ePzzkJc/ge5O0ywQ2+/DnbXgLI5fMhVHyHnPP+4VdMBeG3ou54C1sQOCEXd8i2lWbFuGPDH7FEIe9Ktg+bmf6FliEQks8IxfaiWA7Xk5sS1mYz4CHFHxPYzvdJ9oEJNhpDVYDEqutI1farlYdr++0zPczyCFgey4hapPhjrVFQboJKhJcVycvIE6u6MTyAEUAnEGy6fjYMnsJn2pcBuMPCwTg7YA9qANwDVYrdGjD9wcC9pxlHenWADJvimj41AorYmU0buhD1AyICZYYoOKOGMGGXgciCOJ1NSTqbdJyanxAUgCw7eAmhwosWQelRVpDQh1ba6f+84CJkTus5zqcTpsZjEFo3fXNaHSMGapFcy7C4rlGcu5phaGwbypxYRIhq7J848MluXcagLAarOM6Wz1MmAOMV4PN3fFNuw0bgE+IzfB03BFns2GcY6mMCXpxbB+gCTQUDuTltWmXKfziNGBUl7Ur9KJOIyvViBw4PCKn1clTU4k2XZNjhSqK5YVcnzbQXFzK8B5jfE/Z1Jyvlih/iggI6kyKBZMjuUDJjU7Rp4xgTTHjWABXNZkyF1RDqTFMrME5ouUbh9F3Iu3SwORoK3KEYTWNtFkEiXBeDK/C5lETpnwoWs0K9bpWqXf5QMBTmlNLag9V7HYPG1UM0tgJRhOBphQJiW1WWSILf2PYjLhJjXKxTbmASBhnSRlLi9BhbiMYwRwyQq5oqI1c6+6a8gt2Q8cItPVSMZ87Mz9WfDXNEAkp9cyXteV8seXTIBwWpXGe1oiAtoc7JY5tyXKoLCP0yEnRw8pcCMYJctiaAVetnIfyhi5nzGQteXTeSawuNzG/oJteUDTfZxbhXklK36P3u/kEnia93M8l2Nhx4XazoUyVXDeMJa84KeTTaGMwm2XKTd0qI+fTRcwIS30xxXySiUNsO0kUOVsB/ioaVnsgwWkNQDnSTYTVyiSYFtvMlruILdY2UGt1tyEgDGRyE1LblkH1ZMazRxpoD1NWU5goqDc5WOjNxs/NxaQccvsnjp/oYoakYFFhWrQONtMpNYvXpyGLBu5KENkMMt3lMy5iNsJcPciztX6YSJEBRa3Fbo/Iol51MrLrBATWir1NFiYycd0pNbEXPSNm/LFEsc2Kbvc7b7B1XamUoYfnc8neYZW1NtaBqVMuNbhcpDuN8/0MPApd2mEaUy5pAXNRquj2myg88cXKEFcRv98e4aNfrDcLaQDfnKIdKtnN3jNMvnCZbqfM5FQJ82YrPmATfI5PdySkZBpTZMaBg076fFi1ViQaXToq71AtrjFd6zOm6AlTaMJt9id0tnX6AYR1GVDNdoM67xb5dFkG2x0mJZvlCsZogVmVGpUe6AVNsW3AYoyHlnQTB3hyMHdW7ybT8wNH+Diq12Adg5B4aGeDe9D/3OxSf2v9nwIC/eUo3f8A34aUGtObKGT4eP6H9vaD6c+DDyfRn5wbKs9cnkQnb+M9gOevnEP3GHTHe7gLccXezTG8XRz9h4f1Or86DH0OjH48VB8Oe4Y/Hk66p1s+HBx/OFjbhd/TbTDsj21JT8PHzkD0fPzYGwGdj79393B0/PHousM3DCI+e3W/3g/1vtB9TIDwK3TlEiO/C7/9Cl6tGoI/Gn57fvu/RxfO8gteCi/6ybILvToADn4qdPzrdR4KhX9XeKHrXVmv5/LvLryv2Pr2rxBeEvsd6f1uFsBLswD+Y6vwhorw+kzQ5yoCdJWd+e01FF/B69UYH7yDHAjc04OX85vImN98v+H9sTz5z9Ob6CWc5YPTm1e1idDrUfvV6U3oF4bkndKb6D/EIaBP2eQ/IL15W0n9Z3qK/bV6+qmYoVer6uNepz9X1XPE93MwQ+DVROO3MUPX84yPwgydN1N9ra5iT0Pj5+sq9FG1+d4+SECgF97g47T+d4ME0FWQAPrsidarqwlCnxokgK/3/7h2Cl8N97uCI8HXcKR3n2Xdbnz9qzwqc6sqYx4VRi74SIJ/Qh717LP9A+be8T1G5l4Zagwm/gTm/rXBvbeyOy8bxfPhp8RIXh8shD+1JC4M/iKy8WojdmUNsetC/O9txM5K9jeqAoFdqgLxL1UBulQF6FNV4dm9+KUuPAYWP0sVwKuwCYn+pipcg+VI4K1UYchcpwN66fvlvcX1hNSyhyv+Hw==</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="1" y="1" width="1490" height="1110" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="3" pointer-events="all"/><rect x="1" y="1" width="360" height="1110" fill="#e1d5e7" stroke="#9673a6" pointer-events="all"/><rect x="1" y="91" width="360" height="60" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 358px; height: 1px; padding-top: 121px; margin-left: 2px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 32px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Namespace "Corp"</div></div></div></foreignObject><text x="181" y="131" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="32px" text-anchor="middle">Namespace "Corp"</text></switch></g><rect x="191" y="821" width="53" height="78" fill="none" stroke="none" pointer-events="all"/><rect x="192.99" y="823.07" width="49.86" height="74.78" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 228.24 864.6 L 231.57 864.6 L 231.57 872.57 L 228.24 872.57 Z M 215.8 864.6 L 219.14 864.6 L 219.14 872.57 L 215.8 872.57 Z M 203.37 864.6 L 206.7 864.6 L 206.7 872.57 L 203.37 872.57 Z M 226.91 861.61 C 226.04 861.61 225.61 862.22 225.45 862.55 C 225.29 862.88 225.25 863.16 225.25 863.45 L 225.25 873.72 C 225.25 874.01 225.29 874.29 225.45 874.62 C 225.61 874.95 226.04 875.56 226.91 875.56 L 232.9 875.56 C 233.78 875.56 234.21 874.95 234.37 874.62 C 234.53 874.29 234.57 874.01 234.57 873.72 L 234.57 863.45 C 234.57 863.16 234.53 862.88 234.37 862.55 C 234.21 862.22 233.78 861.61 232.9 861.61 Z M 214.48 861.61 C 213.6 861.61 213.17 862.22 213.01 862.55 C 212.85 862.88 212.81 863.16 212.81 863.45 L 212.81 873.72 C 212.81 874.01 212.85 874.29 213.01 874.62 C 213.17 874.95 213.6 875.56 214.48 875.56 L 220.47 875.56 C 221.34 875.56 221.77 874.95 221.93 874.62 C 222.09 874.29 222.13 874.01 222.13 873.72 L 222.13 863.45 C 222.13 863.16 222.09 862.88 221.93 862.55 C 221.77 862.22 221.34 861.61 220.47 861.61 Z M 202.04 861.61 C 201.16 861.61 200.73 862.22 200.57 862.55 C 200.41 862.88 200.38 863.16 200.38 863.45 L 200.38 873.72 C 200.38 874.01 200.41 874.29 200.57 874.62 C 200.73 874.95 201.16 875.56 202.04 875.56 L 208.03 875.56 C 208.9 875.56 209.33 874.95 209.49 874.62 C 209.65 874.29 209.69 874.01 209.69 873.72 L 209.69 863.45 C 209.69 863.16 209.65 862.88 209.49 862.55 C 209.33 862.22 208.9 861.61 208.03 861.61 Z M 228.24 847.46 L 231.57 847.46 L 231.57 855.43 L 228.24 855.43 Z M 215.8 847.46 L 219.14 847.46 L 219.14 855.43 L 215.8 855.43 Z M 203.37 847.46 L 206.7 847.46 L 206.7 855.43 L 203.37 855.43 Z M 226.91 844.46 C 226.04 844.46 225.61 845.08 225.45 845.41 C 225.29 845.74 225.25 846.02 225.25 846.3 L 225.25 856.58 C 225.25 856.87 225.29 857.15 225.45 857.48 C 225.61 857.81 226.04 858.42 226.91 858.42 L 232.9 858.42 C 233.78 858.42 234.21 857.81 234.37 857.48 C 234.53 857.15 234.57 856.87 234.57 856.58 L 234.57 846.3 C 234.57 846.02 234.53 845.74 234.37 845.41 C 234.21 845.08 233.78 844.46 232.9 844.46 Z M 214.48 844.46 C 213.6 844.46 213.17 845.08 213.01 845.41 C 212.85 845.74 212.81 846.02 212.81 846.3 L 212.81 856.58 C 212.81 856.87 212.85 857.15 213.01 857.48 C 213.17 857.81 213.6 858.42 214.48 858.42 L 220.47 858.42 C 221.34 858.42 221.77 857.81 221.93 857.48 C 222.09 857.15 222.13 856.87 222.13 856.58 L 222.13 846.3 C 222.13 846.02 222.09 845.74 221.93 845.41 C 221.77 845.08 221.34 844.46 220.47 844.46 Z M 202.04 844.46 C 201.16 844.46 200.73 845.08 200.57 845.41 C 200.41 845.74 200.38 846.02 200.38 846.3 L 200.38 856.58 C 200.38 856.87 200.41 857.15 200.57 857.48 C 200.73 857.81 201.16 858.42 202.04 858.42 L 208.03 858.42 C 208.9 858.42 209.33 857.81 209.49 857.48 C 209.65 857.15 209.69 856.87 209.69 856.58 L 209.69 846.3 C 209.69 846.02 209.65 845.74 209.49 845.41 C 209.33 845.08 208.9 844.46 208.03 844.46 Z M 228.24 830.32 L 231.57 830.32 L 231.57 838.29 L 228.24 838.29 Z M 215.8 830.32 L 219.14 830.32 L 219.14 838.29 L 215.8 838.29 Z M 203.37 830.32 L 206.7 830.32 L 206.7 838.29 L 203.37 838.29 Z M 226.91 827.32 C 226.04 827.32 225.61 827.94 225.45 828.27 C 225.29 828.6 225.25 828.87 225.25 829.16 L 225.25 839.44 C 225.25 839.73 225.29 840.01 225.45 840.34 C 225.61 840.67 226.04 841.28 226.91 841.28 L 232.9 841.28 C 233.78 841.28 234.21 840.67 234.37 840.34 C 234.53 840.01 234.57 839.73 234.57 839.44 L 234.57 829.16 C 234.57 828.87 234.53 828.6 234.37 828.27 C 234.21 827.94 233.78 827.32 232.9 827.32 Z M 214.48 827.32 C 213.6 827.32 213.17 827.94 213.01 828.27 C 212.85 828.6 212.81 828.87 212.81 829.16 L 212.81 839.44 C 212.81 839.73 212.85 840.01 213.01 840.34 C 213.17 840.67 213.6 841.28 214.48 841.28 L 220.47 841.28 C 221.34 841.28 221.77 840.67 221.93 840.34 C 222.09 840.01 222.13 839.73 222.13 839.44 L 222.13 829.16 C 222.13 828.87 222.09 828.6 221.93 828.27 C 221.77 827.94 221.34 827.32 220.47 827.32 Z M 202.04 827.32 C 201.16 827.32 200.73 827.94 200.57 828.27 C 200.41 828.6 200.38 828.87 200.38 829.16 L 200.38 839.44 C 200.38 839.73 200.41 840.01 200.57 840.34 C 200.73 840.67 201.16 841.28 202.04 841.28 L 208.03 841.28 C 208.9 841.28 209.33 840.67 209.49 840.34 C 209.65 840.01 209.69 839.73 209.69 839.44 L 209.69 829.16 C 209.69 828.87 209.65 828.6 209.49 828.27 C 209.33 827.94 208.9 827.32 208.03 827.32 Z M 196.43 824.21 L 238.54 824.21 C 240.08 824.21 240.87 825.49 240.87 826.96 L 240.88 895.82 L 194.09 895.79 L 194.12 826.54 C 194.12 825.27 194.96 824.21 196.43 824.21 Z M 238.54 821.08 L 196.58 821.11 C 193.89 821.11 191.05 823.1 191.05 826.68 L 191 896.8 C 191 898.21 191.72 898.9 193.01 898.9 L 241.8 898.92 C 243.14 898.92 243.93 898.35 243.93 896.9 L 244 826.89 C 244 823.77 241.6 821.08 238.54 821.08 Z" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 906px; margin-left: 218px;"><div data-drawio-colors="color: #232F3E; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(35, 47, 62); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;">Datacenters<br style="font-size: 16px;" />10.128.0.0/9</div></div></div></foreignObject><text x="218" y="922" fill="#232F3E" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">Datacen...</text></switch></g><rect x="61" y="821" width="50" height="78" fill="none" stroke="none" pointer-events="all"/><rect x="75.18" y="822.75" width="21.02" height="24.53" rx="3.15" ry="3.15" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="62.92" y="840.27" width="45.55" height="57.81" rx="6.83" ry="6.83" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 101.14 892.51 L 104.65 892.51 L 104.65 883.22 L 101.14 883.22 Z M 94.95 892.52 L 98.46 892.52 L 98.46 883.22 L 94.95 883.22 Z M 87.23 892.52 L 90.74 892.52 L 90.74 883.22 L 87.23 883.22 Z M 81.11 892.52 L 84.62 892.52 L 84.62 883.22 L 81.11 883.22 Z M 73.32 892.52 L 76.83 892.52 L 76.83 883.22 L 73.32 883.22 Z M 67.06 892.52 L 70.56 892.52 L 70.56 883.22 L 67.06 883.22 Z M 101.14 878.53 L 104.65 878.53 L 104.65 870.89 L 101.14 870.89 Z M 94.95 878.53 L 98.46 878.53 L 98.46 870.89 L 94.95 870.89 Z M 87.23 878.53 L 90.74 878.53 L 90.74 870.89 L 87.23 870.89 Z M 81.11 878.53 L 84.62 878.53 L 84.62 870.89 L 81.11 870.89 Z M 73.32 878.53 L 76.83 878.53 L 76.83 870.89 L 73.32 870.89 Z M 67.06 878.53 L 70.56 878.53 L 70.56 870.89 L 67.06 870.89 Z M 101.14 866.23 L 104.65 866.23 L 104.65 858.58 L 101.14 858.58 Z M 94.95 866.23 L 98.46 866.23 L 98.46 858.58 L 94.95 858.58 Z M 87.23 866.23 L 90.74 866.23 L 90.74 858.58 L 87.23 858.58 Z M 81.11 866.23 L 84.62 866.23 L 84.62 858.58 L 81.11 858.58 Z M 73.32 866.23 L 76.83 866.23 L 76.83 858.58 L 73.32 858.58 Z M 67.06 866.23 L 70.56 866.23 L 70.56 858.58 L 67.06 858.58 Z M 101.14 853.99 L 104.65 853.99 L 104.65 846.35 L 101.14 846.35 Z M 94.95 853.99 L 98.46 853.99 L 98.46 846.35 L 94.95 846.35 Z M 87.23 853.99 L 90.74 853.99 L 90.74 846.35 L 87.23 846.35 Z M 81.11 853.99 L 84.62 853.99 L 84.62 846.35 L 81.11 846.35 Z M 73.32 853.99 L 76.83 853.99 L 76.83 846.35 L 73.32 846.35 Z M 67.06 853.99 L 70.56 853.99 L 70.56 846.35 L 67.06 846.35 Z M 87.28 841.58 L 90.79 841.58 L 90.79 827.87 L 87.28 827.87 Z M 81.09 841.58 L 84.6 841.58 L 84.6 827.87 L 81.09 827.87 Z M 107.33 895.5 L 64.67 895.5 L 64.67 843.51 L 75 843.51 C 75.97 843.51 76.75 842.73 76.75 841.76 L 76.75 824.5 L 95.22 824.5 L 95.22 841.76 C 95.22 842.73 96 843.51 96.97 843.51 L 107.33 843.51 Z M 107.7 840.01 L 98.72 840.01 L 98.72 824.13 C 98.72 822.41 97.32 821 95.59 821 L 76.38 821 C 74.66 821 73.25 822.41 73.25 824.13 L 73.25 840.01 L 64.3 840.01 C 62.57 840.01 61.16 841.41 61.16 843.14 L 61.16 895.87 C 61.16 897.59 62.57 899 64.3 899 L 107.7 899 C 109.43 899 110.84 897.59 110.84 895.87 L 110.84 843.14 C 110.84 841.41 109.43 840.01 107.7 840.01 Z" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 906px; margin-left: 86px;"><div data-drawio-colors="color: #232F3E; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(35, 47, 62); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;">Offices<br style="font-size: 16px;" />10.0.0.0/9</div></div></div></foreignObject><text x="86" y="922" fill="#232F3E" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">Office...</text></switch></g><rect x="361" y="1" width="470" height="1110" fill="#f2f2f2" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="361" y="21" width="470" height="90" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 468px; height: 1px; padding-top: 66px; margin-left: 362px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 32px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Namespace<br />"MPLS Backbone"</div></div></div></foreignObject><text x="596" y="76" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="32px" text-anchor="middle">Namespace...</text></switch></g><rect x="321" y="302.5" width="78" height="78" fill="none" stroke="none" pointer-events="all"/><ellipse cx="360" cy="341.5" rx="39" ry="39" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 392.28 342.75 L 384.52 350.51 L 382.02 348 L 386.75 343.27 L 361.77 343.27 L 361.77 368.24 L 366.5 363.51 L 369.01 366.02 L 361.25 373.78 C 360.91 374.12 360.45 374.3 360 374.3 C 359.55 374.3 359.09 374.12 358.75 373.78 L 350.99 366.02 L 353.5 363.51 L 358.23 368.24 L 358.23 343.27 L 333.26 343.27 L 337.99 348 L 335.48 350.51 L 327.73 342.75 C 327.03 342.06 327.03 340.94 327.73 340.25 L 335.48 332.49 L 337.99 335 L 333.26 339.73 L 358.23 339.73 L 358.23 314.75 L 353.5 319.48 L 350.99 316.98 L 358.75 309.22 C 359.44 308.53 360.56 308.53 361.25 309.22 L 369.01 316.98 L 366.5 319.48 L 361.77 314.75 L 361.77 339.73 L 386.75 339.73 L 382.02 335 L 384.52 332.49 L 392.28 340.25 C 392.97 340.94 392.97 342.06 392.28 342.75 M 360 376.95 C 340.45 376.95 324.55 361.05 324.55 341.5 C 324.55 321.95 340.45 306.05 360 306.05 C 379.55 306.05 395.45 321.95 395.45 341.5 C 395.45 361.05 379.55 376.95 360 376.95 M 360 302.5 C 338.5 302.5 321 320 321 341.5 C 321 363 338.5 380.5 360 380.5 C 381.5 380.5 399 363 399 341.5 C 399 320 381.5 302.5 360 302.5" fill="#4d27aa" stroke="none" pointer-events="all"/><rect x="831" y="221" width="640" height="241" rx="19.28" ry="19.28" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><rect x="1111" y="233" width="280" height="60" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 263px; margin-left: 1112px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 32px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Namespace "Customer A"</div></div></div></foreignObject><text x="1251" y="273" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="32px" text-anchor="middle">Namespace "Custome...</text></switch></g><rect x="791" y="358" width="78" height="78" fill="none" stroke="none" pointer-events="all"/><ellipse cx="830" cy="397" rx="39" ry="39" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 862.28 398.25 L 854.52 406.01 L 852.02 403.5 L 856.75 398.77 L 831.77 398.77 L 831.77 423.74 L 836.5 419.01 L 839.01 421.52 L 831.25 429.28 C 830.91 429.62 830.45 429.8 830 429.8 C 829.55 429.8 829.09 429.62 828.75 429.28 L 820.99 421.52 L 823.5 419.01 L 828.23 423.74 L 828.23 398.77 L 803.26 398.77 L 807.99 403.5 L 805.48 406.01 L 797.73 398.25 C 797.03 397.56 797.03 396.44 797.73 395.75 L 805.48 387.99 L 807.99 390.5 L 803.26 395.23 L 828.23 395.23 L 828.23 370.25 L 823.5 374.98 L 820.99 372.48 L 828.75 364.72 C 829.44 364.03 830.56 364.03 831.25 364.72 L 839.01 372.48 L 836.5 374.98 L 831.77 370.25 L 831.77 395.23 L 856.75 395.23 L 852.02 390.5 L 854.52 387.99 L 862.28 395.75 C 862.97 396.44 862.97 397.56 862.28 398.25 M 830 432.45 C 810.45 432.45 794.55 416.55 794.55 397 C 794.55 377.45 810.45 361.55 830 361.55 C 849.55 361.55 865.45 377.45 865.45 397 C 865.45 416.55 849.55 432.45 830 432.45 M 830 358 C 808.5 358 791 375.5 791 397 C 791 418.5 808.5 436 830 436 C 851.5 436 869 418.5 869 397 C 869 375.5 851.5 358 830 358" fill="#4d27aa" stroke="none" pointer-events="all"/><path d="M 405.37 351 L 590 351 L 590 397 L 784.63 397" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 400.12 351 L 407.12 347.5 L 405.37 351 L 407.12 354.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 789.88 397 L 782.88 400.5 L 784.63 397 L 782.88 393.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 361px; margin-left: 520px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;"><pre>100.64.0.2/31</pre></div></div></div></foreignObject><text x="520" y="366" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">100.64....</text></switch></g><path d="M 875.37 397 L 1014.63 397" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 870.12 397 L 877.12 393.5 L 875.37 397 L 877.12 400.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1019.88 397 L 1012.88 400.5 L 1014.63 397 L 1012.88 393.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1176" y="323" width="150" height="98" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 142px; height: 1px; padding-top: 313px; margin-left: 1181px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 108px; overflow: hidden;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><h2 style="line-height: 80%;">Prefixes</h2><pre style="line-height: 80%; font-size: 18px;"><b style=""><font style="font-size: 18px;">10.0.0.0/8</font></b></pre><pre style="line-height: 80%; font-size: 18px;"><b style=""><font style="font-size: 18px;">192.168.0.0/16</font></b></pre></div></div></div></foreignObject><text x="1181" y="329" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Prefixes...</text></switch></g><rect x="321" y="581.5" width="78" height="78" fill="none" stroke="none" pointer-events="all"/><ellipse cx="360" cy="620.5" rx="39" ry="39" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 392.28 621.75 L 384.52 629.51 L 382.02 627 L 386.75 622.27 L 361.77 622.27 L 361.77 647.24 L 366.5 642.51 L 369.01 645.02 L 361.25 652.78 C 360.91 653.12 360.45 653.3 360 653.3 C 359.55 653.3 359.09 653.12 358.75 652.78 L 350.99 645.02 L 353.5 642.51 L 358.23 647.24 L 358.23 622.27 L 333.26 622.27 L 337.99 627 L 335.48 629.51 L 327.73 621.75 C 327.03 621.06 327.03 619.94 327.73 619.25 L 335.48 611.49 L 337.99 614 L 333.26 618.73 L 358.23 618.73 L 358.23 593.75 L 353.5 598.48 L 350.99 595.98 L 358.75 588.22 C 359.44 587.53 360.56 587.53 361.25 588.22 L 369.01 595.98 L 366.5 598.48 L 361.77 593.75 L 361.77 618.73 L 386.75 618.73 L 382.02 614 L 384.52 611.49 L 392.28 619.25 C 392.97 619.94 392.97 621.06 392.28 621.75 M 360 655.95 C 340.45 655.95 324.55 640.05 324.55 620.5 C 324.55 600.95 340.45 585.05 360 585.05 C 379.55 585.05 395.45 600.95 395.45 620.5 C 395.45 640.05 379.55 655.95 360 655.95 M 360 581.5 C 338.5 581.5 321 599 321 620.5 C 321 642 338.5 659.5 360 659.5 C 381.5 659.5 399 642 399 620.5 C 399 599 381.5 581.5 360 581.5" fill="#4d27aa" stroke="none" pointer-events="all"/><rect x="321" y="862.5" width="78" height="78" fill="none" stroke="none" pointer-events="all"/><ellipse cx="360" cy="901.5" rx="39" ry="39" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 392.28 902.75 L 384.52 910.51 L 382.02 908 L 386.75 903.27 L 361.77 903.27 L 361.77 928.24 L 366.5 923.51 L 369.01 926.02 L 361.25 933.78 C 360.91 934.12 360.45 934.3 360 934.3 C 359.55 934.3 359.09 934.12 358.75 933.78 L 350.99 926.02 L 353.5 923.51 L 358.23 928.24 L 358.23 903.27 L 333.26 903.27 L 337.99 908 L 335.48 910.51 L 327.73 902.75 C 327.03 902.06 327.03 900.94 327.73 900.25 L 335.48 892.49 L 337.99 895 L 333.26 899.73 L 358.23 899.73 L 358.23 874.75 L 353.5 879.48 L 350.99 876.98 L 358.75 869.22 C 359.44 868.53 360.56 868.53 361.25 869.22 L 369.01 876.98 L 366.5 879.48 L 361.77 874.75 L 361.77 899.73 L 386.75 899.73 L 382.02 895 L 384.52 892.49 L 392.28 900.25 C 392.97 900.94 392.97 902.06 392.28 902.75 M 360 936.95 C 340.45 936.95 324.55 921.05 324.55 901.5 C 324.55 881.95 340.45 866.05 360 866.05 C 379.55 866.05 395.45 881.95 395.45 901.5 C 395.45 921.05 379.55 936.95 360 936.95 M 360 862.5 C 338.5 862.5 321 880 321 901.5 C 321 923 338.5 940.5 360 940.5 C 381.5 940.5 399 923 399 901.5 C 399 880 381.5 862.5 360 862.5" fill="#4d27aa" stroke="none" pointer-events="all"/><rect x="399" y="111" width="190" height="240" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 182px; height: 1px; padding-top: 101px; margin-left: 404px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 250px; overflow: hidden;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><h2 style="line-height: 80%;">Prefixes</h2><pre style="line-height: 80%; font-size: 18px;"><b style=""><font style="font-size: 18px;">100.64.0.0/10</font></b></pre><pre style="line-height: 80%; font-size: 18px;"><b><font style="font-size: 18px;">- 100.64.0.0/31</font></b></pre><pre style="line-height: 80%; font-size: 18px;"><b><font style="font-size: 18px;">- 100.64.0.2/31</font></b></pre><pre style="line-height: 80%; font-size: 18px;"><b style=""><font style="font-size: 18px;">- etc.</font></b></pre><pre style="line-height: 80%;"><br /></pre></div></div></div></foreignObject><text x="404" y="117" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Prefixes...</text></switch></g><rect x="1021" y="358" width="53" height="78" fill="none" stroke="none" pointer-events="all"/><rect x="1022.99" y="360.07" width="49.86" height="74.78" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 1058.24 401.6 L 1061.57 401.6 L 1061.57 409.57 L 1058.24 409.57 Z M 1045.8 401.6 L 1049.14 401.6 L 1049.14 409.57 L 1045.8 409.57 Z M 1033.37 401.6 L 1036.7 401.6 L 1036.7 409.57 L 1033.37 409.57 Z M 1056.91 398.61 C 1056.04 398.61 1055.61 399.22 1055.45 399.55 C 1055.29 399.88 1055.25 400.16 1055.25 400.45 L 1055.25 410.72 C 1055.25 411.01 1055.29 411.29 1055.45 411.62 C 1055.61 411.95 1056.04 412.56 1056.91 412.56 L 1062.9 412.56 C 1063.78 412.56 1064.21 411.95 1064.37 411.62 C 1064.53 411.29 1064.57 411.01 1064.57 410.72 L 1064.57 400.45 C 1064.57 400.16 1064.53 399.88 1064.37 399.55 C 1064.21 399.22 1063.78 398.61 1062.9 398.61 Z M 1044.48 398.61 C 1043.6 398.61 1043.17 399.22 1043.01 399.55 C 1042.85 399.88 1042.81 400.16 1042.81 400.45 L 1042.81 410.72 C 1042.81 411.01 1042.85 411.29 1043.01 411.62 C 1043.17 411.95 1043.6 412.56 1044.48 412.56 L 1050.47 412.56 C 1051.34 412.56 1051.77 411.95 1051.93 411.62 C 1052.09 411.29 1052.13 411.01 1052.13 410.72 L 1052.13 400.45 C 1052.13 400.16 1052.09 399.88 1051.93 399.55 C 1051.77 399.22 1051.34 398.61 1050.47 398.61 Z M 1032.04 398.61 C 1031.16 398.61 1030.73 399.22 1030.57 399.55 C 1030.41 399.88 1030.38 400.16 1030.38 400.45 L 1030.38 410.72 C 1030.38 411.01 1030.41 411.29 1030.57 411.62 C 1030.73 411.95 1031.16 412.56 1032.04 412.56 L 1038.03 412.56 C 1038.9 412.56 1039.33 411.95 1039.49 411.62 C 1039.65 411.29 1039.69 411.01 1039.69 410.72 L 1039.69 400.45 C 1039.69 400.16 1039.65 399.88 1039.49 399.55 C 1039.33 399.22 1038.9 398.61 1038.03 398.61 Z M 1058.24 384.46 L 1061.57 384.46 L 1061.57 392.43 L 1058.24 392.43 Z M 1045.8 384.46 L 1049.14 384.46 L 1049.14 392.43 L 1045.8 392.43 Z M 1033.37 384.46 L 1036.7 384.46 L 1036.7 392.43 L 1033.37 392.43 Z M 1056.91 381.46 C 1056.04 381.46 1055.61 382.08 1055.45 382.41 C 1055.29 382.74 1055.25 383.02 1055.25 383.3 L 1055.25 393.58 C 1055.25 393.87 1055.29 394.15 1055.45 394.48 C 1055.61 394.81 1056.04 395.42 1056.91 395.42 L 1062.9 395.42 C 1063.78 395.42 1064.21 394.81 1064.37 394.48 C 1064.53 394.15 1064.57 393.87 1064.57 393.58 L 1064.57 383.3 C 1064.57 383.02 1064.53 382.74 1064.37 382.41 C 1064.21 382.08 1063.78 381.46 1062.9 381.46 Z M 1044.48 381.46 C 1043.6 381.46 1043.17 382.08 1043.01 382.41 C 1042.85 382.74 1042.81 383.02 1042.81 383.3 L 1042.81 393.58 C 1042.81 393.87 1042.85 394.15 1043.01 394.48 C 1043.17 394.81 1043.6 395.42 1044.48 395.42 L 1050.47 395.42 C 1051.34 395.42 1051.77 394.81 1051.93 394.48 C 1052.09 394.15 1052.13 393.87 1052.13 393.58 L 1052.13 383.3 C 1052.13 383.02 1052.09 382.74 1051.93 382.41 C 1051.77 382.08 1051.34 381.46 1050.47 381.46 Z M 1032.04 381.46 C 1031.16 381.46 1030.73 382.08 1030.57 382.41 C 1030.41 382.74 1030.38 383.02 1030.38 383.3 L 1030.38 393.58 C 1030.38 393.87 1030.41 394.15 1030.57 394.48 C 1030.73 394.81 1031.16 395.42 1032.04 395.42 L 1038.03 395.42 C 1038.9 395.42 1039.33 394.81 1039.49 394.48 C 1039.65 394.15 1039.69 393.87 1039.69 393.58 L 1039.69 383.3 C 1039.69 383.02 1039.65 382.74 1039.49 382.41 C 1039.33 382.08 1038.9 381.46 1038.03 381.46 Z M 1058.24 367.32 L 1061.57 367.32 L 1061.57 375.29 L 1058.24 375.29 Z M 1045.8 367.32 L 1049.14 367.32 L 1049.14 375.29 L 1045.8 375.29 Z M 1033.37 367.32 L 1036.7 367.32 L 1036.7 375.29 L 1033.37 375.29 Z M 1056.91 364.32 C 1056.04 364.32 1055.61 364.94 1055.45 365.27 C 1055.29 365.6 1055.25 365.87 1055.25 366.16 L 1055.25 376.44 C 1055.25 376.73 1055.29 377.01 1055.45 377.34 C 1055.61 377.67 1056.04 378.28 1056.91 378.28 L 1062.9 378.28 C 1063.78 378.28 1064.21 377.67 1064.37 377.34 C 1064.53 377.01 1064.57 376.73 1064.57 376.44 L 1064.57 366.16 C 1064.57 365.87 1064.53 365.6 1064.37 365.27 C 1064.21 364.94 1063.78 364.32 1062.9 364.32 Z M 1044.48 364.32 C 1043.6 364.32 1043.17 364.94 1043.01 365.27 C 1042.85 365.6 1042.81 365.87 1042.81 366.16 L 1042.81 376.44 C 1042.81 376.73 1042.85 377.01 1043.01 377.34 C 1043.17 377.67 1043.6 378.28 1044.48 378.28 L 1050.47 378.28 C 1051.34 378.28 1051.77 377.67 1051.93 377.34 C 1052.09 377.01 1052.13 376.73 1052.13 376.44 L 1052.13 366.16 C 1052.13 365.87 1052.09 365.6 1051.93 365.27 C 1051.77 364.94 1051.34 364.32 1050.47 364.32 Z M 1032.04 364.32 C 1031.16 364.32 1030.73 364.94 1030.57 365.27 C 1030.41 365.6 1030.38 365.87 1030.38 366.16 L 1030.38 376.44 C 1030.38 376.73 1030.41 377.01 1030.57 377.34 C 1030.73 377.67 1031.16 378.28 1032.04 378.28 L 1038.03 378.28 C 1038.9 378.28 1039.33 377.67 1039.49 377.34 C 1039.65 377.01 1039.69 376.73 1039.69 376.44 L 1039.69 366.16 C 1039.69 365.87 1039.65 365.6 1039.49 365.27 C 1039.33 364.94 1038.9 364.32 1038.03 364.32 Z M 1026.43 361.21 L 1068.54 361.21 C 1070.08 361.21 1070.87 362.49 1070.87 363.96 L 1070.88 432.82 L 1024.09 432.79 L 1024.12 363.54 C 1024.12 362.27 1024.96 361.21 1026.43 361.21 Z M 1068.54 358.08 L 1026.58 358.11 C 1023.89 358.11 1021.05 360.1 1021.05 363.68 L 1021 433.8 C 1021 435.21 1021.72 435.9 1023.01 435.9 L 1071.8 435.92 C 1073.14 435.92 1073.93 435.35 1073.93 433.9 L 1074 363.89 C 1074 360.77 1071.6 358.08 1068.54 358.08 Z" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 443px; margin-left: 1048px;"><div data-drawio-colors="color: #232F3E; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(35, 47, 62); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;">10.0.0.0/8</div></div></div></foreignObject><text x="1048" y="459" fill="#232F3E" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">10.0.0....</text></switch></g><rect x="791" y="245" width="78" height="78" fill="none" stroke="none" pointer-events="all"/><ellipse cx="830" cy="284" rx="39" ry="39" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 862.28 285.25 L 854.52 293.01 L 852.02 290.5 L 856.75 285.77 L 831.77 285.77 L 831.77 310.74 L 836.5 306.01 L 839.01 308.52 L 831.25 316.28 C 830.91 316.62 830.45 316.8 830 316.8 C 829.55 316.8 829.09 316.62 828.75 316.28 L 820.99 308.52 L 823.5 306.01 L 828.23 310.74 L 828.23 285.77 L 803.26 285.77 L 807.99 290.5 L 805.48 293.01 L 797.73 285.25 C 797.03 284.56 797.03 283.44 797.73 282.75 L 805.48 274.99 L 807.99 277.5 L 803.26 282.23 L 828.23 282.23 L 828.23 257.25 L 823.5 261.98 L 820.99 259.48 L 828.75 251.72 C 829.44 251.03 830.56 251.03 831.25 251.72 L 839.01 259.48 L 836.5 261.98 L 831.77 257.25 L 831.77 282.23 L 856.75 282.23 L 852.02 277.5 L 854.52 274.99 L 862.28 282.75 C 862.97 283.44 862.97 284.56 862.28 285.25 M 830 319.45 C 810.45 319.45 794.55 303.55 794.55 284 C 794.55 264.45 810.45 248.55 830 248.55 C 849.55 248.55 865.45 264.45 865.45 284 C 865.45 303.55 849.55 319.45 830 319.45 M 830 245 C 808.5 245 791 262.5 791 284 C 791 305.5 808.5 323 830 323 C 851.5 323 869 305.5 869 284 C 869 262.5 851.5 245 830 245" fill="#4d27aa" stroke="none" pointer-events="all"/><path d="M 875.37 284 L 1016.3 284" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 870.12 284 L 877.12 280.5 L 875.37 284 L 877.12 287.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1021.55 284 L 1014.55 287.5 L 1016.3 284 L 1014.55 280.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1022.5" y="245" width="50" height="78" fill="none" stroke="none" pointer-events="all"/><rect x="1036.68" y="246.75" width="21.02" height="24.53" rx="3.15" ry="3.15" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1024.42" y="264.27" width="45.55" height="57.81" rx="6.83" ry="6.83" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 1062.64 316.51 L 1066.15 316.51 L 1066.15 307.22 L 1062.64 307.22 Z M 1056.45 316.52 L 1059.96 316.52 L 1059.96 307.22 L 1056.45 307.22 Z M 1048.73 316.52 L 1052.24 316.52 L 1052.24 307.22 L 1048.73 307.22 Z M 1042.61 316.52 L 1046.12 316.52 L 1046.12 307.22 L 1042.61 307.22 Z M 1034.82 316.52 L 1038.33 316.52 L 1038.33 307.22 L 1034.82 307.22 Z M 1028.56 316.52 L 1032.06 316.52 L 1032.06 307.22 L 1028.56 307.22 Z M 1062.64 302.53 L 1066.15 302.53 L 1066.15 294.89 L 1062.64 294.89 Z M 1056.45 302.53 L 1059.96 302.53 L 1059.96 294.89 L 1056.45 294.89 Z M 1048.73 302.53 L 1052.24 302.53 L 1052.24 294.89 L 1048.73 294.89 Z M 1042.61 302.53 L 1046.12 302.53 L 1046.12 294.89 L 1042.61 294.89 Z M 1034.82 302.53 L 1038.33 302.53 L 1038.33 294.89 L 1034.82 294.89 Z M 1028.56 302.53 L 1032.06 302.53 L 1032.06 294.89 L 1028.56 294.89 Z M 1062.64 290.23 L 1066.15 290.23 L 1066.15 282.58 L 1062.64 282.58 Z M 1056.45 290.23 L 1059.96 290.23 L 1059.96 282.58 L 1056.45 282.58 Z M 1048.73 290.23 L 1052.24 290.23 L 1052.24 282.58 L 1048.73 282.58 Z M 1042.61 290.23 L 1046.12 290.23 L 1046.12 282.58 L 1042.61 282.58 Z M 1034.82 290.23 L 1038.33 290.23 L 1038.33 282.58 L 1034.82 282.58 Z M 1028.56 290.23 L 1032.06 290.23 L 1032.06 282.58 L 1028.56 282.58 Z M 1062.64 277.99 L 1066.15 277.99 L 1066.15 270.35 L 1062.64 270.35 Z M 1056.45 277.99 L 1059.96 277.99 L 1059.96 270.35 L 1056.45 270.35 Z M 1048.73 277.99 L 1052.24 277.99 L 1052.24 270.35 L 1048.73 270.35 Z M 1042.61 277.99 L 1046.12 277.99 L 1046.12 270.35 L 1042.61 270.35 Z M 1034.82 277.99 L 1038.33 277.99 L 1038.33 270.35 L 1034.82 270.35 Z M 1028.56 277.99 L 1032.06 277.99 L 1032.06 270.35 L 1028.56 270.35 Z M 1048.78 265.58 L 1052.29 265.58 L 1052.29 251.87 L 1048.78 251.87 Z M 1042.59 265.58 L 1046.1 265.58 L 1046.1 251.87 L 1042.59 251.87 Z M 1068.83 319.5 L 1026.17 319.5 L 1026.17 267.51 L 1036.5 267.51 C 1037.47 267.51 1038.25 266.73 1038.25 265.76 L 1038.25 248.5 L 1056.72 248.5 L 1056.72 265.76 C 1056.72 266.73 1057.5 267.51 1058.47 267.51 L 1068.83 267.51 Z M 1069.2 264.01 L 1060.22 264.01 L 1060.22 248.13 C 1060.22 246.41 1058.82 245 1057.09 245 L 1037.88 245 C 1036.16 245 1034.75 246.41 1034.75 248.13 L 1034.75 264.01 L 1025.8 264.01 C 1024.07 264.01 1022.66 265.41 1022.66 267.14 L 1022.66 319.87 C 1022.66 321.59 1024.07 323 1025.8 323 L 1069.2 323 C 1070.93 323 1072.34 321.59 1072.34 319.87 L 1072.34 267.14 C 1072.34 265.41 1070.93 264.01 1069.2 264.01 Z" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 330px; margin-left: 1048px;"><div data-drawio-colors="color: #232F3E; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(35, 47, 62); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;">192.168.0.0/16</div></div></div></foreignObject><text x="1048" y="346" fill="#232F3E" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">192.16...</text></switch></g><path d="M 405.37 331 L 590 331 L 590 284 L 784.63 284" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 400.12 331 L 407.12 327.5 L 405.37 331 L 407.12 334.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 789.88 284 L 782.88 287.5 L 784.63 284 L 782.88 280.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 321px; margin-left: 520px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;"><pre>100.64.0.0/31</pre></div></div></div></foreignObject><text x="520" y="326" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">100.64....</text></switch></g><rect x="831" y="500" width="640" height="241" rx="19.28" ry="19.28" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><rect x="1111" y="512" width="280" height="60" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 542px; margin-left: 1112px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 32px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Namespace "Customer B"</div></div></div></foreignObject><text x="1251" y="552" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="32px" text-anchor="middle">Namespace "Custome...</text></switch></g><rect x="791" y="637" width="78" height="78" fill="none" stroke="none" pointer-events="all"/><ellipse cx="830" cy="676" rx="39" ry="39" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 862.28 677.25 L 854.52 685.01 L 852.02 682.5 L 856.75 677.77 L 831.77 677.77 L 831.77 702.74 L 836.5 698.01 L 839.01 700.52 L 831.25 708.28 C 830.91 708.62 830.45 708.8 830 708.8 C 829.55 708.8 829.09 708.62 828.75 708.28 L 820.99 700.52 L 823.5 698.01 L 828.23 702.74 L 828.23 677.77 L 803.26 677.77 L 807.99 682.5 L 805.48 685.01 L 797.73 677.25 C 797.03 676.56 797.03 675.44 797.73 674.75 L 805.48 666.99 L 807.99 669.5 L 803.26 674.23 L 828.23 674.23 L 828.23 649.25 L 823.5 653.98 L 820.99 651.48 L 828.75 643.72 C 829.44 643.03 830.56 643.03 831.25 643.72 L 839.01 651.48 L 836.5 653.98 L 831.77 649.25 L 831.77 674.23 L 856.75 674.23 L 852.02 669.5 L 854.52 666.99 L 862.28 674.75 C 862.97 675.44 862.97 676.56 862.28 677.25 M 830 711.45 C 810.45 711.45 794.55 695.55 794.55 676 C 794.55 656.45 810.45 640.55 830 640.55 C 849.55 640.55 865.45 656.45 865.45 676 C 865.45 695.55 849.55 711.45 830 711.45 M 830 637 C 808.5 637 791 654.5 791 676 C 791 697.5 808.5 715 830 715 C 851.5 715 869 697.5 869 676 C 869 654.5 851.5 637 830 637" fill="#4d27aa" stroke="none" pointer-events="all"/><path d="M 875.37 676 L 1014.63 676" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 870.12 676 L 877.12 672.5 L 875.37 676 L 877.12 679.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1019.88 676 L 1012.88 679.5 L 1014.63 676 L 1012.88 672.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1021" y="637" width="53" height="78" fill="none" stroke="none" pointer-events="all"/><rect x="1022.99" y="639.07" width="49.86" height="74.78" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 1058.24 680.6 L 1061.57 680.6 L 1061.57 688.57 L 1058.24 688.57 Z M 1045.8 680.6 L 1049.14 680.6 L 1049.14 688.57 L 1045.8 688.57 Z M 1033.37 680.6 L 1036.7 680.6 L 1036.7 688.57 L 1033.37 688.57 Z M 1056.91 677.61 C 1056.04 677.61 1055.61 678.22 1055.45 678.55 C 1055.29 678.88 1055.25 679.16 1055.25 679.45 L 1055.25 689.72 C 1055.25 690.01 1055.29 690.29 1055.45 690.62 C 1055.61 690.95 1056.04 691.56 1056.91 691.56 L 1062.9 691.56 C 1063.78 691.56 1064.21 690.95 1064.37 690.62 C 1064.53 690.29 1064.57 690.01 1064.57 689.72 L 1064.57 679.45 C 1064.57 679.16 1064.53 678.88 1064.37 678.55 C 1064.21 678.22 1063.78 677.61 1062.9 677.61 Z M 1044.48 677.61 C 1043.6 677.61 1043.17 678.22 1043.01 678.55 C 1042.85 678.88 1042.81 679.16 1042.81 679.45 L 1042.81 689.72 C 1042.81 690.01 1042.85 690.29 1043.01 690.62 C 1043.17 690.95 1043.6 691.56 1044.48 691.56 L 1050.47 691.56 C 1051.34 691.56 1051.77 690.95 1051.93 690.62 C 1052.09 690.29 1052.13 690.01 1052.13 689.72 L 1052.13 679.45 C 1052.13 679.16 1052.09 678.88 1051.93 678.55 C 1051.77 678.22 1051.34 677.61 1050.47 677.61 Z M 1032.04 677.61 C 1031.16 677.61 1030.73 678.22 1030.57 678.55 C 1030.41 678.88 1030.38 679.16 1030.38 679.45 L 1030.38 689.72 C 1030.38 690.01 1030.41 690.29 1030.57 690.62 C 1030.73 690.95 1031.16 691.56 1032.04 691.56 L 1038.03 691.56 C 1038.9 691.56 1039.33 690.95 1039.49 690.62 C 1039.65 690.29 1039.69 690.01 1039.69 689.72 L 1039.69 679.45 C 1039.69 679.16 1039.65 678.88 1039.49 678.55 C 1039.33 678.22 1038.9 677.61 1038.03 677.61 Z M 1058.24 663.46 L 1061.57 663.46 L 1061.57 671.43 L 1058.24 671.43 Z M 1045.8 663.46 L 1049.14 663.46 L 1049.14 671.43 L 1045.8 671.43 Z M 1033.37 663.46 L 1036.7 663.46 L 1036.7 671.43 L 1033.37 671.43 Z M 1056.91 660.46 C 1056.04 660.46 1055.61 661.08 1055.45 661.41 C 1055.29 661.74 1055.25 662.02 1055.25 662.3 L 1055.25 672.58 C 1055.25 672.87 1055.29 673.15 1055.45 673.48 C 1055.61 673.81 1056.04 674.42 1056.91 674.42 L 1062.9 674.42 C 1063.78 674.42 1064.21 673.81 1064.37 673.48 C 1064.53 673.15 1064.57 672.87 1064.57 672.58 L 1064.57 662.3 C 1064.57 662.02 1064.53 661.74 1064.37 661.41 C 1064.21 661.08 1063.78 660.46 1062.9 660.46 Z M 1044.48 660.46 C 1043.6 660.46 1043.17 661.08 1043.01 661.41 C 1042.85 661.74 1042.81 662.02 1042.81 662.3 L 1042.81 672.58 C 1042.81 672.87 1042.85 673.15 1043.01 673.48 C 1043.17 673.81 1043.6 674.42 1044.48 674.42 L 1050.47 674.42 C 1051.34 674.42 1051.77 673.81 1051.93 673.48 C 1052.09 673.15 1052.13 672.87 1052.13 672.58 L 1052.13 662.3 C 1052.13 662.02 1052.09 661.74 1051.93 661.41 C 1051.77 661.08 1051.34 660.46 1050.47 660.46 Z M 1032.04 660.46 C 1031.16 660.46 1030.73 661.08 1030.57 661.41 C 1030.41 661.74 1030.38 662.02 1030.38 662.3 L 1030.38 672.58 C 1030.38 672.87 1030.41 673.15 1030.57 673.48 C 1030.73 673.81 1031.16 674.42 1032.04 674.42 L 1038.03 674.42 C 1038.9 674.42 1039.33 673.81 1039.49 673.48 C 1039.65 673.15 1039.69 672.87 1039.69 672.58 L 1039.69 662.3 C 1039.69 662.02 1039.65 661.74 1039.49 661.41 C 1039.33 661.08 1038.9 660.46 1038.03 660.46 Z M 1058.24 646.32 L 1061.57 646.32 L 1061.57 654.29 L 1058.24 654.29 Z M 1045.8 646.32 L 1049.14 646.32 L 1049.14 654.29 L 1045.8 654.29 Z M 1033.37 646.32 L 1036.7 646.32 L 1036.7 654.29 L 1033.37 654.29 Z M 1056.91 643.32 C 1056.04 643.32 1055.61 643.94 1055.45 644.27 C 1055.29 644.6 1055.25 644.87 1055.25 645.16 L 1055.25 655.44 C 1055.25 655.73 1055.29 656.01 1055.45 656.34 C 1055.61 656.67 1056.04 657.28 1056.91 657.28 L 1062.9 657.28 C 1063.78 657.28 1064.21 656.67 1064.37 656.34 C 1064.53 656.01 1064.57 655.73 1064.57 655.44 L 1064.57 645.16 C 1064.57 644.87 1064.53 644.6 1064.37 644.27 C 1064.21 643.94 1063.78 643.32 1062.9 643.32 Z M 1044.48 643.32 C 1043.6 643.32 1043.17 643.94 1043.01 644.27 C 1042.85 644.6 1042.81 644.87 1042.81 645.16 L 1042.81 655.44 C 1042.81 655.73 1042.85 656.01 1043.01 656.34 C 1043.17 656.67 1043.6 657.28 1044.48 657.28 L 1050.47 657.28 C 1051.34 657.28 1051.77 656.67 1051.93 656.34 C 1052.09 656.01 1052.13 655.73 1052.13 655.44 L 1052.13 645.16 C 1052.13 644.87 1052.09 644.6 1051.93 644.27 C 1051.77 643.94 1051.34 643.32 1050.47 643.32 Z M 1032.04 643.32 C 1031.16 643.32 1030.73 643.94 1030.57 644.27 C 1030.41 644.6 1030.38 644.87 1030.38 645.16 L 1030.38 655.44 C 1030.38 655.73 1030.41 656.01 1030.57 656.34 C 1030.73 656.67 1031.16 657.28 1032.04 657.28 L 1038.03 657.28 C 1038.9 657.28 1039.33 656.67 1039.49 656.34 C 1039.65 656.01 1039.69 655.73 1039.69 655.44 L 1039.69 645.16 C 1039.69 644.87 1039.65 644.6 1039.49 644.27 C 1039.33 643.94 1038.9 643.32 1038.03 643.32 Z M 1026.43 640.21 L 1068.54 640.21 C 1070.08 640.21 1070.87 641.49 1070.87 642.96 L 1070.88 711.82 L 1024.09 711.79 L 1024.12 642.54 C 1024.12 641.27 1024.96 640.21 1026.43 640.21 Z M 1068.54 637.08 L 1026.58 637.11 C 1023.89 637.11 1021.05 639.1 1021.05 642.68 L 1021 712.8 C 1021 714.21 1021.72 714.9 1023.01 714.9 L 1071.8 714.92 C 1073.14 714.92 1073.93 714.35 1073.93 712.9 L 1074 642.89 C 1074 639.77 1071.6 637.08 1068.54 637.08 Z" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 722px; margin-left: 1048px;"><div data-drawio-colors="color: #232F3E; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(35, 47, 62); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;">10.0.0.0/8</div></div></div></foreignObject><text x="1048" y="738" fill="#232F3E" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">10.0.0....</text></switch></g><rect x="791" y="524" width="78" height="78" fill="none" stroke="none" pointer-events="all"/><ellipse cx="830" cy="563" rx="39" ry="39" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 862.28 564.25 L 854.52 572.01 L 852.02 569.5 L 856.75 564.77 L 831.77 564.77 L 831.77 589.74 L 836.5 585.01 L 839.01 587.52 L 831.25 595.28 C 830.91 595.62 830.45 595.8 830 595.8 C 829.55 595.8 829.09 595.62 828.75 595.28 L 820.99 587.52 L 823.5 585.01 L 828.23 589.74 L 828.23 564.77 L 803.26 564.77 L 807.99 569.5 L 805.48 572.01 L 797.73 564.25 C 797.03 563.56 797.03 562.44 797.73 561.75 L 805.48 553.99 L 807.99 556.5 L 803.26 561.23 L 828.23 561.23 L 828.23 536.25 L 823.5 540.98 L 820.99 538.48 L 828.75 530.72 C 829.44 530.03 830.56 530.03 831.25 530.72 L 839.01 538.48 L 836.5 540.98 L 831.77 536.25 L 831.77 561.23 L 856.75 561.23 L 852.02 556.5 L 854.52 553.99 L 862.28 561.75 C 862.97 562.44 862.97 563.56 862.28 564.25 M 830 598.45 C 810.45 598.45 794.55 582.55 794.55 563 C 794.55 543.45 810.45 527.55 830 527.55 C 849.55 527.55 865.45 543.45 865.45 563 C 865.45 582.55 849.55 598.45 830 598.45 M 830 524 C 808.5 524 791 541.5 791 563 C 791 584.5 808.5 602 830 602 C 851.5 602 869 584.5 869 563 C 869 541.5 851.5 524 830 524" fill="#4d27aa" stroke="none" pointer-events="all"/><path d="M 875.37 563 L 1016.3 563" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 870.12 563 L 877.12 559.5 L 875.37 563 L 877.12 566.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1021.55 563 L 1014.55 566.5 L 1016.3 563 L 1014.55 559.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1022.5" y="524" width="50" height="78" fill="none" stroke="none" pointer-events="all"/><rect x="1036.68" y="525.75" width="21.02" height="24.53" rx="3.15" ry="3.15" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1024.42" y="543.27" width="45.55" height="57.81" rx="6.83" ry="6.83" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 1062.64 595.51 L 1066.15 595.51 L 1066.15 586.22 L 1062.64 586.22 Z M 1056.45 595.52 L 1059.96 595.52 L 1059.96 586.22 L 1056.45 586.22 Z M 1048.73 595.52 L 1052.24 595.52 L 1052.24 586.22 L 1048.73 586.22 Z M 1042.61 595.52 L 1046.12 595.52 L 1046.12 586.22 L 1042.61 586.22 Z M 1034.82 595.52 L 1038.33 595.52 L 1038.33 586.22 L 1034.82 586.22 Z M 1028.56 595.52 L 1032.06 595.52 L 1032.06 586.22 L 1028.56 586.22 Z M 1062.64 581.53 L 1066.15 581.53 L 1066.15 573.89 L 1062.64 573.89 Z M 1056.45 581.53 L 1059.96 581.53 L 1059.96 573.89 L 1056.45 573.89 Z M 1048.73 581.53 L 1052.24 581.53 L 1052.24 573.89 L 1048.73 573.89 Z M 1042.61 581.53 L 1046.12 581.53 L 1046.12 573.89 L 1042.61 573.89 Z M 1034.82 581.53 L 1038.33 581.53 L 1038.33 573.89 L 1034.82 573.89 Z M 1028.56 581.53 L 1032.06 581.53 L 1032.06 573.89 L 1028.56 573.89 Z M 1062.64 569.23 L 1066.15 569.23 L 1066.15 561.58 L 1062.64 561.58 Z M 1056.45 569.23 L 1059.96 569.23 L 1059.96 561.58 L 1056.45 561.58 Z M 1048.73 569.23 L 1052.24 569.23 L 1052.24 561.58 L 1048.73 561.58 Z M 1042.61 569.23 L 1046.12 569.23 L 1046.12 561.58 L 1042.61 561.58 Z M 1034.82 569.23 L 1038.33 569.23 L 1038.33 561.58 L 1034.82 561.58 Z M 1028.56 569.23 L 1032.06 569.23 L 1032.06 561.58 L 1028.56 561.58 Z M 1062.64 556.99 L 1066.15 556.99 L 1066.15 549.35 L 1062.64 549.35 Z M 1056.45 556.99 L 1059.96 556.99 L 1059.96 549.35 L 1056.45 549.35 Z M 1048.73 556.99 L 1052.24 556.99 L 1052.24 549.35 L 1048.73 549.35 Z M 1042.61 556.99 L 1046.12 556.99 L 1046.12 549.35 L 1042.61 549.35 Z M 1034.82 556.99 L 1038.33 556.99 L 1038.33 549.35 L 1034.82 549.35 Z M 1028.56 556.99 L 1032.06 556.99 L 1032.06 549.35 L 1028.56 549.35 Z M 1048.78 544.58 L 1052.29 544.58 L 1052.29 530.87 L 1048.78 530.87 Z M 1042.59 544.58 L 1046.1 544.58 L 1046.1 530.87 L 1042.59 530.87 Z M 1068.83 598.5 L 1026.17 598.5 L 1026.17 546.51 L 1036.5 546.51 C 1037.47 546.51 1038.25 545.73 1038.25 544.76 L 1038.25 527.5 L 1056.72 527.5 L 1056.72 544.76 C 1056.72 545.73 1057.5 546.51 1058.47 546.51 L 1068.83 546.51 Z M 1069.2 543.01 L 1060.22 543.01 L 1060.22 527.13 C 1060.22 525.41 1058.82 524 1057.09 524 L 1037.88 524 C 1036.16 524 1034.75 525.41 1034.75 527.13 L 1034.75 543.01 L 1025.8 543.01 C 1024.07 543.01 1022.66 544.41 1022.66 546.14 L 1022.66 598.87 C 1022.66 600.59 1024.07 602 1025.8 602 L 1069.2 602 C 1070.93 602 1072.34 600.59 1072.34 598.87 L 1072.34 546.14 C 1072.34 544.41 1070.93 543.01 1069.2 543.01 Z" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 609px; margin-left: 1048px;"><div data-drawio-colors="color: #232F3E; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(35, 47, 62); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;">172.16.0.0/12</div></div></div></foreignObject><text x="1048" y="625" fill="#232F3E" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">172.16...</text></switch></g><rect x="831" y="781" width="640" height="241" rx="19.28" ry="19.28" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><rect x="1111" y="793" width="280" height="60" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 823px; margin-left: 1112px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 32px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Namespace "Customer C"</div></div></div></foreignObject><text x="1251" y="833" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="32px" text-anchor="middle">Namespace "Custome...</text></switch></g><rect x="791" y="918" width="78" height="78" fill="none" stroke="none" pointer-events="all"/><ellipse cx="830" cy="957" rx="39" ry="39" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 862.28 958.25 L 854.52 966.01 L 852.02 963.5 L 856.75 958.77 L 831.77 958.77 L 831.77 983.74 L 836.5 979.01 L 839.01 981.52 L 831.25 989.28 C 830.91 989.62 830.45 989.8 830 989.8 C 829.55 989.8 829.09 989.62 828.75 989.28 L 820.99 981.52 L 823.5 979.01 L 828.23 983.74 L 828.23 958.77 L 803.26 958.77 L 807.99 963.5 L 805.48 966.01 L 797.73 958.25 C 797.03 957.56 797.03 956.44 797.73 955.75 L 805.48 947.99 L 807.99 950.5 L 803.26 955.23 L 828.23 955.23 L 828.23 930.25 L 823.5 934.98 L 820.99 932.48 L 828.75 924.72 C 829.44 924.03 830.56 924.03 831.25 924.72 L 839.01 932.48 L 836.5 934.98 L 831.77 930.25 L 831.77 955.23 L 856.75 955.23 L 852.02 950.5 L 854.52 947.99 L 862.28 955.75 C 862.97 956.44 862.97 957.56 862.28 958.25 M 830 992.45 C 810.45 992.45 794.55 976.55 794.55 957 C 794.55 937.45 810.45 921.55 830 921.55 C 849.55 921.55 865.45 937.45 865.45 957 C 865.45 976.55 849.55 992.45 830 992.45 M 830 918 C 808.5 918 791 935.5 791 957 C 791 978.5 808.5 996 830 996 C 851.5 996 869 978.5 869 957 C 869 935.5 851.5 918 830 918" fill="#4d27aa" stroke="none" pointer-events="all"/><path d="M 875.37 957 L 1014.63 957" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 870.12 957 L 877.12 953.5 L 875.37 957 L 877.12 960.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1019.88 957 L 1012.88 960.5 L 1014.63 957 L 1012.88 953.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1021" y="918" width="53" height="78" fill="none" stroke="none" pointer-events="all"/><rect x="1022.99" y="920.07" width="49.86" height="74.78" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 1058.24 961.6 L 1061.57 961.6 L 1061.57 969.57 L 1058.24 969.57 Z M 1045.8 961.6 L 1049.14 961.6 L 1049.14 969.57 L 1045.8 969.57 Z M 1033.37 961.6 L 1036.7 961.6 L 1036.7 969.57 L 1033.37 969.57 Z M 1056.91 958.61 C 1056.04 958.61 1055.61 959.22 1055.45 959.55 C 1055.29 959.88 1055.25 960.16 1055.25 960.45 L 1055.25 970.72 C 1055.25 971.01 1055.29 971.29 1055.45 971.62 C 1055.61 971.95 1056.04 972.56 1056.91 972.56 L 1062.9 972.56 C 1063.78 972.56 1064.21 971.95 1064.37 971.62 C 1064.53 971.29 1064.57 971.01 1064.57 970.72 L 1064.57 960.45 C 1064.57 960.16 1064.53 959.88 1064.37 959.55 C 1064.21 959.22 1063.78 958.61 1062.9 958.61 Z M 1044.48 958.61 C 1043.6 958.61 1043.17 959.22 1043.01 959.55 C 1042.85 959.88 1042.81 960.16 1042.81 960.45 L 1042.81 970.72 C 1042.81 971.01 1042.85 971.29 1043.01 971.62 C 1043.17 971.95 1043.6 972.56 1044.48 972.56 L 1050.47 972.56 C 1051.34 972.56 1051.77 971.95 1051.93 971.62 C 1052.09 971.29 1052.13 971.01 1052.13 970.72 L 1052.13 960.45 C 1052.13 960.16 1052.09 959.88 1051.93 959.55 C 1051.77 959.22 1051.34 958.61 1050.47 958.61 Z M 1032.04 958.61 C 1031.16 958.61 1030.73 959.22 1030.57 959.55 C 1030.41 959.88 1030.38 960.16 1030.38 960.45 L 1030.38 970.72 C 1030.38 971.01 1030.41 971.29 1030.57 971.62 C 1030.73 971.95 1031.16 972.56 1032.04 972.56 L 1038.03 972.56 C 1038.9 972.56 1039.33 971.95 1039.49 971.62 C 1039.65 971.29 1039.69 971.01 1039.69 970.72 L 1039.69 960.45 C 1039.69 960.16 1039.65 959.88 1039.49 959.55 C 1039.33 959.22 1038.9 958.61 1038.03 958.61 Z M 1058.24 944.46 L 1061.57 944.46 L 1061.57 952.43 L 1058.24 952.43 Z M 1045.8 944.46 L 1049.14 944.46 L 1049.14 952.43 L 1045.8 952.43 Z M 1033.37 944.46 L 1036.7 944.46 L 1036.7 952.43 L 1033.37 952.43 Z M 1056.91 941.46 C 1056.04 941.46 1055.61 942.08 1055.45 942.41 C 1055.29 942.74 1055.25 943.02 1055.25 943.3 L 1055.25 953.58 C 1055.25 953.87 1055.29 954.15 1055.45 954.48 C 1055.61 954.81 1056.04 955.42 1056.91 955.42 L 1062.9 955.42 C 1063.78 955.42 1064.21 954.81 1064.37 954.48 C 1064.53 954.15 1064.57 953.87 1064.57 953.58 L 1064.57 943.3 C 1064.57 943.02 1064.53 942.74 1064.37 942.41 C 1064.21 942.08 1063.78 941.46 1062.9 941.46 Z M 1044.48 941.46 C 1043.6 941.46 1043.17 942.08 1043.01 942.41 C 1042.85 942.74 1042.81 943.02 1042.81 943.3 L 1042.81 953.58 C 1042.81 953.87 1042.85 954.15 1043.01 954.48 C 1043.17 954.81 1043.6 955.42 1044.48 955.42 L 1050.47 955.42 C 1051.34 955.42 1051.77 954.81 1051.93 954.48 C 1052.09 954.15 1052.13 953.87 1052.13 953.58 L 1052.13 943.3 C 1052.13 943.02 1052.09 942.74 1051.93 942.41 C 1051.77 942.08 1051.34 941.46 1050.47 941.46 Z M 1032.04 941.46 C 1031.16 941.46 1030.73 942.08 1030.57 942.41 C 1030.41 942.74 1030.38 943.02 1030.38 943.3 L 1030.38 953.58 C 1030.38 953.87 1030.41 954.15 1030.57 954.48 C 1030.73 954.81 1031.16 955.42 1032.04 955.42 L 1038.03 955.42 C 1038.9 955.42 1039.33 954.81 1039.49 954.48 C 1039.65 954.15 1039.69 953.87 1039.69 953.58 L 1039.69 943.3 C 1039.69 943.02 1039.65 942.74 1039.49 942.41 C 1039.33 942.08 1038.9 941.46 1038.03 941.46 Z M 1058.24 927.32 L 1061.57 927.32 L 1061.57 935.29 L 1058.24 935.29 Z M 1045.8 927.32 L 1049.14 927.32 L 1049.14 935.29 L 1045.8 935.29 Z M 1033.37 927.32 L 1036.7 927.32 L 1036.7 935.29 L 1033.37 935.29 Z M 1056.91 924.32 C 1056.04 924.32 1055.61 924.94 1055.45 925.27 C 1055.29 925.6 1055.25 925.87 1055.25 926.16 L 1055.25 936.44 C 1055.25 936.73 1055.29 937.01 1055.45 937.34 C 1055.61 937.67 1056.04 938.28 1056.91 938.28 L 1062.9 938.28 C 1063.78 938.28 1064.21 937.67 1064.37 937.34 C 1064.53 937.01 1064.57 936.73 1064.57 936.44 L 1064.57 926.16 C 1064.57 925.87 1064.53 925.6 1064.37 925.27 C 1064.21 924.94 1063.78 924.32 1062.9 924.32 Z M 1044.48 924.32 C 1043.6 924.32 1043.17 924.94 1043.01 925.27 C 1042.85 925.6 1042.81 925.87 1042.81 926.16 L 1042.81 936.44 C 1042.81 936.73 1042.85 937.01 1043.01 937.34 C 1043.17 937.67 1043.6 938.28 1044.48 938.28 L 1050.47 938.28 C 1051.34 938.28 1051.77 937.67 1051.93 937.34 C 1052.09 937.01 1052.13 936.73 1052.13 936.44 L 1052.13 926.16 C 1052.13 925.87 1052.09 925.6 1051.93 925.27 C 1051.77 924.94 1051.34 924.32 1050.47 924.32 Z M 1032.04 924.32 C 1031.16 924.32 1030.73 924.94 1030.57 925.27 C 1030.41 925.6 1030.38 925.87 1030.38 926.16 L 1030.38 936.44 C 1030.38 936.73 1030.41 937.01 1030.57 937.34 C 1030.73 937.67 1031.16 938.28 1032.04 938.28 L 1038.03 938.28 C 1038.9 938.28 1039.33 937.67 1039.49 937.34 C 1039.65 937.01 1039.69 936.73 1039.69 936.44 L 1039.69 926.16 C 1039.69 925.87 1039.65 925.6 1039.49 925.27 C 1039.33 924.94 1038.9 924.32 1038.03 924.32 Z M 1026.43 921.21 L 1068.54 921.21 C 1070.08 921.21 1070.87 922.49 1070.87 923.96 L 1070.88 992.82 L 1024.09 992.79 L 1024.12 923.54 C 1024.12 922.27 1024.96 921.21 1026.43 921.21 Z M 1068.54 918.08 L 1026.58 918.11 C 1023.89 918.11 1021.05 920.1 1021.05 923.68 L 1021 993.8 C 1021 995.21 1021.72 995.9 1023.01 995.9 L 1071.8 995.92 C 1073.14 995.92 1073.93 995.35 1073.93 993.9 L 1074 923.89 C 1074 920.77 1071.6 918.08 1068.54 918.08 Z" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1003px; margin-left: 1048px;"><div data-drawio-colors="color: #232F3E; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(35, 47, 62); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;">192.168.0.0/23</div></div></div></foreignObject><text x="1048" y="1019" fill="#232F3E" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">192.168...</text></switch></g><rect x="791" y="805" width="78" height="78" fill="none" stroke="none" pointer-events="all"/><ellipse cx="830" cy="844" rx="39" ry="39" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 862.28 845.25 L 854.52 853.01 L 852.02 850.5 L 856.75 845.77 L 831.77 845.77 L 831.77 870.74 L 836.5 866.01 L 839.01 868.52 L 831.25 876.28 C 830.91 876.62 830.45 876.8 830 876.8 C 829.55 876.8 829.09 876.62 828.75 876.28 L 820.99 868.52 L 823.5 866.01 L 828.23 870.74 L 828.23 845.77 L 803.26 845.77 L 807.99 850.5 L 805.48 853.01 L 797.73 845.25 C 797.03 844.56 797.03 843.44 797.73 842.75 L 805.48 834.99 L 807.99 837.5 L 803.26 842.23 L 828.23 842.23 L 828.23 817.25 L 823.5 821.98 L 820.99 819.48 L 828.75 811.72 C 829.44 811.03 830.56 811.03 831.25 811.72 L 839.01 819.48 L 836.5 821.98 L 831.77 817.25 L 831.77 842.23 L 856.75 842.23 L 852.02 837.5 L 854.52 834.99 L 862.28 842.75 C 862.97 843.44 862.97 844.56 862.28 845.25 M 830 879.45 C 810.45 879.45 794.55 863.55 794.55 844 C 794.55 824.45 810.45 808.55 830 808.55 C 849.55 808.55 865.45 824.45 865.45 844 C 865.45 863.55 849.55 879.45 830 879.45 M 830 805 C 808.5 805 791 822.5 791 844 C 791 865.5 808.5 883 830 883 C 851.5 883 869 865.5 869 844 C 869 822.5 851.5 805 830 805" fill="#4d27aa" stroke="none" pointer-events="all"/><path d="M 875.37 844 L 1016.3 844" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 870.12 844 L 877.12 840.5 L 875.37 844 L 877.12 847.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1021.55 844 L 1014.55 847.5 L 1016.3 844 L 1014.55 840.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1022.5" y="805" width="50" height="78" fill="none" stroke="none" pointer-events="all"/><rect x="1036.68" y="806.75" width="21.02" height="24.53" rx="3.15" ry="3.15" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1024.42" y="824.27" width="45.55" height="57.81" rx="6.83" ry="6.83" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 1062.64 876.51 L 1066.15 876.51 L 1066.15 867.22 L 1062.64 867.22 Z M 1056.45 876.52 L 1059.96 876.52 L 1059.96 867.22 L 1056.45 867.22 Z M 1048.73 876.52 L 1052.24 876.52 L 1052.24 867.22 L 1048.73 867.22 Z M 1042.61 876.52 L 1046.12 876.52 L 1046.12 867.22 L 1042.61 867.22 Z M 1034.82 876.52 L 1038.33 876.52 L 1038.33 867.22 L 1034.82 867.22 Z M 1028.56 876.52 L 1032.06 876.52 L 1032.06 867.22 L 1028.56 867.22 Z M 1062.64 862.53 L 1066.15 862.53 L 1066.15 854.89 L 1062.64 854.89 Z M 1056.45 862.53 L 1059.96 862.53 L 1059.96 854.89 L 1056.45 854.89 Z M 1048.73 862.53 L 1052.24 862.53 L 1052.24 854.89 L 1048.73 854.89 Z M 1042.61 862.53 L 1046.12 862.53 L 1046.12 854.89 L 1042.61 854.89 Z M 1034.82 862.53 L 1038.33 862.53 L 1038.33 854.89 L 1034.82 854.89 Z M 1028.56 862.53 L 1032.06 862.53 L 1032.06 854.89 L 1028.56 854.89 Z M 1062.64 850.23 L 1066.15 850.23 L 1066.15 842.58 L 1062.64 842.58 Z M 1056.45 850.23 L 1059.96 850.23 L 1059.96 842.58 L 1056.45 842.58 Z M 1048.73 850.23 L 1052.24 850.23 L 1052.24 842.58 L 1048.73 842.58 Z M 1042.61 850.23 L 1046.12 850.23 L 1046.12 842.58 L 1042.61 842.58 Z M 1034.82 850.23 L 1038.33 850.23 L 1038.33 842.58 L 1034.82 842.58 Z M 1028.56 850.23 L 1032.06 850.23 L 1032.06 842.58 L 1028.56 842.58 Z M 1062.64 837.99 L 1066.15 837.99 L 1066.15 830.35 L 1062.64 830.35 Z M 1056.45 837.99 L 1059.96 837.99 L 1059.96 830.35 L 1056.45 830.35 Z M 1048.73 837.99 L 1052.24 837.99 L 1052.24 830.35 L 1048.73 830.35 Z M 1042.61 837.99 L 1046.12 837.99 L 1046.12 830.35 L 1042.61 830.35 Z M 1034.82 837.99 L 1038.33 837.99 L 1038.33 830.35 L 1034.82 830.35 Z M 1028.56 837.99 L 1032.06 837.99 L 1032.06 830.35 L 1028.56 830.35 Z M 1048.78 825.58 L 1052.29 825.58 L 1052.29 811.87 L 1048.78 811.87 Z M 1042.59 825.58 L 1046.1 825.58 L 1046.1 811.87 L 1042.59 811.87 Z M 1068.83 879.5 L 1026.17 879.5 L 1026.17 827.51 L 1036.5 827.51 C 1037.47 827.51 1038.25 826.73 1038.25 825.76 L 1038.25 808.5 L 1056.72 808.5 L 1056.72 825.76 C 1056.72 826.73 1057.5 827.51 1058.47 827.51 L 1068.83 827.51 Z M 1069.2 824.01 L 1060.22 824.01 L 1060.22 808.13 C 1060.22 806.41 1058.82 805 1057.09 805 L 1037.88 805 C 1036.16 805 1034.75 806.41 1034.75 808.13 L 1034.75 824.01 L 1025.8 824.01 C 1024.07 824.01 1022.66 825.41 1022.66 827.14 L 1022.66 879.87 C 1022.66 881.59 1024.07 883 1025.8 883 L 1069.2 883 C 1070.93 883 1072.34 881.59 1072.34 879.87 L 1072.34 827.14 C 1072.34 825.41 1070.93 824.01 1069.2 824.01 Z" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 890px; margin-left: 1048px;"><div data-drawio-colors="color: #232F3E; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(35, 47, 62); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;">192.168.2.0/23</div></div></div></foreignObject><text x="1048" y="906" fill="#232F3E" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">192.16...</text></switch></g><rect x="1176" y="883" width="150" height="99" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 142px; height: 1px; padding-top: 873px; margin-left: 1181px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 109px; overflow: hidden;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><h2 style="line-height: 80%;">Prefixes</h2><pre style="line-height: 80%; font-size: 18px;"><b style=""><font style="font-size: 18px;">192.168.0.0/23</font></b></pre><pre style="line-height: 80%; font-size: 18px;"><b style=""><font style="font-size: 18px;">192.168.2.0/23</font></b></pre></div></div></div></foreignObject><text x="1181" y="889" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Prefixes...</text></switch></g><rect x="1176" y="605" width="150" height="98" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 142px; height: 1px; padding-top: 595px; margin-left: 1181px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 108px; overflow: hidden;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><h2 style="line-height: 80%;">Prefixes</h2><pre style="line-height: 80%; font-size: 18px;"><b style=""><font style="font-size: 18px;">10.0.0.0/8</font></b></pre><pre style="line-height: 80%; font-size: 18px;"><b style=""><font style="font-size: 18px;">172.16.0.0/12</font></b></pre></div></div></div></foreignObject><text x="1181" y="611" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Prefixes...</text></switch></g><path d="M 405.37 911 L 590 911 L 590 957 L 784.63 957" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 400.12 911 L 407.12 907.5 L 405.37 911 L 407.12 914.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 789.88 957 L 782.88 960.5 L 784.63 957 L 782.88 953.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 921px; margin-left: 518px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;"><pre>100.64.0.10/31</pre></div></div></div></foreignObject><text x="518" y="926" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">100.64....</text></switch></g><path d="M 405.37 891 L 590 891 L 590 844 L 784.63 844" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 400.12 891 L 407.12 887.5 L 405.37 891 L 407.12 894.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 789.88 844 L 782.88 847.5 L 784.63 844 L 782.88 840.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 881px; margin-left: 520px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;"><pre>100.64.0.8/31</pre></div></div></div></foreignObject><text x="520" y="886" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">100.64....</text></switch></g><rect x="51" y="251.5" width="160" height="180" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 152px; height: 1px; padding-top: 242px; margin-left: 56px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 190px; overflow: hidden;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><h2 style="line-height: 80%;">Prefixes</h2><pre style="line-height: 80%; font-size: 18px;"><b style=""><font style="font-size: 18px;">10.0.0.0/8</font></b></pre><pre style="line-height: 80%; font-size: 18px;"><b style=""><font style="font-size: 18px;">- 10.0.0.0/9</font></b></pre><pre style="line-height: 80%; font-size: 18px;"><b style=""><font style="font-size: 18px;">- 10.128.0.0/9</font></b></pre><pre style="line-height: 80%; font-size: 18px;"><b>192.168.0.0/16</b></pre></div></div></div></foreignObject><text x="56" y="258" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Prefixes...</text></switch></g><path d="M 416.5 413.5 C 380.1 413.5 371 446.5 400.12 453.1 C 371 467.62 403.76 499.3 427.42 486.1 C 443.8 512.5 498.4 512.5 516.6 486.1 C 553 486.1 553 459.7 530.25 446.5 C 553 420.1 516.6 393.7 484.75 406.9 C 462 387.1 425.6 387.1 416.5 413.5 Z" fill="#ffffff" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 180px; height: 1px; padding-top: 447px; margin-left: 372px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">MPLS VRF<br />CustA</div></div></div></foreignObject><text x="462" y="451" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px" text-anchor="middle">MPLS VRF...</text></switch></g><rect x="152" y="583.5" width="78" height="76" fill="none" stroke="none" pointer-events="all"/><rect x="154.1" y="585.27" width="74.16" height="49.44" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="154.1" y="643.53" width="74.16" height="12.36" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 225 583.5 L 157.01 583.5 C 154.43 583.5 152.34 585.59 152.34 588.17 L 152.34 633.06 C 152.34 635.63 154.43 637.72 157.01 637.72 L 225 637.72 C 227.57 637.72 229.66 635.63 229.66 633.06 L 229.66 588.17 C 229.66 585.59 227.57 583.5 225 583.5 Z M 226.13 633.06 C 226.13 633.68 225.62 634.19 225 634.19 L 157.01 634.19 C 156.38 634.19 155.87 633.68 155.87 633.06 L 155.87 588.17 C 155.87 587.54 156.38 587.03 157.01 587.03 L 225 587.03 C 225.62 587.03 226.13 587.54 226.13 588.17 Z M 220.92 589.68 L 161.03 589.68 C 159.64 589.68 158.52 590.81 158.52 592.19 L 158.52 629.03 C 158.52 630.42 159.64 631.54 161.03 631.54 L 220.92 631.54 C 222.3 631.54 223.43 630.42 223.43 629.03 L 223.43 592.19 C 223.43 590.81 222.3 589.68 220.92 589.68 Z M 162.05 628.01 L 162.05 593.21 L 219.9 593.21 L 219.9 628.01 Z M 225 640.65 L 157.01 640.65 C 154.43 640.65 152.34 642.74 152.34 645.32 L 152.34 654.83 C 152.34 657.4 154.43 659.5 157.01 659.5 L 225 659.5 C 227.57 659.5 229.66 657.4 229.66 654.83 L 229.66 645.32 C 229.66 642.74 227.57 640.65 225 640.65 Z M 226.13 654.83 C 226.13 655.46 225.62 655.97 225 655.97 L 157.01 655.97 C 156.38 655.97 155.87 655.46 155.87 654.83 L 155.87 645.32 C 155.87 644.69 156.38 644.18 157.01 644.18 L 225 644.18 C 225.62 644.18 226.13 644.69 226.13 645.32 Z M 223.49 648.43 L 223.49 651.82 C 223.49 652.6 222.86 653.22 222.09 653.22 L 203.12 653.22 C 202.34 653.22 201.72 652.6 201.72 651.82 L 201.72 648.43 C 201.72 647.65 202.34 647.03 203.12 647.03 L 222.09 647.03 C 222.86 647.03 223.49 647.65 223.49 648.43 Z" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 667px; margin-left: 191px;"><div data-drawio-colors="color: #232F3E; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(35, 47, 62); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;">MGMT Network<br style="font-size: 16px;" />192.168.0.0/16</div></div></div></foreignObject><text x="191" y="683" fill="#232F3E" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">MGMT Netwo...</text></switch></g><path d="M 231.61 580.78 L 329.98 372.22" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 229.37 585.53 L 229.19 577.7 L 231.61 580.78 L 235.52 580.69 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 332.22 367.47 L 332.4 375.3 L 329.98 372.22 L 326.07 372.31 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 314.63 620.85 L 236.03 621.45" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 319.88 620.81 L 312.91 624.36 L 314.63 620.85 L 312.86 617.36 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 230.78 621.49 L 237.76 617.94 L 236.03 621.45 L 237.81 624.94 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 332.99 864.6 L 232.5 662.16" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 335.32 869.3 L 329.08 864.58 L 332.99 864.6 L 335.35 861.47 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 230.16 657.46 L 236.41 662.18 L 232.5 662.16 L 230.14 665.29 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 405.37 611 L 590 611 L 590 563 L 784.63 563" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 400.12 611 L 407.12 607.5 L 405.37 611 L 407.12 614.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 789.88 563 L 782.88 566.5 L 784.63 563 L 782.88 559.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 601px; margin-left: 520px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;"><pre>100.64.0.4/31</pre></div></div></div></foreignObject><text x="520" y="606" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">100.64....</text></switch></g><path d="M 405.37 631 L 590 631 L 590 676 L 784.63 676" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 400.12 631 L 407.12 627.5 L 405.37 631 L 407.12 634.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 789.88 676 L 782.88 679.5 L 784.63 676 L 782.88 672.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 641px; margin-left: 520px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;"><pre>100.64.0.6/31</pre></div></div></div></foreignObject><text x="520" y="646" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">100.64....</text></switch></g><path d="M 390.66 371.87 L 413.14 408.09" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 387.89 367.41 L 394.56 371.51 L 390.66 371.87 L 388.61 375.2 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 415.91 412.55 L 409.24 408.45 L 413.14 408.09 L 415.19 404.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 410.5 973.5 C 374.1 973.5 365 1006.5 394.12 1013.1 C 365 1027.62 397.76 1059.3 421.42 1046.1 C 437.8 1072.5 492.4 1072.5 510.6 1046.1 C 547 1046.1 547 1019.7 524.25 1006.5 C 547 980.1 510.6 953.7 478.75 966.9 C 456 947.1 419.6 947.1 410.5 973.5 Z" fill="#ffffff" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 180px; height: 1px; padding-top: 1006px; margin-left: 366px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">MPLS VRF<br />CustC</div></div></div></foreignObject><text x="456" y="1011" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px" text-anchor="middle">MPLS VRF...</text></switch></g><path d="M 416.5 692.5 C 380.1 692.5 371 725.5 400.12 732.1 C 371 746.62 403.76 778.3 427.42 765.1 C 443.8 791.5 498.4 791.5 516.6 765.1 C 553 765.1 553 738.7 530.25 725.5 C 553 699.1 516.6 672.7 484.75 685.9 C 462 666.1 425.6 666.1 416.5 692.5 Z" fill="#ffffff" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 180px; height: 1px; padding-top: 725px; margin-left: 372px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">MPLS VRF<br />CustB</div></div></div></foreignObject><text x="462" y="730" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px" text-anchor="middle">MPLS VRF...</text></switch></g><path d="M 390.78 653.13 L 413.02 687.17" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 387.91 648.74 L 394.67 652.68 L 390.78 653.13 L 388.81 656.51 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 415.89 691.56 L 409.13 687.62 L 413.02 687.17 L 414.99 683.79 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 407.65 967.81 L 390.93 934.49" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 410 972.5 L 403.73 967.81 L 407.65 967.81 L 409.99 964.67 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 388.58 929.8 L 394.85 934.49 L 390.93 934.49 L 388.59 937.63 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|