diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index f13168f3c..23d5b8182 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v3.1.2 + placeholder: v3.1.3 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 277c9724f..00b464515 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v3.1.2 + placeholder: v3.1.3 validations: required: true - type: dropdown diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 2b8744032..61da98952 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -1,16 +1,23 @@ # NetBox v3.1 -## v3.1.3 (FUTURE) +## v3.1.4 (FUTURE) + +--- + +## v3.1.3 (2021-12-29) ### Enhancements * [#6782](https://github.com/netbox-community/netbox/issues/6782) - Enable the inclusion of custom links in tables +* [#7600](https://github.com/netbox-community/netbox/issues/7600) - Include count of available IPs on prefix view +* [#8034](https://github.com/netbox-community/netbox/issues/8034) - Enable specifying custom field validators during CSV import * [#8100](https://github.com/netbox-community/netbox/issues/8100) - Add "other" choice for FHRP group protocol * [#8175](https://github.com/netbox-community/netbox/issues/8175) - Display parent object when attaching an image ### Bug Fixes * [#7246](https://github.com/netbox-community/netbox/issues/7246) - Don't attempt to URL-decode NAPALM response payloads +* [#7290](https://github.com/netbox-community/netbox/issues/7290) - Defer loading API-backed form fields * [#7887](https://github.com/netbox-community/netbox/issues/7887) - Forward `HTTP_X_FORWARDED_FOR` to custom scripts * [#7962](https://github.com/netbox-community/netbox/issues/7962) - Fix user menu under report/script result view * [#7972](https://github.com/netbox-community/netbox/issues/7972) - Standardize name of `RemoteUserBackend` logger diff --git a/netbox/circuits/forms/filtersets.py b/netbox/circuits/forms/filtersets.py index 68b57e03c..f5ff65088 100644 --- a/netbox/circuits/forms/filtersets.py +++ b/netbox/circuits/forms/filtersets.py @@ -26,14 +26,12 @@ class ProviderFilterForm(CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -42,8 +40,7 @@ class ProviderFilterForm(CustomFieldModelFilterForm): 'region_id': '$region_id', 'site_group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) asn = forms.IntegerField( required=False, @@ -61,8 +58,7 @@ class ProviderNetworkFilterForm(CustomFieldModelFilterForm): provider_id = DynamicModelMultipleChoiceField( queryset=Provider.objects.all(), required=False, - label=_('Provider'), - fetch_trigger='open' + label=_('Provider') ) service_id = forms.CharField( max_length=100, @@ -88,14 +84,12 @@ class CircuitFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): type_id = DynamicModelMultipleChoiceField( queryset=CircuitType.objects.all(), required=False, - label=_('Type'), - fetch_trigger='open' + label=_('Type') ) provider_id = DynamicModelMultipleChoiceField( queryset=Provider.objects.all(), required=False, - label=_('Provider'), - fetch_trigger='open' + label=_('Provider') ) provider_network_id = DynamicModelMultipleChoiceField( queryset=ProviderNetwork.objects.all(), @@ -103,8 +97,7 @@ class CircuitFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'provider_id': '$provider_id' }, - label=_('Provider network'), - fetch_trigger='open' + label=_('Provider network') ) status = forms.MultipleChoiceField( choices=CircuitStatusChoices, @@ -114,14 +107,12 @@ class CircuitFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -130,8 +121,7 @@ class CircuitFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): 'region_id': '$region_id', 'site_group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) commit_rate = forms.IntegerField( required=False, diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index c12891dc3..eb3035122 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -62,14 +62,12 @@ class DeviceComponentFilterForm(CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -78,8 +76,7 @@ class DeviceComponentFilterForm(CustomFieldModelFilterForm): 'region_id': '$region_id', 'group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), @@ -87,14 +84,12 @@ class DeviceComponentFilterForm(CustomFieldModelFilterForm): query_params={ 'site_id': '$site_id', }, - label=_('Location'), - fetch_trigger='open' + label=_('Location') ) virtual_chassis_id = DynamicModelMultipleChoiceField( queryset=VirtualChassis.objects.all(), required=False, - label=_('Virtual Chassis'), - fetch_trigger='open' + label=_('Virtual Chassis') ) device_id = DynamicModelMultipleChoiceField( queryset=Device.objects.all(), @@ -104,8 +99,7 @@ class DeviceComponentFilterForm(CustomFieldModelFilterForm): 'location_id': '$location_id', 'virtual_chassis_id': '$virtual_chassis_id' }, - label=_('Device'), - fetch_trigger='open' + label=_('Device') ) @@ -114,8 +108,7 @@ class RegionFilterForm(CustomFieldModelFilterForm): parent_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Parent region'), - fetch_trigger='open' + label=_('Parent region') ) tag = TagFilterField(model) @@ -125,8 +118,7 @@ class SiteGroupFilterForm(CustomFieldModelFilterForm): parent_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Parent group'), - fetch_trigger='open' + label=_('Parent group') ) tag = TagFilterField(model) @@ -147,20 +139,17 @@ class SiteFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) asn_id = DynamicModelMultipleChoiceField( queryset=ASN.objects.all(), required=False, - label=_('ASNs'), - fetch_trigger='open' + label=_('ASNs') ) tag = TagFilterField(model) @@ -175,14 +164,12 @@ class LocationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -191,8 +178,7 @@ class LocationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): 'region_id': '$region_id', 'group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) parent_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), @@ -201,8 +187,7 @@ class LocationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): 'region_id': '$region_id', 'site_id': '$site_id', }, - label=_('Parent'), - fetch_trigger='open' + label=_('Parent') ) tag = TagFilterField(model) @@ -224,8 +209,7 @@ class RackFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -233,8 +217,7 @@ class RackFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), @@ -243,8 +226,7 @@ class RackFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Location'), - fetch_trigger='open' + label=_('Location') ) status = forms.MultipleChoiceField( choices=RackStatusChoices, @@ -265,8 +247,7 @@ class RackFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): queryset=RackRole.objects.all(), required=False, null_option='None', - label=_('Role'), - fetch_trigger='open' + label=_('Role') ) serial = forms.CharField( required=False @@ -285,8 +266,7 @@ class RackElevationFilterForm(RackFilterForm): query_params={ 'site_id': '$site_id', 'location_id': '$location_id', - }, - fetch_trigger='open' + } ) @@ -301,8 +281,7 @@ class RackReservationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -310,15 +289,13 @@ class RackReservationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.prefetch_related('site'), required=False, label=_('Location'), - null_option='None', - fetch_trigger='open' + null_option='None' ) user_id = DynamicModelMultipleChoiceField( queryset=User.objects.all(), @@ -326,8 +303,7 @@ class RackReservationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): label=_('User'), widget=APISelectMultiple( api_url='/api/users/users/', - ), - fetch_trigger='open' + ) ) tag = TagFilterField(model) @@ -347,8 +323,7 @@ class DeviceTypeFilterForm(CustomFieldModelFilterForm): manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, - label=_('Manufacturer'), - fetch_trigger='open' + label=_('Manufacturer') ) part_number = forms.CharField( required=False @@ -479,8 +454,7 @@ class PlatformFilterForm(CustomFieldModelFilterForm): manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, - label=_('Manufacturer'), - fetch_trigger='open' + label=_('Manufacturer') ) tag = TagFilterField(model) @@ -501,14 +475,12 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, CustomFi region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -517,8 +489,7 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, CustomFi 'region_id': '$region_id', 'group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), @@ -527,8 +498,7 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, CustomFi query_params={ 'site_id': '$site_id' }, - label=_('Location'), - fetch_trigger='open' + label=_('Location') ) rack_id = DynamicModelMultipleChoiceField( queryset=Rack.objects.all(), @@ -538,20 +508,17 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, CustomFi 'site_id': '$site_id', 'location_id': '$location_id', }, - label=_('Rack'), - fetch_trigger='open' + label=_('Rack') ) role_id = DynamicModelMultipleChoiceField( queryset=DeviceRole.objects.all(), required=False, - label=_('Role'), - fetch_trigger='open' + label=_('Role') ) manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, - label=_('Manufacturer'), - fetch_trigger='open' + label=_('Manufacturer') ) device_type_id = DynamicModelMultipleChoiceField( queryset=DeviceType.objects.all(), @@ -559,15 +526,13 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, CustomFi query_params={ 'manufacturer_id': '$manufacturer_id' }, - label=_('Model'), - fetch_trigger='open' + label=_('Model') ) platform_id = DynamicModelMultipleChoiceField( queryset=Platform.objects.all(), required=False, null_option='None', - label=_('Platform'), - fetch_trigger='open' + label=_('Platform') ) status = forms.MultipleChoiceField( choices=DeviceStatusChoices, @@ -689,14 +654,12 @@ class VirtualChassisFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -705,8 +668,7 @@ class VirtualChassisFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): 'region_id': '$region_id', 'group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) tag = TagFilterField(model) @@ -722,8 +684,7 @@ class CableFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -731,8 +692,7 @@ class CableFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) rack_id = DynamicModelMultipleChoiceField( queryset=Rack.objects.all(), @@ -741,8 +701,7 @@ class CableFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): null_option='None', query_params={ 'site_id': '$site_id' - }, - fetch_trigger='open' + } ) type = forms.MultipleChoiceField( choices=add_blank_choice(CableTypeChoices), @@ -765,8 +724,7 @@ class CableFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): 'tenant_id': '$tenant_id', 'rack_id': '$rack_id', }, - label=_('Device'), - fetch_trigger='open' + label=_('Device') ) tag = TagFilterField(model) @@ -780,14 +738,12 @@ class PowerPanelFilterForm(CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -796,8 +752,7 @@ class PowerPanelFilterForm(CustomFieldModelFilterForm): 'region_id': '$region_id', 'group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), @@ -806,8 +761,7 @@ class PowerPanelFilterForm(CustomFieldModelFilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Location'), - fetch_trigger='open' + label=_('Location') ) tag = TagFilterField(model) @@ -823,14 +777,12 @@ class PowerFeedFilterForm(CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -838,8 +790,7 @@ class PowerFeedFilterForm(CustomFieldModelFilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) power_panel_id = DynamicModelMultipleChoiceField( queryset=PowerPanel.objects.all(), @@ -848,8 +799,7 @@ class PowerFeedFilterForm(CustomFieldModelFilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Power panel'), - fetch_trigger='open' + label=_('Power panel') ) rack_id = DynamicModelMultipleChoiceField( queryset=Rack.objects.all(), @@ -858,8 +808,7 @@ class PowerFeedFilterForm(CustomFieldModelFilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Rack'), - fetch_trigger='open' + label=_('Rack') ) status = forms.MultipleChoiceField( choices=PowerFeedStatusChoices, @@ -1109,8 +1058,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm): manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, - label=_('Manufacturer'), - fetch_trigger='open' + label=_('Manufacturer') ) serial = forms.CharField( required=False @@ -1144,8 +1092,7 @@ class ConsoleConnectionFilterForm(FilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -1153,8 +1100,7 @@ class ConsoleConnectionFilterForm(FilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) device_id = DynamicModelMultipleChoiceField( queryset=Device.objects.all(), @@ -1162,8 +1108,7 @@ class ConsoleConnectionFilterForm(FilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Device'), - fetch_trigger='open' + label=_('Device') ) @@ -1171,8 +1116,7 @@ class PowerConnectionFilterForm(FilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -1180,8 +1124,7 @@ class PowerConnectionFilterForm(FilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) device_id = DynamicModelMultipleChoiceField( queryset=Device.objects.all(), @@ -1189,8 +1132,7 @@ class PowerConnectionFilterForm(FilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Device'), - fetch_trigger='open' + label=_('Device') ) @@ -1198,8 +1140,7 @@ class InterfaceConnectionFilterForm(FilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -1207,8 +1148,7 @@ class InterfaceConnectionFilterForm(FilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) device_id = DynamicModelMultipleChoiceField( queryset=Device.objects.all(), @@ -1216,6 +1156,5 @@ class InterfaceConnectionFilterForm(FilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Device'), - fetch_trigger='open' + label=_('Device') ) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 762924653..e2c343028 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -300,16 +300,14 @@ class RackReservationForm(TenancyForm, CustomFieldModelForm): required=False, initial_params={ 'sites': '$site' - }, - fetch_trigger='open' + } ) site_group = DynamicModelChoiceField( queryset=SiteGroup.objects.all(), required=False, initial_params={ 'sites': '$site' - }, - fetch_trigger='open' + } ) site = DynamicModelChoiceField( queryset=Site.objects.all(), @@ -317,24 +315,21 @@ class RackReservationForm(TenancyForm, CustomFieldModelForm): query_params={ 'region_id': '$region', 'group_id': '$site_group', - }, - fetch_trigger='open' + } ) location = DynamicModelChoiceField( queryset=Location.objects.all(), required=False, query_params={ 'site_id': '$site' - }, - fetch_trigger='open' + } ) rack = DynamicModelChoiceField( queryset=Rack.objects.all(), query_params={ 'site_id': '$site', 'location_id': '$location', - }, - fetch_trigger='open' + } ) units = NumericArrayField( base_field=forms.IntegerField(), @@ -348,8 +343,7 @@ class RackReservationForm(TenancyForm, CustomFieldModelForm): ) tags = DynamicModelMultipleChoiceField( queryset=Tag.objects.all(), - required=False, - fetch_trigger='open' + required=False ) class Meta: diff --git a/netbox/extras/forms/bulk_import.py b/netbox/extras/forms/bulk_import.py index fb8cf53e8..9f44494e0 100644 --- a/netbox/extras/forms/bulk_import.py +++ b/netbox/extras/forms/bulk_import.py @@ -3,9 +3,10 @@ from django.contrib.contenttypes.models import ContentType from django.contrib.postgres.forms import SimpleArrayField from django.utils.safestring import mark_safe +from extras.choices import CustomFieldTypeChoices from extras.models import * from extras.utils import FeatureQuery -from utilities.forms import CSVContentTypeField, CSVModelForm, CSVMultipleContentTypeField, SlugField +from utilities.forms import CSVChoiceField, CSVContentTypeField, CSVModelForm, CSVMultipleContentTypeField, SlugField __all__ = ( 'CustomFieldCSVForm', @@ -22,6 +23,10 @@ class CustomFieldCSVForm(CSVModelForm): limit_choices_to=FeatureQuery('custom_fields'), help_text="One or more assigned object types" ) + type = CSVChoiceField( + choices=CustomFieldTypeChoices, + help_text='Field data type (e.g. text, integer, etc.)' + ) choices = SimpleArrayField( base_field=forms.CharField(), required=False, @@ -32,7 +37,7 @@ class CustomFieldCSVForm(CSVModelForm): model = CustomField fields = ( 'name', 'label', 'type', 'content_types', 'required', 'description', 'weight', 'filter_logic', 'default', - 'choices', 'weight', + 'choices', 'weight', 'validation_minimum', 'validation_maximum', 'validation_regex', ) diff --git a/netbox/extras/forms/filtersets.py b/netbox/extras/forms/filtersets.py index 29527c20e..388cd1e60 100644 --- a/netbox/extras/forms/filtersets.py +++ b/netbox/extras/forms/filtersets.py @@ -164,38 +164,32 @@ class ConfigContextFilterForm(FilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Regions'), - fetch_trigger='open' + label=_('Regions') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site groups'), - fetch_trigger='open' + label=_('Site groups') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, - label=_('Sites'), - fetch_trigger='open' + label=_('Sites') ) device_type_id = DynamicModelMultipleChoiceField( queryset=DeviceType.objects.all(), required=False, - label=_('Device types'), - fetch_trigger='open' + label=_('Device types') ) role_id = DynamicModelMultipleChoiceField( queryset=DeviceRole.objects.all(), required=False, - label=_('Roles'), - fetch_trigger='open' + label=_('Roles') ) platform_id = DynamicModelMultipleChoiceField( queryset=Platform.objects.all(), required=False, - label=_('Platforms'), - fetch_trigger='open' + label=_('Platforms') ) cluster_type_id = DynamicModelMultipleChoiceField( queryset=ClusterType.objects.all(), @@ -206,33 +200,28 @@ class ConfigContextFilterForm(FilterForm): cluster_group_id = DynamicModelMultipleChoiceField( queryset=ClusterGroup.objects.all(), required=False, - label=_('Cluster groups'), - fetch_trigger='open' + label=_('Cluster groups') ) cluster_id = DynamicModelMultipleChoiceField( queryset=Cluster.objects.all(), required=False, - label=_('Clusters'), - fetch_trigger='open' + label=_('Clusters') ) tenant_group_id = DynamicModelMultipleChoiceField( queryset=TenantGroup.objects.all(), required=False, - label=_('Tenant groups'), - fetch_trigger='open' + label=_('Tenant groups') ) tenant_id = DynamicModelMultipleChoiceField( queryset=Tenant.objects.all(), required=False, - label=_('Tenant'), - fetch_trigger='open' + label=_('Tenant') ) tag = DynamicModelMultipleChoiceField( queryset=Tag.objects.all(), to_field_name='slug', required=False, - label=_('Tags'), - fetch_trigger='open' + label=_('Tags') ) @@ -269,8 +258,7 @@ class JournalEntryFilterForm(FilterForm): label=_('User'), widget=APISelectMultiple( api_url='/api/users/users/', - ), - fetch_trigger='open' + ) ) assigned_object_type_id = DynamicModelMultipleChoiceField( queryset=ContentType.objects.all(), @@ -278,8 +266,7 @@ class JournalEntryFilterForm(FilterForm): label=_('Object Type'), widget=APISelectMultiple( api_url='/api/extras/content-types/', - ), - fetch_trigger='open' + ) ) kind = forms.ChoiceField( choices=add_blank_choice(JournalEntryKindChoices), @@ -316,8 +303,7 @@ class ObjectChangeFilterForm(FilterForm): label=_('User'), widget=APISelectMultiple( api_url='/api/users/users/', - ), - fetch_trigger='open' + ) ) changed_object_type_id = DynamicModelMultipleChoiceField( queryset=ContentType.objects.all(), @@ -325,6 +311,5 @@ class ObjectChangeFilterForm(FilterForm): label=_('Object Type'), widget=APISelectMultiple( api_url='/api/extras/content-types/', - ), - fetch_trigger='open' + ) ) diff --git a/netbox/extras/tests/test_views.py b/netbox/extras/tests/test_views.py index 9ce324a5c..67abcf543 100644 --- a/netbox/extras/tests/test_views.py +++ b/netbox/extras/tests/test_views.py @@ -39,10 +39,10 @@ class CustomFieldTestCase(ViewTestCases.PrimaryObjectViewTestCase): } cls.csv_data = ( - 'name,label,type,content_types,weight,filter_logic,choices', - 'field4,Field 4,text,dcim.site,100,exact,', - 'field5,Field 5,integer,dcim.site,100,exact,', - 'field6,Field 6,select,dcim.site,100,exact,"A,B,C"', + 'name,label,type,content_types,weight,filter_logic,choices,validation_minimum,validation_maximum,validation_regex', + 'field4,Field 4,text,dcim.site,100,exact,,,,[a-z]{3}', + 'field5,Field 5,integer,dcim.site,100,exact,,1,100,', + 'field6,Field 6,select,dcim.site,100,exact,"A,B,C",,,', ) cls.bulk_edit_data = { diff --git a/netbox/ipam/forms/filtersets.py b/netbox/ipam/forms/filtersets.py index a7732fe9a..df95bdd05 100644 --- a/netbox/ipam/forms/filtersets.py +++ b/netbox/ipam/forms/filtersets.py @@ -48,14 +48,12 @@ class VRFFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): import_target_id = DynamicModelMultipleChoiceField( queryset=RouteTarget.objects.all(), required=False, - label=_('Import targets'), - fetch_trigger='open' + label=_('Import targets') ) export_target_id = DynamicModelMultipleChoiceField( queryset=RouteTarget.objects.all(), required=False, - label=_('Export targets'), - fetch_trigger='open' + label=_('Export targets') ) tag = TagFilterField(model) @@ -70,14 +68,12 @@ class RouteTargetFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): importing_vrf_id = DynamicModelMultipleChoiceField( queryset=VRF.objects.all(), required=False, - label=_('Imported by VRF'), - fetch_trigger='open' + label=_('Imported by VRF') ) exporting_vrf_id = DynamicModelMultipleChoiceField( queryset=VRF.objects.all(), required=False, - label=_('Exported by VRF'), - fetch_trigger='open' + label=_('Exported by VRF') ) tag = TagFilterField(model) @@ -110,8 +106,7 @@ class AggregateFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): rir_id = DynamicModelMultipleChoiceField( queryset=RIR.objects.all(), required=False, - label=_('RIR'), - fetch_trigger='open' + label=_('RIR') ) tag = TagFilterField(model) @@ -127,14 +122,12 @@ class ASNFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): rir_id = DynamicModelMultipleChoiceField( queryset=RIR.objects.all(), required=False, - label=_('RIR'), - fetch_trigger='open' + label=_('RIR') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) @@ -180,14 +173,12 @@ class PrefixFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): queryset=VRF.objects.all(), required=False, label=_('Assigned VRF'), - null_option='Global', - fetch_trigger='open' + null_option='Global' ) present_in_vrf_id = DynamicModelChoiceField( queryset=VRF.objects.all(), required=False, - label=_('Present in VRF'), - fetch_trigger='open' + label=_('Present in VRF') ) status = forms.MultipleChoiceField( choices=PrefixStatusChoices, @@ -197,14 +188,12 @@ class PrefixFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -213,15 +202,13 @@ class PrefixFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) role_id = DynamicModelMultipleChoiceField( queryset=Role.objects.all(), required=False, null_option='None', - label=_('Role'), - fetch_trigger='open' + label=_('Role') ) is_pool = forms.NullBooleanField( required=False, @@ -257,8 +244,7 @@ class IPRangeFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): queryset=VRF.objects.all(), required=False, label=_('Assigned VRF'), - null_option='Global', - fetch_trigger='open' + null_option='Global' ) status = forms.MultipleChoiceField( choices=PrefixStatusChoices, @@ -269,8 +255,7 @@ class IPRangeFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): queryset=Role.objects.all(), required=False, null_option='None', - label=_('Role'), - fetch_trigger='open' + label=_('Role') ) tag = TagFilterField(model) @@ -308,14 +293,12 @@ class IPAddressFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): queryset=VRF.objects.all(), required=False, label=_('Assigned VRF'), - null_option='Global', - fetch_trigger='open' + null_option='Global' ) present_in_vrf_id = DynamicModelChoiceField( queryset=VRF.objects.all(), required=False, - label=_('Present in VRF'), - fetch_trigger='open' + label=_('Present in VRF') ) status = forms.MultipleChoiceField( choices=IPAddressStatusChoices, @@ -377,32 +360,27 @@ class VLANGroupFilterForm(CustomFieldModelFilterForm): region = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) sitegroup = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) location = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), required=False, - label=_('Location'), - fetch_trigger='open' + label=_('Location') ) rack = DynamicModelMultipleChoiceField( queryset=Rack.objects.all(), required=False, - label=_('Rack'), - fetch_trigger='open' + label=_('Rack') ) min_vid = forms.IntegerField( min_value=VLAN_VID_MIN, @@ -426,14 +404,12 @@ class VLANFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -442,8 +418,7 @@ class VLANFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'region': '$region' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) group_id = DynamicModelMultipleChoiceField( queryset=VLANGroup.objects.all(), @@ -452,8 +427,7 @@ class VLANFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'region': '$region' }, - label=_('VLAN group'), - fetch_trigger='open' + label=_('VLAN group') ) status = forms.MultipleChoiceField( choices=VLANStatusChoices, @@ -464,8 +438,7 @@ class VLANFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): queryset=Role.objects.all(), required=False, null_option='None', - label=_('Role'), - fetch_trigger='open' + label=_('Role') ) vid = forms.IntegerField( required=False, diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 4c93ee982..05aee2606 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -418,7 +418,7 @@ class PrefixView(generic.ObjectView): ).filter( prefix__net_contains=str(instance.prefix) ).prefetch_related( - 'site', 'role' + 'site', 'role', 'tenant' ) parent_prefix_table = tables.PrefixTable( list(parent_prefixes), diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index d9b437531..9e8ae3085 100644 --- a/netbox/project-static/dist/netbox.js +++ b/netbox/project-static/dist/netbox.js @@ -6,7 +6,7 @@ `+_n.join("")+` `}}function FE(){sn.calendarContainer.classList.add("hasWeeks");var En=fn("div","flatpickr-weekwrapper");En.appendChild(fn("span","flatpickr-weekday",sn.l10n.weekAbbreviation));var _n=fn("div","flatpickr-weeks");return En.appendChild(_n),{weekWrapper:En,weekNumbers:_n}}function zl(En,_n){_n===void 0&&(_n=!0);var xn=_n?En:En-sn.currentMonth;xn<0&&sn._hidePrevMonthArrow===!0||xn>0&&sn._hideNextMonthArrow===!0||(sn.currentMonth+=xn,(sn.currentMonth<0||sn.currentMonth>11)&&(sn.currentYear+=sn.currentMonth>11?1:-1,sn.currentMonth=(sn.currentMonth+12)%12,fr("onYearChange"),ns()),ta(),fr("onMonthChange"),oa())}function $E(En,_n){En===void 0&&(En=!0),_n===void 0&&(_n=!0),sn.input.value="",sn.altInput!==void 0&&(sn.altInput.value=""),sn.mobileInput!==void 0&&(sn.mobileInput.value=""),sn.selectedDates=[],sn.latestSelectedDateObj=void 0,_n===!0&&(sn.currentYear=sn._initialDate.getFullYear(),sn.currentMonth=sn._initialDate.getMonth()),sn.showTimeInput=!1,sn.config.enableTime===!0&&Mr(),sn.redraw(),En&&fr("onChange")}function zE(){sn.isOpen=!1,sn.isMobile||(sn.calendarContainer!==void 0&&sn.calendarContainer.classList.remove("open"),sn._input!==void 0&&sn._input.classList.remove("active")),fr("onClose")}function WE(){sn.config!==void 0&&fr("onDestroy");for(var En=sn._handlers.length;En--;){var _n=sn._handlers[En];_n.element.removeEventListener(_n.event,_n.handler,_n.options)}if(sn._handlers=[],sn.mobileInput)sn.mobileInput.parentNode&&sn.mobileInput.parentNode.removeChild(sn.mobileInput),sn.mobileInput=void 0;else if(sn.calendarContainer&&sn.calendarContainer.parentNode)if(sn.config.static&&sn.calendarContainer.parentNode){var xn=sn.calendarContainer.parentNode;if(xn.lastChild&&xn.removeChild(xn.lastChild),xn.parentNode){for(;xn.firstChild;)xn.parentNode.insertBefore(xn.firstChild,xn);xn.parentNode.removeChild(xn)}}else sn.calendarContainer.parentNode.removeChild(sn.calendarContainer);sn.altInput&&(sn.input.type="text",sn.altInput.parentNode&&sn.altInput.parentNode.removeChild(sn.altInput),delete sn.altInput),sn.input&&(sn.input.type=sn.input._type,sn.input.classList.remove("flatpickr-input"),sn.input.removeAttribute("readonly"),sn.input.value=""),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(Pn){try{delete sn[Pn]}catch(jn){}})}function rs(En){return sn.config.appendTo&&sn.config.appendTo.contains(En)?!0:sn.calendarContainer.contains(En)}function Wl(En){if(sn.isOpen&&!sn.config.inline){var _n=pn(En),xn=rs(_n),Pn=_n===sn.input||_n===sn.altInput||sn.element.contains(_n)||En.path&&En.path.indexOf&&(~En.path.indexOf(sn.input)||~En.path.indexOf(sn.altInput)),jn=En.type==="blur"?Pn&&En.relatedTarget&&!rs(En.relatedTarget):!Pn&&!xn&&!rs(En.relatedTarget),Nn=!sn.config.ignoredFocusElements.some(function($n){return $n.contains(_n)});jn&&Nn&&(sn.timeContainer!==void 0&&sn.minuteElement!==void 0&&sn.hourElement!==void 0&&Bn(),sn.close(),sn.config.mode==="range"&&sn.selectedDates.length===1&&(sn.clear(!1),sn.redraw()))}}function na(En){if(!(!En||sn.config.minDate&&Ensn.config.maxDate.getFullYear())){var _n=En,xn=sn.currentYear!==_n;sn.currentYear=_n||sn.currentYear,sn.config.maxDate&&sn.currentYear===sn.config.maxDate.getFullYear()?sn.currentMonth=Math.min(sn.config.maxDate.getMonth(),sn.currentMonth):sn.config.minDate&&sn.currentYear===sn.config.minDate.getFullYear()&&(sn.currentMonth=Math.max(sn.config.minDate.getMonth(),sn.currentMonth)),xn&&(sn.redraw(),fr("onYearChange"),ns())}}function Xi(En,_n){_n===void 0&&(_n=!0);var xn=sn.parseDate(En,void 0,_n);if(sn.config.minDate&&xn&&kn(xn,sn.config.minDate,_n!==void 0?_n:!sn.minDateHasTime)<0||sn.config.maxDate&&xn&&kn(xn,sn.config.maxDate,_n!==void 0?_n:!sn.maxDateHasTime)>0)return!1;if(sn.config.enable.length===0&&sn.config.disable.length===0)return!0;if(xn===void 0)return!1;for(var Pn=sn.config.enable.length>0,jn=Pn?sn.config.enable:sn.config.disable,Nn=0,$n=void 0;Nn=$n.from.getTime()&&xn.getTime()<=$n.to.getTime())return Pn}return!Pn}function ra(En){return sn.daysContainer!==void 0?En.className.indexOf("hidden")===-1&&sn.daysContainer.contains(En):!1}function VE(En){var _n=En.target===sn._input,xn=sn.config.allowInput,Pn=sn.isOpen&&(!xn||!_n),jn=sn.config.inline&&_n&&!xn;if(En.keyCode===13&&_n){if(xn)return sn.setDate(sn._input.value,!0,En.target===sn.altInput?sn.config.altFormat:sn.config.dateFormat),En.target.blur();sn.open()}else if(rs(En.target)||Pn||jn){var Nn=!!sn.timeContainer&&sn.timeContainer.contains(En.target);switch(En.keyCode){case 13:Nn?(En.preventDefault(),Bn(),Ul()):Gf(En);break;case 27:En.preventDefault(),Ul();break;case 8:case 46:_n&&!sn.config.allowInput&&(En.preventDefault(),sn.clear());break;case 37:case 39:if(!Nn&&!_n){if(En.preventDefault(),sn.daysContainer!==void 0&&(xn===!1||document.activeElement&&ra(document.activeElement))){var $n=En.keyCode===39?1:-1;En.ctrlKey?(En.stopPropagation(),zl($n),Pi(mi(1),0)):Pi(void 0,$n)}}else sn.hourElement&&sn.hourElement.focus();break;case 38:case 40:En.preventDefault();var Gn=En.keyCode===40?1:-1;sn.daysContainer&&En.target.$i!==void 0||En.target===sn.input||En.target===sn.altInput?En.ctrlKey?(En.stopPropagation(),na(sn.currentYear-Gn),Pi(mi(1),0)):Nn||Pi(void 0,Gn*7):En.target===sn.currentYearElement?na(sn.currentYear-Gn):sn.config.enableTime&&(!Nn&&sn.hourElement&&sn.hourElement.focus(),Bn(En),sn._debouncedChange());break;case 9:if(Nn){var Xn=[sn.hourElement,sn.minuteElement,sn.secondElement,sn.amPM].concat(sn.pluginElements).filter(function(Ir){return Ir}),sr=Xn.indexOf(En.target);if(sr!==-1){var lr=Xn[sr+(En.shiftKey?-1:1)];En.preventDefault(),(lr||sn._input).focus()}}else!sn.config.noCalendar&&sn.daysContainer&&sn.daysContainer.contains(En.target)&&En.shiftKey&&(En.preventDefault(),sn._input.focus());break;default:break}}if(sn.amPM!==void 0&&En.target===sn.amPM)switch(En.key){case sn.l10n.amPM[0].charAt(0):case sn.l10n.amPM[0].charAt(0).toLowerCase():sn.amPM.textContent=sn.l10n.amPM[0],Qn(),gi();break;case sn.l10n.amPM[1].charAt(0):case sn.l10n.amPM[1].charAt(0).toLowerCase():sn.amPM.textContent=sn.l10n.amPM[1],Qn(),gi();break}(_n||rs(En.target))&&fr("onKeyDown",En)}function Vl(En){if(!(sn.selectedDates.length!==1||En&&(!En.classList.contains("flatpickr-day")||En.classList.contains("flatpickr-disabled")))){for(var _n=En?En.dateObj.getTime():sn.days.firstElementChild.dateObj.getTime(),xn=sn.parseDate(sn.selectedDates[0],void 0,!0).getTime(),Pn=Math.min(_n,sn.selectedDates[0].getTime()),jn=Math.max(_n,sn.selectedDates[0].getTime()),Nn=!1,$n=0,Gn=0,Xn=Pn;XnPn&&Xn$n)?$n=Xn:Xn>xn&&(!Gn||Xn0&&yi<$n||Gn>0&&yi>Gn;if(aa)return bi.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(ss){bi.classList.remove(ss)}),"continue";if(Nn&&!aa)return"continue";["startRange","inRange","endRange","notAllowed"].forEach(function(ss){bi.classList.remove(ss)}),En!==void 0&&(En.classList.add(_n<=sn.selectedDates[0].getTime()?"startRange":"endRange"),xn<_n&&yi===xn?bi.classList.add("startRange"):xn>_n&&yi===xn&&bi.classList.add("endRange"),yi>=$n&&(Gn===0||yi<=Gn)&&Dn(yi,xn,_n)&&bi.classList.add("inRange"))},vi=0,os=lr.children.length;vi0||xn.getMinutes()>0||xn.getSeconds()>0),sn.selectedDates&&(sn.selectedDates=sn.selectedDates.filter(function(jn){return Xi(jn)}),!sn.selectedDates.length&&En==="min"&&_r(xn),gi()),sn.daysContainer&&(Kf(),xn!==void 0?sn.currentYearElement[En]=xn.getFullYear().toString():sn.currentYearElement.removeAttribute(En),sn.currentYearElement.disabled=!!Pn&&xn!==void 0&&Pn.getFullYear()===xn.getFullYear())}}function KE(){var En=["wrap","weekNumbers","allowInput","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],_n=tn({},On,JSON.parse(JSON.stringify(wn.dataset||{}))),xn={};sn.config.parseDate=_n.parseDate,sn.config.formatDate=_n.formatDate,Object.defineProperty(sn.config,"enable",{get:function(){return sn.config._enable},set:function(lr){sn.config._enable=Jf(lr)}}),Object.defineProperty(sn.config,"disable",{get:function(){return sn.config._disable},set:function(lr){sn.config._disable=Jf(lr)}});var Pn=_n.mode==="time";if(!_n.dateFormat&&(_n.enableTime||Pn)){var jn=Wn.defaultConfig.dateFormat||nn.dateFormat;xn.dateFormat=_n.noCalendar||Pn?"H:i"+(_n.enableSeconds?":S":""):jn+" H:i"+(_n.enableSeconds?":S":"")}if(_n.altInput&&(_n.enableTime||Pn)&&!_n.altFormat){var Nn=Wn.defaultConfig.altFormat||nn.altFormat;xn.altFormat=_n.noCalendar||Pn?"h:i"+(_n.enableSeconds?":S K":" K"):Nn+(" h:i"+(_n.enableSeconds?":S":"")+" K")}_n.altInputClass||(sn.config.altInputClass=sn.input.className+" "+sn.config.altInputClass),Object.defineProperty(sn.config,"minDate",{get:function(){return sn.config._minDate},set:Uf("min")}),Object.defineProperty(sn.config,"maxDate",{get:function(){return sn.config._maxDate},set:Uf("max")});var $n=function(lr){return function(Ir){sn.config[lr==="min"?"_minTime":"_maxTime"]=sn.parseDate(Ir,"H:i:S")}};Object.defineProperty(sn.config,"minTime",{get:function(){return sn.config._minTime},set:$n("min")}),Object.defineProperty(sn.config,"maxTime",{get:function(){return sn.config._maxTime},set:$n("max")}),_n.mode==="time"&&(sn.config.noCalendar=!0,sn.config.enableTime=!0),Object.assign(sn.config,xn,_n);for(var Gn=0;Gn-1?sn.config[sr]=cn(Xn[sr]).map(Ln).concat(sn.config[sr]):typeof _n[sr]=="undefined"&&(sn.config[sr]=Xn[sr])}fr("onParseConfig")}function Yf(){typeof sn.config.locale!="object"&&typeof Wn.l10ns[sn.config.locale]=="undefined"&&sn.config.errorHandler(new Error("flatpickr: invalid locale "+sn.config.locale)),sn.l10n=tn({},Wn.l10ns.default,typeof sn.config.locale=="object"?sn.config.locale:sn.config.locale!=="default"?Wn.l10ns[sn.config.locale]:void 0),bn.K="("+sn.l10n.amPM[0]+"|"+sn.l10n.amPM[1]+"|"+sn.l10n.amPM[0].toLowerCase()+"|"+sn.l10n.amPM[1].toLowerCase()+")";var En=tn({},On,JSON.parse(JSON.stringify(wn.dataset||{})));En.time_24hr===void 0&&Wn.defaultConfig.time_24hr===void 0&&(sn.config.time_24hr=sn.l10n.time_24hr),sn.formatDate=An(sn),sn.parseDate=Tn({config:sn.config,l10n:sn.l10n})}function is(En){if(sn.calendarContainer!==void 0){fr("onPreCalendarPosition");var _n=En||sn._positionElement,xn=Array.prototype.reduce.call(sn.calendarContainer.children,function(o_,s_){return o_+s_.offsetHeight},0),Pn=sn.calendarContainer.offsetWidth,jn=sn.config.position.split(" "),Nn=jn[0],$n=jn.length>1?jn[1]:null,Gn=_n.getBoundingClientRect(),Xn=window.innerHeight-Gn.bottom,sr=Nn==="above"||Nn!=="below"&&Xnxn,lr=window.pageYOffset+Gn.top+(sr?-xn-2:_n.offsetHeight+2);if(dn(sn.calendarContainer,"arrowTop",!sr),dn(sn.calendarContainer,"arrowBottom",sr),!sn.config.inline){var Ir=window.pageXOffset+Gn.left-($n!=null&&$n==="center"?(Pn-Gn.width)/2:0),vi=window.document.body.offsetWidth-(window.pageXOffset+Gn.right),os=Ir+Pn>window.document.body.offsetWidth,Gl=vi+Pn>window.document.body.offsetWidth;if(dn(sn.calendarContainer,"rightMost",os),!sn.config.static)if(sn.calendarContainer.style.top=lr+"px",!os)sn.calendarContainer.style.left=Ir+"px",sn.calendarContainer.style.right="auto";else if(!Gl)sn.calendarContainer.style.left="auto",sn.calendarContainer.style.right=vi+"px";else{var sa=document.styleSheets[0];if(sa===void 0)return;var bi=window.document.body.offsetWidth,Xl=Math.max(0,bi/2-Pn/2),yi=".flatpickr-calendar.centerMost:before",aa=".flatpickr-calendar.centerMost:after",ss=sa.cssRules.length,i_="{left:"+Gn.left+"px;right:auto;}";dn(sn.calendarContainer,"rightMost",!1),dn(sn.calendarContainer,"centerMost",!0),sa.insertRule(yi+","+aa+i_,ss),sn.calendarContainer.style.left=Xl+"px",sn.calendarContainer.style.right="auto"}}}}function Kf(){sn.config.noCalendar||sn.isMobile||(oa(),ta())}function Ul(){sn._input.focus(),window.navigator.userAgent.indexOf("MSIE")!==-1||navigator.msMaxTouchPoints!==void 0?setTimeout(sn.close,0):sn.close()}function Gf(En){En.preventDefault(),En.stopPropagation();var _n=function(lr){return lr.classList&&lr.classList.contains("flatpickr-day")&&!lr.classList.contains("flatpickr-disabled")&&!lr.classList.contains("notAllowed")},xn=gn(En.target,_n);if(xn!==void 0){var Pn=xn,jn=sn.latestSelectedDateObj=new Date(Pn.dateObj.getTime()),Nn=(jn.getMonth()sn.currentMonth+sn.config.showMonths-1)&&sn.config.mode!=="range";if(sn.selectedDateElem=Pn,sn.config.mode==="single")sn.selectedDates=[jn];else if(sn.config.mode==="multiple"){var $n=Kl(jn);$n?sn.selectedDates.splice(parseInt($n),1):sn.selectedDates.push(jn)}else sn.config.mode==="range"&&(sn.selectedDates.length===2&&sn.clear(!1,!1),sn.latestSelectedDateObj=jn,sn.selectedDates.push(jn),kn(jn,sn.selectedDates[0],!0)!==0&&sn.selectedDates.sort(function(lr,Ir){return lr.getTime()-Ir.getTime()}));if(Qn(),Nn){var Gn=sn.currentYear!==jn.getFullYear();sn.currentYear=jn.getFullYear(),sn.currentMonth=jn.getMonth(),Gn&&(fr("onYearChange"),ns()),fr("onMonthChange")}if(oa(),ta(),gi(),sn.config.enableTime&&setTimeout(function(){return sn.showTimeInput=!0},50),!Nn&&sn.config.mode!=="range"&&sn.config.showMonths===1?ei(Pn):sn.selectedDateElem!==void 0&&sn.hourElement===void 0&&sn.selectedDateElem&&sn.selectedDateElem.focus(),sn.hourElement!==void 0&&sn.hourElement!==void 0&&sn.hourElement.focus(),sn.config.closeOnSelect){var Xn=sn.config.mode==="single"&&!sn.config.enableTime,sr=sn.config.mode==="range"&&sn.selectedDates.length===2&&!sn.config.enableTime;(Xn||sr)&&Ul()}pi()}}var ia={locale:[Yf,Wf],showMonths:[$f,In,zf],minDate:[Br],maxDate:[Br]};function GE(En,_n){if(En!==null&&typeof En=="object"){Object.assign(sn.config,En);for(var xn in En)ia[xn]!==void 0&&ia[xn].forEach(function(Pn){return Pn()})}else sn.config[En]=_n,ia[En]!==void 0?ia[En].forEach(function(Pn){return Pn()}):en.indexOf(En)>-1&&(sn.config[En]=cn(_n));sn.redraw(),gi(!1)}function Xf(En,_n){var xn=[];if(En instanceof Array)xn=En.map(function(Pn){return sn.parseDate(Pn,_n)});else if(En instanceof Date||typeof En=="number")xn=[sn.parseDate(En,_n)];else if(typeof En=="string")switch(sn.config.mode){case"single":case"time":xn=[sn.parseDate(En,_n)];break;case"multiple":xn=En.split(sn.config.conjunction).map(function(Pn){return sn.parseDate(Pn,_n)});break;case"range":xn=En.split(sn.l10n.rangeSeparator).map(function(Pn){return sn.parseDate(Pn,_n)});break;default:break}else sn.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(En)));sn.selectedDates=xn.filter(function(Pn){return Pn instanceof Date&&Xi(Pn,!1)}),sn.config.mode==="range"&&sn.selectedDates.sort(function(Pn,jn){return Pn.getTime()-jn.getTime()})}function XE(En,_n,xn){if(_n===void 0&&(_n=!1),xn===void 0&&(xn=sn.config.dateFormat),En!==0&&!En||En instanceof Array&&En.length===0)return sn.clear(_n);Xf(En,xn),sn.showTimeInput=sn.selectedDates.length>0,sn.latestSelectedDateObj=sn.selectedDates[sn.selectedDates.length-1],sn.redraw(),Br(),_r(),sn.selectedDates.length===0&&sn.clear(!1),gi(_n),_n&&fr("onChange")}function Jf(En){return En.slice().map(function(_n){return typeof _n=="string"||typeof _n=="number"||_n instanceof Date?sn.parseDate(_n,void 0,!0):_n&&typeof _n=="object"&&_n.from&&_n.to?{from:sn.parseDate(_n.from,void 0),to:sn.parseDate(_n.to,void 0)}:_n}).filter(function(_n){return _n})}function JE(){sn.selectedDates=[],sn.now=sn.parseDate(sn.config.now)||new Date;var En=sn.config.defaultDate||((sn.input.nodeName==="INPUT"||sn.input.nodeName==="TEXTAREA")&&sn.input.placeholder&&sn.input.value===sn.input.placeholder?null:sn.input.value);En&&Xf(En,sn.config.dateFormat),sn._initialDate=sn.selectedDates.length>0?sn.selectedDates[0]:sn.config.minDate&&sn.config.minDate.getTime()>sn.now.getTime()?sn.config.minDate:sn.config.maxDate&&sn.config.maxDate.getTime()0&&(sn.latestSelectedDateObj=sn.selectedDates[0]),sn.config.minTime!==void 0&&(sn.config.minTime=sn.parseDate(sn.config.minTime,"H:i")),sn.config.maxTime!==void 0&&(sn.config.maxTime=sn.parseDate(sn.config.maxTime,"H:i")),sn.minDateHasTime=!!sn.config.minDate&&(sn.config.minDate.getHours()>0||sn.config.minDate.getMinutes()>0||sn.config.minDate.getSeconds()>0),sn.maxDateHasTime=!!sn.config.maxDate&&(sn.config.maxDate.getHours()>0||sn.config.maxDate.getMinutes()>0||sn.config.maxDate.getSeconds()>0),Object.defineProperty(sn,"showTimeInput",{get:function(){return sn._showTimeInput},set:function(_n){sn._showTimeInput=_n,sn.calendarContainer&&dn(sn.calendarContainer,"showTimeInput",_n),sn.isOpen&&is()}})}function QE(){if(sn.input=sn.config.wrap?wn.querySelector("[data-input]"):wn,!sn.input){sn.config.errorHandler(new Error("Invalid input element specified"));return}sn.input._type=sn.input.type,sn.input.type="text",sn.input.classList.add("flatpickr-input"),sn._input=sn.input,sn.config.altInput&&(sn.altInput=fn(sn.input.nodeName,sn.config.altInputClass),sn._input=sn.altInput,sn.altInput.placeholder=sn.input.placeholder,sn.altInput.disabled=sn.input.disabled,sn.altInput.required=sn.input.required,sn.altInput.tabIndex=sn.input.tabIndex,sn.altInput.type="text",sn.input.setAttribute("type","hidden"),!sn.config.static&&sn.input.parentNode&&sn.input.parentNode.insertBefore(sn.altInput,sn.input.nextSibling)),sn.config.allowInput||sn._input.setAttribute("readonly","readonly"),sn._positionElement=sn.config.positionElement||sn._input}function ZE(){var En=sn.config.enableTime?sn.config.noCalendar?"time":"datetime-local":"date";sn.mobileInput=fn("input",sn.input.className+" flatpickr-mobile"),sn.mobileInput.step=sn.input.getAttribute("step")||"any",sn.mobileInput.tabIndex=1,sn.mobileInput.type=En,sn.mobileInput.disabled=sn.input.disabled,sn.mobileInput.required=sn.input.required,sn.mobileInput.placeholder=sn.input.placeholder,sn.mobileFormatStr=En==="datetime-local"?"Y-m-d\\TH:i:S":En==="date"?"Y-m-d":"H:i:S",sn.selectedDates.length>0&&(sn.mobileInput.defaultValue=sn.mobileInput.value=sn.formatDate(sn.selectedDates[0],sn.mobileFormatStr)),sn.config.minDate&&(sn.mobileInput.min=sn.formatDate(sn.config.minDate,"Y-m-d")),sn.config.maxDate&&(sn.mobileInput.max=sn.formatDate(sn.config.maxDate,"Y-m-d")),sn.input.type="hidden",sn.altInput!==void 0&&(sn.altInput.type="hidden");try{sn.input.parentNode&&sn.input.parentNode.insertBefore(sn.mobileInput,sn.input.nextSibling)}catch(_n){}cr(sn.mobileInput,"change",function(_n){sn.setDate(_n.target.value,!1,sn.mobileFormatStr),fr("onChange"),fr("onClose")})}function e_(En){if(sn.isOpen===!0)return sn.close();sn.open(En)}function fr(En,_n){if(sn.config!==void 0){var xn=sn.config[En];if(xn!==void 0&&xn.length>0)for(var Pn=0;xn[Pn]&&Pn=0&&kn(En,sn.selectedDates[1])<=0}function oa(){sn.config.noCalendar||sn.isMobile||!sn.monthNav||(sn.yearElements.forEach(function(En,_n){var xn=new Date(sn.currentYear,sn.currentMonth,1);xn.setMonth(sn.currentMonth+_n),sn.config.showMonths>1||sn.config.monthSelectorType==="static"?sn.monthElements[_n].textContent=yn(xn.getMonth(),sn.config.shorthandCurrentMonth,sn.l10n)+" ":sn.monthsDropdownContainer.value=xn.getMonth().toString(),En.value=xn.getFullYear().toString()}),sn._hidePrevMonthArrow=sn.config.minDate!==void 0&&(sn.currentYear===sn.config.minDate.getFullYear()?sn.currentMonth<=sn.config.minDate.getMonth():sn.currentYearsn.config.maxDate.getMonth():sn.currentYear>sn.config.maxDate.getFullYear()))}function Qf(En){return sn.selectedDates.map(function(_n){return sn.formatDate(_n,En)}).filter(function(_n,xn,Pn){return sn.config.mode!=="range"||sn.config.enableTime||Pn.indexOf(_n)===xn}).join(sn.config.mode!=="range"?sn.config.conjunction:sn.l10n.rangeSeparator)}function gi(En){En===void 0&&(En=!0),sn.mobileInput!==void 0&&sn.mobileFormatStr&&(sn.mobileInput.value=sn.latestSelectedDateObj!==void 0?sn.formatDate(sn.latestSelectedDateObj,sn.mobileFormatStr):""),sn.input.value=Qf(sn.config.dateFormat),sn.altInput!==void 0&&(sn.altInput.value=Qf(sn.config.altFormat)),En!==!1&&fr("onValueUpdate")}function n_(En){var _n=sn.prevMonthNav.contains(En.target),xn=sn.nextMonthNav.contains(En.target);_n||xn?zl(_n?-1:1):sn.yearElements.indexOf(En.target)>=0?En.target.select():En.target.classList.contains("arrowUp")?sn.changeYear(sn.currentYear+1):En.target.classList.contains("arrowDown")&&sn.changeYear(sn.currentYear-1)}function r_(En){En.preventDefault();var _n=En.type==="keydown",xn=En.target;sn.amPM!==void 0&&En.target===sn.amPM&&(sn.amPM.textContent=sn.l10n.amPM[an(sn.amPM.textContent===sn.l10n.amPM[0])]);var Pn=parseFloat(xn.getAttribute("min")),jn=parseFloat(xn.getAttribute("max")),Nn=parseFloat(xn.getAttribute("step")),$n=parseInt(xn.value,10),Gn=En.delta||(_n?En.which===38?1:-1:0),Xn=$n+Nn*Gn;if(typeof xn.value!="undefined"&&xn.value.length===2){var sr=xn===sn.hourElement,lr=xn===sn.minuteElement;Xnjn&&(Xn=xn===sn.hourElement?Xn-jn-an(!sn.amPM):Pn,lr&&Mi(void 0,1,sn.hourElement)),sn.amPM&&sr&&(Nn===1?Xn+$n===23:Math.abs(Xn-$n)>Nn)&&(sn.amPM.textContent=sn.l10n.amPM[an(sn.amPM.textContent===sn.l10n.amPM[0])]),xn.value=on(Xn)}}return Rn(),sn}function Yn(wn,On){for(var sn=Array.prototype.slice.call(wn).filter(function(In){return In instanceof HTMLElement}),Kn=[],Rn=0;Rnad,afterRead:()=>id,afterWrite:()=>ud,applyStyles:()=>Io,arrow:()=>fa,auto:()=>ls,basePlacements:()=>Ei,beforeMain:()=>od,beforeRead:()=>nd,beforeWrite:()=>ld,bottom:()=>br,clippingParents:()=>Ql,computeStyles:()=>Po,createPopper:()=>ya,createPopperBase:()=>bd,createPopperLite:()=>yd,detectOverflow:()=>kr,end:()=>cs,eventListeners:()=>ko,flip:()=>ma,hide:()=>ga,left:()=>mr,main:()=>sd,modifierPhases:()=>ec,offset:()=>va,placements:()=>fs,popper:()=>Ji,popperGenerator:()=>io,popperOffsets:()=>jo,preventOverflow:()=>ba,read:()=>rd,reference:()=>Zl,right:()=>pr,start:()=>ti,top:()=>dr,variationPlacements:()=>ca,viewport:()=>us,write:()=>cd});var dr="top",br="bottom",pr="right",mr="left",ls="auto",Ei=[dr,br,pr,mr],ti="start",cs="end",Ql="clippingParents",us="viewport",Ji="popper",Zl="reference",ca=Ei.reduce(function(tn,en){return tn.concat([en+"-"+ti,en+"-"+cs])},[]),fs=[].concat(Ei,[ls]).reduce(function(tn,en){return tn.concat([en,en+"-"+ti,en+"-"+cs])},[]),nd="beforeRead",rd="read",id="afterRead",od="beforeMain",sd="main",ad="afterMain",ld="beforeWrite",cd="write",ud="afterWrite",ec=[nd,rd,id,od,sd,ad,ld,cd,ud];function xr(tn){return tn?(tn.nodeName||"").toLowerCase():null}function hr(tn){if(tn==null)return window;if(tn.toString()!=="[object Window]"){var en=tn.ownerDocument;return en&&en.defaultView||window}return tn}function _i(tn){var en=hr(tn).Element;return tn instanceof en||tn instanceof Element}function gr(tn){var en=hr(tn).HTMLElement;return tn instanceof en||tn instanceof HTMLElement}function ua(tn){if(typeof ShadowRoot=="undefined")return!1;var en=hr(tn).ShadowRoot;return tn instanceof en||tn instanceof ShadowRoot}function g_(tn){var en=tn.state;Object.keys(en.elements).forEach(function(nn){var rn=en.styles[nn]||{},on=en.attributes[nn]||{},an=en.elements[nn];!gr(an)||!xr(an)||(Object.assign(an.style,rn),Object.keys(on).forEach(function(ln){var cn=on[ln];cn===!1?an.removeAttribute(ln):an.setAttribute(ln,cn===!0?"":cn)}))})}function v_(tn){var en=tn.state,nn={popper:{position:en.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(en.elements.popper.style,nn.popper),en.styles=nn,en.elements.arrow&&Object.assign(en.elements.arrow.style,nn.arrow),function(){Object.keys(en.elements).forEach(function(rn){var on=en.elements[rn],an=en.attributes[rn]||{},ln=Object.keys(en.styles.hasOwnProperty(rn)?en.styles[rn]:nn[rn]),cn=ln.reduce(function(dn,fn){return dn[fn]="",dn},{});!gr(on)||!xr(on)||(Object.assign(on.style,cn),Object.keys(an).forEach(function(dn){on.removeAttribute(dn)}))})}}var Io={name:"applyStyles",enabled:!0,phase:"write",fn:g_,effect:v_,requires:["computeStyles"]};function Tr(tn){return tn.split("-")[0]}var ki=Math.round;function Ur(tn,en){en===void 0&&(en=!1);var nn=tn.getBoundingClientRect(),rn=1,on=1;return gr(tn)&&en&&(rn=nn.width/tn.offsetWidth||1,on=nn.height/tn.offsetHeight||1),{width:ki(nn.width/rn),height:ki(nn.height/on),top:ki(nn.top/on),right:ki(nn.right/rn),bottom:ki(nn.bottom/on),left:ki(nn.left/rn),x:ki(nn.left/rn),y:ki(nn.top/on)}}function Qi(tn){var en=Ur(tn),nn=tn.offsetWidth,rn=tn.offsetHeight;return Math.abs(en.width-nn)<=1&&(nn=en.width),Math.abs(en.height-rn)<=1&&(rn=en.height),{x:tn.offsetLeft,y:tn.offsetTop,width:nn,height:rn}}function ds(tn,en){var nn=en.getRootNode&&en.getRootNode();if(tn.contains(en))return!0;if(nn&&ua(nn)){var rn=en;do{if(rn&&tn.isSameNode(rn))return!0;rn=rn.parentNode||rn.host}while(rn)}return!1}function Pr(tn){return hr(tn).getComputedStyle(tn)}function tc(tn){return["table","td","th"].indexOf(xr(tn))>=0}function Cr(tn){return((_i(tn)?tn.ownerDocument:tn.document)||window.document).documentElement}function Si(tn){return xr(tn)==="html"?tn:tn.assignedSlot||tn.parentNode||(ua(tn)?tn.host:null)||Cr(tn)}function fd(tn){return!gr(tn)||Pr(tn).position==="fixed"?null:tn.offsetParent}function b_(tn){var en=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,nn=navigator.userAgent.indexOf("Trident")!==-1;if(nn&&gr(tn)){var rn=Pr(tn);if(rn.position==="fixed")return null}for(var on=Si(tn);gr(on)&&["html","body"].indexOf(xr(on))<0;){var an=Pr(on);if(an.transform!=="none"||an.perspective!=="none"||an.contain==="paint"||["transform","perspective"].indexOf(an.willChange)!==-1||en&&an.willChange==="filter"||en&&an.filter&&an.filter!=="none")return on;on=on.parentNode}return null}function Qr(tn){for(var en=hr(tn),nn=fd(tn);nn&&tc(nn)&&Pr(nn).position==="static";)nn=fd(nn);return nn&&(xr(nn)==="html"||xr(nn)==="body"&&Pr(nn).position==="static")?en:nn||b_(tn)||en}function Zi(tn){return["top","bottom"].indexOf(tn)>=0?"x":"y"}var Yr=Math.max,Ni=Math.min,hs=Math.round;function eo(tn,en,nn){return Yr(tn,Ni(en,nn))}function ps(){return{top:0,right:0,bottom:0,left:0}}function ms(tn){return Object.assign({},ps(),tn)}function gs(tn,en){return en.reduce(function(nn,rn){return nn[rn]=tn,nn},{})}var y_=function(en,nn){return en=typeof en=="function"?en(Object.assign({},nn.rects,{placement:nn.placement})):en,ms(typeof en!="number"?en:gs(en,Ei))};function E_(tn){var en,nn=tn.state,rn=tn.name,on=tn.options,an=nn.elements.arrow,ln=nn.modifiersData.popperOffsets,cn=Tr(nn.placement),dn=Zi(cn),fn=[mr,pr].indexOf(cn)>=0,un=fn?"height":"width";if(!(!an||!ln)){var gn=y_(on.padding,nn),hn=Qi(an),pn=dn==="y"?dr:mr,vn=dn==="y"?br:pr,yn=nn.rects.reference[un]+nn.rects.reference[dn]-ln[dn]-nn.rects.popper[un],mn=ln[dn]-nn.rects.reference[dn],bn=Qr(an),Sn=bn?dn==="y"?bn.clientHeight||0:bn.clientWidth||0:0,An=yn/2-mn/2,Tn=gn[pn],kn=Sn-hn[un]-gn[vn],Dn=Sn/2-hn[un]/2+An,qn=eo(Tn,Dn,kn),Fn=dn;nn.modifiersData[rn]=(en={},en[Fn]=qn,en.centerOffset=qn-Dn,en)}}function __(tn){var en=tn.state,nn=tn.options,rn=nn.element,on=rn===void 0?"[data-popper-arrow]":rn;on!=null&&(typeof on=="string"&&(on=en.elements.popper.querySelector(on),!on)||!ds(en.elements.popper,on)||(en.elements.arrow=on))}var fa={name:"arrow",enabled:!0,phase:"main",fn:E_,effect:__,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};var S_={top:"auto",right:"auto",bottom:"auto",left:"auto"};function w_(tn){var en=tn.x,nn=tn.y,rn=window,on=rn.devicePixelRatio||1;return{x:hs(hs(en*on)/on)||0,y:hs(hs(nn*on)/on)||0}}function dd(tn){var en,nn=tn.popper,rn=tn.popperRect,on=tn.placement,an=tn.offsets,ln=tn.position,cn=tn.gpuAcceleration,dn=tn.adaptive,fn=tn.roundOffsets,un=fn===!0?w_(an):typeof fn=="function"?fn(an):an,gn=un.x,hn=gn===void 0?0:gn,pn=un.y,vn=pn===void 0?0:pn,yn=an.hasOwnProperty("x"),mn=an.hasOwnProperty("y"),bn=mr,Sn=dr,An=window;if(dn){var Tn=Qr(nn),kn="clientHeight",Dn="clientWidth";Tn===hr(nn)&&(Tn=Cr(nn),Pr(Tn).position!=="static"&&(kn="scrollHeight",Dn="scrollWidth")),Tn=Tn,on===dr&&(Sn=br,vn-=Tn[kn]-rn.height,vn*=cn?1:-1),on===mr&&(bn=pr,hn-=Tn[Dn]-rn.width,hn*=cn?1:-1)}var qn=Object.assign({position:ln},dn&&S_);if(cn){var Fn;return Object.assign({},qn,(Fn={},Fn[Sn]=mn?"0":"",Fn[bn]=yn?"0":"",Fn.transform=(An.devicePixelRatio||1)<2?"translate("+hn+"px, "+vn+"px)":"translate3d("+hn+"px, "+vn+"px, 0)",Fn))}return Object.assign({},qn,(en={},en[Sn]=mn?vn+"px":"",en[bn]=yn?hn+"px":"",en.transform="",en))}function x_(tn){var en=tn.state,nn=tn.options,rn=nn.gpuAcceleration,on=rn===void 0?!0:rn,an=nn.adaptive,ln=an===void 0?!0:an,cn=nn.roundOffsets,dn=cn===void 0?!0:cn;if(!1)var fn;var un={placement:Tr(en.placement),popper:en.elements.popper,popperRect:en.rects.popper,gpuAcceleration:on};en.modifiersData.popperOffsets!=null&&(en.styles.popper=Object.assign({},en.styles.popper,dd(Object.assign({},un,{offsets:en.modifiersData.popperOffsets,position:en.options.strategy,adaptive:ln,roundOffsets:dn})))),en.modifiersData.arrow!=null&&(en.styles.arrow=Object.assign({},en.styles.arrow,dd(Object.assign({},un,{offsets:en.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:dn})))),en.attributes.popper=Object.assign({},en.attributes.popper,{"data-popper-placement":en.placement})}var Po={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:x_,data:{}};var da={passive:!0};function T_(tn){var en=tn.state,nn=tn.instance,rn=tn.options,on=rn.scroll,an=on===void 0?!0:on,ln=rn.resize,cn=ln===void 0?!0:ln,dn=hr(en.elements.popper),fn=[].concat(en.scrollParents.reference,en.scrollParents.popper);return an&&fn.forEach(function(un){un.addEventListener("scroll",nn.update,da)}),cn&&dn.addEventListener("resize",nn.update,da),function(){an&&fn.forEach(function(un){un.removeEventListener("scroll",nn.update,da)}),cn&&dn.removeEventListener("resize",nn.update,da)}}var ko={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:T_,data:{}};var O_={left:"right",right:"left",bottom:"top",top:"bottom"};function No(tn){return tn.replace(/left|right|bottom|top/g,function(en){return O_[en]})}var A_={start:"end",end:"start"};function ha(tn){return tn.replace(/start|end/g,function(en){return A_[en]})}function to(tn){var en=hr(tn),nn=en.pageXOffset,rn=en.pageYOffset;return{scrollLeft:nn,scrollTop:rn}}function no(tn){return Ur(Cr(tn)).left+to(tn).scrollLeft}function nc(tn){var en=hr(tn),nn=Cr(tn),rn=en.visualViewport,on=nn.clientWidth,an=nn.clientHeight,ln=0,cn=0;return rn&&(on=rn.width,an=rn.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(ln=rn.offsetLeft,cn=rn.offsetTop)),{width:on,height:an,x:ln+no(tn),y:cn}}function rc(tn){var en,nn=Cr(tn),rn=to(tn),on=(en=tn.ownerDocument)==null?void 0:en.body,an=Yr(nn.scrollWidth,nn.clientWidth,on?on.scrollWidth:0,on?on.clientWidth:0),ln=Yr(nn.scrollHeight,nn.clientHeight,on?on.scrollHeight:0,on?on.clientHeight:0),cn=-rn.scrollLeft+no(tn),dn=-rn.scrollTop;return Pr(on||nn).direction==="rtl"&&(cn+=Yr(nn.clientWidth,on?on.clientWidth:0)-an),{width:an,height:ln,x:cn,y:dn}}function ro(tn){var en=Pr(tn),nn=en.overflow,rn=en.overflowX,on=en.overflowY;return/auto|scroll|overlay|hidden/.test(nn+on+rn)}function pa(tn){return["html","body","#document"].indexOf(xr(tn))>=0?tn.ownerDocument.body:gr(tn)&&ro(tn)?tn:pa(Si(tn))}function Ri(tn,en){var nn;en===void 0&&(en=[]);var rn=pa(tn),on=rn===((nn=tn.ownerDocument)==null?void 0:nn.body),an=hr(rn),ln=on?[an].concat(an.visualViewport||[],ro(rn)?rn:[]):rn,cn=en.concat(ln);return on?cn:cn.concat(Ri(Si(ln)))}function Ro(tn){return Object.assign({},tn,{left:tn.x,top:tn.y,right:tn.x+tn.width,bottom:tn.y+tn.height})}function C_(tn){var en=Ur(tn);return en.top=en.top+tn.clientTop,en.left=en.left+tn.clientLeft,en.bottom=en.top+tn.clientHeight,en.right=en.left+tn.clientWidth,en.width=tn.clientWidth,en.height=tn.clientHeight,en.x=en.left,en.y=en.top,en}function hd(tn,en){return en===us?Ro(nc(tn)):gr(en)?C_(en):Ro(rc(Cr(tn)))}function L_(tn){var en=Ri(Si(tn)),nn=["absolute","fixed"].indexOf(Pr(tn).position)>=0,rn=nn&&gr(tn)?Qr(tn):tn;return _i(rn)?en.filter(function(on){return _i(on)&&ds(on,rn)&&xr(on)!=="body"}):[]}function ic(tn,en,nn){var rn=en==="clippingParents"?L_(tn):[].concat(en),on=[].concat(rn,[nn]),an=on[0],ln=on.reduce(function(cn,dn){var fn=hd(tn,dn);return cn.top=Yr(fn.top,cn.top),cn.right=Ni(fn.right,cn.right),cn.bottom=Ni(fn.bottom,cn.bottom),cn.left=Yr(fn.left,cn.left),cn},hd(tn,an));return ln.width=ln.right-ln.left,ln.height=ln.bottom-ln.top,ln.x=ln.left,ln.y=ln.top,ln}function ni(tn){return tn.split("-")[1]}function vs(tn){var en=tn.reference,nn=tn.element,rn=tn.placement,on=rn?Tr(rn):null,an=rn?ni(rn):null,ln=en.x+en.width/2-nn.width/2,cn=en.y+en.height/2-nn.height/2,dn;switch(on){case dr:dn={x:ln,y:en.y-nn.height};break;case br:dn={x:ln,y:en.y+en.height};break;case pr:dn={x:en.x+en.width,y:cn};break;case mr:dn={x:en.x-nn.width,y:cn};break;default:dn={x:en.x,y:en.y}}var fn=on?Zi(on):null;if(fn!=null){var un=fn==="y"?"height":"width";switch(an){case ti:dn[fn]=dn[fn]-(en[un]/2-nn[un]/2);break;case cs:dn[fn]=dn[fn]+(en[un]/2-nn[un]/2);break;default:}}return dn}function kr(tn,en){en===void 0&&(en={});var nn=en,rn=nn.placement,on=rn===void 0?tn.placement:rn,an=nn.boundary,ln=an===void 0?Ql:an,cn=nn.rootBoundary,dn=cn===void 0?us:cn,fn=nn.elementContext,un=fn===void 0?Ji:fn,gn=nn.altBoundary,hn=gn===void 0?!1:gn,pn=nn.padding,vn=pn===void 0?0:pn,yn=ms(typeof vn!="number"?vn:gs(vn,Ei)),mn=un===Ji?Zl:Ji,bn=tn.elements.reference,Sn=tn.rects.popper,An=tn.elements[hn?mn:un],Tn=ic(_i(An)?An:An.contextElement||Cr(tn.elements.popper),ln,dn),kn=Ur(bn),Dn=vs({reference:kn,element:Sn,strategy:"absolute",placement:on}),qn=Ro(Object.assign({},Sn,Dn)),Fn=un===Ji?qn:kn,Un={top:Tn.top-Fn.top+yn.top,bottom:Fn.bottom-Tn.bottom+yn.bottom,left:Tn.left-Fn.left+yn.left,right:Fn.right-Tn.right+yn.right},Yn=tn.modifiersData.offset;if(un===Ji&&Yn){var Wn=Yn[on];Object.keys(Un).forEach(function(wn){var On=[pr,br].indexOf(wn)>=0?1:-1,sn=[dr,br].indexOf(wn)>=0?"y":"x";Un[wn]+=Wn[sn]*On})}return Un}function oc(tn,en){en===void 0&&(en={});var nn=en,rn=nn.placement,on=nn.boundary,an=nn.rootBoundary,ln=nn.padding,cn=nn.flipVariations,dn=nn.allowedAutoPlacements,fn=dn===void 0?fs:dn,un=ni(rn),gn=un?cn?ca:ca.filter(function(vn){return ni(vn)===un}):Ei,hn=gn.filter(function(vn){return fn.indexOf(vn)>=0});hn.length===0&&(hn=gn);var pn=hn.reduce(function(vn,yn){return vn[yn]=kr(tn,{placement:yn,boundary:on,rootBoundary:an,padding:ln})[Tr(yn)],vn},{});return Object.keys(pn).sort(function(vn,yn){return pn[vn]-pn[yn]})}function D_(tn){if(Tr(tn)===ls)return[];var en=No(tn);return[ha(tn),en,ha(en)]}function M_(tn){var en=tn.state,nn=tn.options,rn=tn.name;if(!en.modifiersData[rn]._skip){for(var on=nn.mainAxis,an=on===void 0?!0:on,ln=nn.altAxis,cn=ln===void 0?!0:ln,dn=nn.fallbackPlacements,fn=nn.padding,un=nn.boundary,gn=nn.rootBoundary,hn=nn.altBoundary,pn=nn.flipVariations,vn=pn===void 0?!0:pn,yn=nn.allowedAutoPlacements,mn=en.options.placement,bn=Tr(mn),Sn=bn===mn,An=dn||(Sn||!vn?[No(mn)]:D_(mn)),Tn=[mn].concat(An).reduce(function(Mr,Sr){return Mr.concat(Tr(Sr)===ls?oc(en,{placement:Sr,boundary:un,rootBoundary:gn,padding:fn,flipVariations:vn,allowedAutoPlacements:yn}):Sr)},[]),kn=en.rects.reference,Dn=en.rects.popper,qn=new Map,Fn=!0,Un=Tn[0],Yn=0;Yn=0,Kn=sn?"width":"height",Rn=kr(en,{placement:Wn,boundary:un,rootBoundary:gn,altBoundary:hn,padding:fn}),Ln=sn?On?pr:mr:On?br:dr;kn[Kn]>Dn[Kn]&&(Ln=No(Ln));var In=No(Ln),Bn=[];if(an&&Bn.push(Rn[wn]<=0),cn&&Bn.push(Rn[Ln]<=0,Rn[In]<=0),Bn.every(function(Mr){return Mr})){Un=Wn,Fn=!1;break}qn.set(Wn,Bn)}if(Fn)for(var zn=vn?3:1,Zn=function(Sr){var hi=Tn.find(function(cr){var wr=qn.get(cr);if(wr)return wr.slice(0,Sr).every(function(pi){return pi})});if(hi)return Un=hi,"break"},Qn=zn;Qn>0;Qn--){var _r=Zn(Qn);if(_r==="break")break}en.placement!==Un&&(en.modifiersData[rn]._skip=!0,en.placement=Un,en.reset=!0)}}var ma={name:"flip",enabled:!0,phase:"main",fn:M_,requiresIfExists:["offset"],data:{_skip:!1}};function pd(tn,en,nn){return nn===void 0&&(nn={x:0,y:0}),{top:tn.top-en.height-nn.y,right:tn.right-en.width+nn.x,bottom:tn.bottom-en.height+nn.y,left:tn.left-en.width-nn.x}}function md(tn){return[dr,pr,br,mr].some(function(en){return tn[en]>=0})}function I_(tn){var en=tn.state,nn=tn.name,rn=en.rects.reference,on=en.rects.popper,an=en.modifiersData.preventOverflow,ln=kr(en,{elementContext:"reference"}),cn=kr(en,{altBoundary:!0}),dn=pd(ln,rn),fn=pd(cn,on,an),un=md(dn),gn=md(fn);en.modifiersData[nn]={referenceClippingOffsets:dn,popperEscapeOffsets:fn,isReferenceHidden:un,hasPopperEscaped:gn},en.attributes.popper=Object.assign({},en.attributes.popper,{"data-popper-reference-hidden":un,"data-popper-escaped":gn})}var ga={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:I_};function P_(tn,en,nn){var rn=Tr(tn),on=[mr,dr].indexOf(rn)>=0?-1:1,an=typeof nn=="function"?nn(Object.assign({},en,{placement:tn})):nn,ln=an[0],cn=an[1];return ln=ln||0,cn=(cn||0)*on,[mr,pr].indexOf(rn)>=0?{x:cn,y:ln}:{x:ln,y:cn}}function k_(tn){var en=tn.state,nn=tn.options,rn=tn.name,on=nn.offset,an=on===void 0?[0,0]:on,ln=fs.reduce(function(un,gn){return un[gn]=P_(gn,en.rects,an),un},{}),cn=ln[en.placement],dn=cn.x,fn=cn.y;en.modifiersData.popperOffsets!=null&&(en.modifiersData.popperOffsets.x+=dn,en.modifiersData.popperOffsets.y+=fn),en.modifiersData[rn]=ln}var va={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:k_};function N_(tn){var en=tn.state,nn=tn.name;en.modifiersData[nn]=vs({reference:en.rects.reference,element:en.rects.popper,strategy:"absolute",placement:en.placement})}var jo={name:"popperOffsets",enabled:!0,phase:"read",fn:N_,data:{}};function sc(tn){return tn==="x"?"y":"x"}function R_(tn){var en=tn.state,nn=tn.options,rn=tn.name,on=nn.mainAxis,an=on===void 0?!0:on,ln=nn.altAxis,cn=ln===void 0?!1:ln,dn=nn.boundary,fn=nn.rootBoundary,un=nn.altBoundary,gn=nn.padding,hn=nn.tether,pn=hn===void 0?!0:hn,vn=nn.tetherOffset,yn=vn===void 0?0:vn,mn=kr(en,{boundary:dn,rootBoundary:fn,padding:gn,altBoundary:un}),bn=Tr(en.placement),Sn=ni(en.placement),An=!Sn,Tn=Zi(bn),kn=sc(Tn),Dn=en.modifiersData.popperOffsets,qn=en.rects.reference,Fn=en.rects.popper,Un=typeof yn=="function"?yn(Object.assign({},en.rects,{placement:en.placement})):yn,Yn={x:0,y:0};if(!!Dn){if(an||cn){var Wn=Tn==="y"?dr:mr,wn=Tn==="y"?br:pr,On=Tn==="y"?"height":"width",sn=Dn[Tn],Kn=Dn[Tn]+mn[Wn],Rn=Dn[Tn]-mn[wn],Ln=pn?-Fn[On]/2:0,In=Sn===ti?qn[On]:Fn[On],Bn=Sn===ti?-Fn[On]:-qn[On],zn=en.elements.arrow,Zn=pn&&zn?Qi(zn):{width:0,height:0},Qn=en.modifiersData["arrow#persistent"]?en.modifiersData["arrow#persistent"].padding:ps(),_r=Qn[Wn],Mr=Qn[wn],Sr=eo(0,qn[On],Zn[On]),hi=An?qn[On]/2-Ln-Sr-_r-Un:In-Sr-_r-Un,cr=An?-qn[On]/2+Ln+Sr+Mr+Un:Bn+Sr+Mr+Un,wr=en.elements.arrow&&Qr(en.elements.arrow),pi=wr?Tn==="y"?wr.clientTop||0:wr.clientLeft||0:0,Di=en.modifiersData.offset?en.modifiersData.offset[en.placement][Tn]:0,Br=Dn[Tn]+hi-Di-pi,Gi=Dn[Tn]+cr-Di;if(an){var Mi=eo(pn?Ni(Kn,Br):Kn,sn,pn?Yr(Rn,Gi):Rn);Dn[Tn]=Mi,Yn[Tn]=Mi-sn}if(cn){var Mo=Tn==="x"?dr:mr,Ii=Tn==="x"?br:pr,ei=Dn[kn],mi=ei+mn[Mo],ea=ei-mn[Ii],Pi=eo(pn?Ni(mi,Br):mi,ei,pn?Yr(ea,Gi):ea);Dn[kn]=Pi,Yn[kn]=Pi-ei}}en.modifiersData[rn]=Yn}}var ba={name:"preventOverflow",enabled:!0,phase:"main",fn:R_,requiresIfExists:["offset"]};function ac(tn){return{scrollLeft:tn.scrollLeft,scrollTop:tn.scrollTop}}function lc(tn){return tn===hr(tn)||!gr(tn)?to(tn):ac(tn)}function j_(tn){var en=tn.getBoundingClientRect(),nn=en.width/tn.offsetWidth||1,rn=en.height/tn.offsetHeight||1;return nn!==1||rn!==1}function cc(tn,en,nn){nn===void 0&&(nn=!1);var rn=gr(en),on=gr(en)&&j_(en),an=Cr(en),ln=Ur(tn,on),cn={scrollLeft:0,scrollTop:0},dn={x:0,y:0};return(rn||!rn&&!nn)&&((xr(en)!=="body"||ro(an))&&(cn=lc(en)),gr(en)?(dn=Ur(en,!0),dn.x+=en.clientLeft,dn.y+=en.clientTop):an&&(dn.x=no(an))),{x:ln.left+cn.scrollLeft-dn.x,y:ln.top+cn.scrollTop-dn.y,width:ln.width,height:ln.height}}function q_(tn){var en=new Map,nn=new Set,rn=[];tn.forEach(function(an){en.set(an.name,an)});function on(an){nn.add(an.name);var ln=[].concat(an.requires||[],an.requiresIfExists||[]);ln.forEach(function(cn){if(!nn.has(cn)){var dn=en.get(cn);dn&&on(dn)}}),rn.push(an)}return tn.forEach(function(an){nn.has(an.name)||on(an)}),rn}function uc(tn){var en=q_(tn);return ec.reduce(function(nn,rn){return nn.concat(en.filter(function(on){return on.phase===rn}))},[])}function fc(tn){var en;return function(){return en||(en=new Promise(function(nn){Promise.resolve().then(function(){en=void 0,nn(tn())})})),en}}function dc(tn){var en=tn.reduce(function(nn,rn){var on=nn[rn.name];return nn[rn.name]=on?Object.assign({},on,rn,{options:Object.assign({},on.options,rn.options),data:Object.assign({},on.data,rn.data)}):rn,nn},{});return Object.keys(en).map(function(nn){return en[nn]})}var gd={placement:"bottom",modifiers:[],strategy:"absolute"};function vd(){for(var tn=arguments.length,en=new Array(tn),nn=0;nnnn.matches(en))},parents(tn,en){let nn=[],rn=tn.parentNode;for(;rn&&rn.nodeType===Node.ELEMENT_NODE&&rn.nodeType!==F_;)rn.matches(en)&&nn.push(rn),rn=rn.parentNode;return nn},prev(tn,en){let nn=tn.previousElementSibling;for(;nn;){if(nn.matches(en))return[nn];nn=nn.previousElementSibling}return[]},next(tn,en){let nn=tn.nextElementSibling;for(;nn;){if(nn.matches(en))return[nn];nn=nn.nextElementSibling}return[]}},$_=1e6,z_=1e3,hc="transitionend",W_=tn=>tn==null?`${tn}`:{}.toString.call(tn).match(/\s([a-z]+)/i)[1].toLowerCase(),Ed=tn=>{do tn+=Math.floor(Math.random()*$_);while(document.getElementById(tn));return tn},_d=tn=>{let en=tn.getAttribute("data-bs-target");if(!en||en==="#"){let nn=tn.getAttribute("href");if(!nn||!nn.includes("#")&&!nn.startsWith("."))return null;nn.includes("#")&&!nn.startsWith("#")&&(nn=`#${nn.split("#")[1]}`),en=nn&&nn!=="#"?nn.trim():null}return en},pc=tn=>{let en=_d(tn);return en&&document.querySelector(en)?en:null},ji=tn=>{let en=_d(tn);return en?document.querySelector(en):null},V_=tn=>{if(!tn)return 0;let{transitionDuration:en,transitionDelay:nn}=window.getComputedStyle(tn),rn=Number.parseFloat(en),on=Number.parseFloat(nn);return!rn&&!on?0:(en=en.split(",")[0],nn=nn.split(",")[0],(Number.parseFloat(en)+Number.parseFloat(nn))*z_)},Sd=tn=>{tn.dispatchEvent(new Event(hc))},qi=tn=>!tn||typeof tn!="object"?!1:(typeof tn.jquery!="undefined"&&(tn=tn[0]),typeof tn.nodeType!="undefined"),qo=tn=>qi(tn)?tn.jquery?tn[0]:tn:typeof tn=="string"&&tn.length>0?Vn.findOne(tn):null,wi=(tn,en,nn)=>{Object.keys(nn).forEach(rn=>{let on=nn[rn],an=en[rn],ln=an&&qi(an)?"element":W_(an);if(!new RegExp(on).test(ln))throw new TypeError(`${tn.toUpperCase()}: Option "${rn}" provided type "${ln}" but expected type "${on}".`)})},_a=tn=>!qi(tn)||tn.getClientRects().length===0?!1:getComputedStyle(tn).getPropertyValue("visibility")==="visible",Ho=tn=>!tn||tn.nodeType!==Node.ELEMENT_NODE||tn.classList.contains("disabled")?!0:typeof tn.disabled!="undefined"?tn.disabled:tn.hasAttribute("disabled")&&tn.getAttribute("disabled")!=="false",wd=tn=>{if(!document.documentElement.attachShadow)return null;if(typeof tn.getRootNode=="function"){let en=tn.getRootNode();return en instanceof ShadowRoot?en:null}return tn instanceof ShadowRoot?tn:tn.parentNode?wd(tn.parentNode):null},Sa=()=>{},Bo=tn=>tn.offsetHeight,xd=()=>{let{jQuery:tn}=window;return tn&&!document.body.hasAttribute("data-bs-no-jquery")?tn:null},mc=[],U_=tn=>{document.readyState==="loading"?(mc.length||document.addEventListener("DOMContentLoaded",()=>{mc.forEach(en=>en())}),mc.push(tn)):tn()},jr=()=>document.documentElement.dir==="rtl",Kr=tn=>{U_(()=>{let en=xd();if(en){let nn=tn.NAME,rn=en.fn[nn];en.fn[nn]=tn.jQueryInterface,en.fn[nn].Constructor=tn,en.fn[nn].noConflict=()=>(en.fn[nn]=rn,tn.jQueryInterface)}})},oo=tn=>{typeof tn=="function"&&tn()},Td=(tn,en,nn=!0)=>{if(!nn){oo(tn);return}let rn=5,on=V_(en)+rn,an=!1,ln=({target:cn})=>{cn===en&&(an=!0,en.removeEventListener(hc,ln),oo(tn))};en.addEventListener(hc,ln),setTimeout(()=>{an||Sd(en)},on)},Od=(tn,en,nn,rn)=>{let on=tn.indexOf(en);if(on===-1)return tn[!nn&&rn?tn.length-1:0];let an=tn.length;return on+=nn?1:-1,rn&&(on=(on+an)%an),tn[Math.max(0,Math.min(on,an-1))]},Y_=/[^.]*(?=\..*)\.|.*/,K_=/\..*/,G_=/::\d+$/,gc={},Ad=1,X_={mouseenter:"mouseover",mouseleave:"mouseout"},J_=/^(mouseenter|mouseleave)/i,Cd=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function Ld(tn,en){return en&&`${en}::${Ad++}`||tn.uidEvent||Ad++}function Dd(tn){let en=Ld(tn);return tn.uidEvent=en,gc[en]=gc[en]||{},gc[en]}function Q_(tn,en){return function nn(rn){return rn.delegateTarget=tn,nn.oneOff&&Mn.off(tn,rn.type,en),en.apply(tn,[rn])}}function Z_(tn,en,nn){return function rn(on){let an=tn.querySelectorAll(en);for(let{target:ln}=on;ln&&ln!==this;ln=ln.parentNode)for(let cn=an.length;cn--;)if(an[cn]===ln)return on.delegateTarget=ln,rn.oneOff&&Mn.off(tn,on.type,en,nn),nn.apply(ln,[on]);return null}}function Md(tn,en,nn=null){let rn=Object.keys(tn);for(let on=0,an=rn.length;onfunction(yn){if(!yn.relatedTarget||yn.relatedTarget!==yn.delegateTarget&&!yn.delegateTarget.contains(yn.relatedTarget))return vn.call(this,yn)};rn?rn=pn(rn):nn=pn(nn)}let[an,ln,cn]=Id(en,nn,rn),dn=Dd(tn),fn=dn[cn]||(dn[cn]={}),un=Md(fn,ln,an?nn:null);if(un){un.oneOff=un.oneOff&&on;return}let gn=Ld(ln,en.replace(Y_,"")),hn=an?Z_(tn,nn,rn):Q_(tn,nn);hn.delegationSelector=an?nn:null,hn.originalHandler=ln,hn.oneOff=on,hn.uidEvent=gn,fn[gn]=hn,tn.addEventListener(cn,hn,an)}function vc(tn,en,nn,rn,on){let an=Md(en[nn],rn,on);!an||(tn.removeEventListener(nn,an,Boolean(on)),delete en[nn][an.uidEvent])}function eS(tn,en,nn,rn){let on=en[nn]||{};Object.keys(on).forEach(an=>{if(an.includes(rn)){let ln=on[an];vc(tn,en,nn,ln.originalHandler,ln.delegationSelector)}})}function kd(tn){return tn=tn.replace(K_,""),X_[tn]||tn}var Mn={on(tn,en,nn,rn){Pd(tn,en,nn,rn,!1)},one(tn,en,nn,rn){Pd(tn,en,nn,rn,!0)},off(tn,en,nn,rn){if(typeof en!="string"||!tn)return;let[on,an,ln]=Id(en,nn,rn),cn=ln!==en,dn=Dd(tn),fn=en.startsWith(".");if(typeof an!="undefined"){if(!dn||!dn[ln])return;vc(tn,dn,ln,an,on?nn:null);return}fn&&Object.keys(dn).forEach(gn=>{eS(tn,dn,gn,en.slice(1))});let un=dn[ln]||{};Object.keys(un).forEach(gn=>{let hn=gn.replace(G_,"");if(!cn||en.includes(hn)){let pn=un[gn];vc(tn,dn,ln,pn.originalHandler,pn.delegationSelector)}})},trigger(tn,en,nn){if(typeof en!="string"||!tn)return null;let rn=xd(),on=kd(en),an=en!==on,ln=Cd.has(on),cn,dn=!0,fn=!0,un=!1,gn=null;return an&&rn&&(cn=rn.Event(en,nn),rn(tn).trigger(cn),dn=!cn.isPropagationStopped(),fn=!cn.isImmediatePropagationStopped(),un=cn.isDefaultPrevented()),ln?(gn=document.createEvent("HTMLEvents"),gn.initEvent(on,dn,!0)):gn=new CustomEvent(en,{bubbles:dn,cancelable:!0}),typeof nn!="undefined"&&Object.keys(nn).forEach(hn=>{Object.defineProperty(gn,hn,{get(){return nn[hn]}})}),un&&gn.preventDefault(),fn&&tn.dispatchEvent(gn),gn.defaultPrevented&&typeof cn!="undefined"&&cn.preventDefault(),gn}},Hi=new Map,so={set(tn,en,nn){Hi.has(tn)||Hi.set(tn,new Map);let rn=Hi.get(tn);if(!rn.has(en)&&rn.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(rn.keys())[0]}.`);return}rn.set(en,nn)},get(tn,en){return Hi.has(tn)&&Hi.get(tn).get(en)||null},remove(tn,en){if(!Hi.has(tn))return;let nn=Hi.get(tn);nn.delete(en),nn.size===0&&Hi.delete(tn)}},tS="5.0.2",Gr=class{constructor(en){en=qo(en),!!en&&(this._element=en,so.set(this._element,this.constructor.DATA_KEY,this))}dispose(){so.remove(this._element,this.constructor.DATA_KEY),Mn.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(en=>{this[en]=null})}_queueCallback(en,nn,rn=!0){Td(en,nn,rn)}static getInstance(en){return so.get(en,this.DATA_KEY)}static getOrCreateInstance(en,nn={}){return this.getInstance(en)||new this(en,typeof nn=="object"?nn:null)}static get VERSION(){return tS}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}},nS="alert",rS="bs.alert",bc=`.${rS}`,iS=".data-api",oS='[data-bs-dismiss="alert"]',sS=`close${bc}`,aS=`closed${bc}`,lS=`click${bc}${iS}`,cS="alert",uS="fade",fS="show",Fo=class extends Gr{static get NAME(){return nS}close(en){let nn=en?this._getRootElement(en):this._element,rn=this._triggerCloseEvent(nn);rn===null||rn.defaultPrevented||this._removeElement(nn)}_getRootElement(en){return ji(en)||en.closest(`.${cS}`)}_triggerCloseEvent(en){return Mn.trigger(en,sS)}_removeElement(en){en.classList.remove(fS);let nn=en.classList.contains(uS);this._queueCallback(()=>this._destroyElement(en),en,nn)}_destroyElement(en){en.remove(),Mn.trigger(en,aS)}static jQueryInterface(en){return this.each(function(){let nn=Fo.getOrCreateInstance(this);en==="close"&&nn[en](this)})}static handleDismiss(en){return function(nn){nn&&nn.preventDefault(),en.close(this)}}};Mn.on(document,lS,oS,Fo.handleDismiss(new Fo));Kr(Fo);var dS="button",hS="bs.button",pS=`.${hS}`,mS=".data-api",gS="active",Nd='[data-bs-toggle="button"]',vS=`click${pS}${mS}`,bs=class extends Gr{static get NAME(){return dS}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(gS))}static jQueryInterface(en){return this.each(function(){let nn=bs.getOrCreateInstance(this);en==="toggle"&&nn[en]()})}};Mn.on(document,vS,Nd,tn=>{tn.preventDefault();let en=tn.target.closest(Nd);bs.getOrCreateInstance(en).toggle()});Kr(bs);function Rd(tn){return tn==="true"?!0:tn==="false"?!1:tn===Number(tn).toString()?Number(tn):tn===""||tn==="null"?null:tn}function yc(tn){return tn.replace(/[A-Z]/g,en=>`-${en.toLowerCase()}`)}var Or={setDataAttribute(tn,en,nn){tn.setAttribute(`data-bs-${yc(en)}`,nn)},removeDataAttribute(tn,en){tn.removeAttribute(`data-bs-${yc(en)}`)},getDataAttributes(tn){if(!tn)return{};let en={};return Object.keys(tn.dataset).filter(nn=>nn.startsWith("bs")).forEach(nn=>{let rn=nn.replace(/^bs/,"");rn=rn.charAt(0).toLowerCase()+rn.slice(1,rn.length),en[rn]=Rd(tn.dataset[nn])}),en},getDataAttribute(tn,en){return Rd(tn.getAttribute(`data-bs-${yc(en)}`))},offset(tn){let en=tn.getBoundingClientRect();return{top:en.top+document.body.scrollTop,left:en.left+document.body.scrollLeft}},position(tn){return{top:tn.offsetTop,left:tn.offsetLeft}}},jd="carousel",bS="bs.carousel",$r=`.${bS}`,qd=".data-api",yS="ArrowLeft",ES="ArrowRight",_S=500,SS=40,Hd={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},wS={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},ao="next",lo="prev",co="left",ys="right",xS={[yS]:ys,[ES]:co},TS=`slide${$r}`,Bd=`slid${$r}`,OS=`keydown${$r}`,AS=`mouseenter${$r}`,CS=`mouseleave${$r}`,LS=`touchstart${$r}`,DS=`touchmove${$r}`,MS=`touchend${$r}`,IS=`pointerdown${$r}`,PS=`pointerup${$r}`,kS=`dragstart${$r}`,NS=`load${$r}${qd}`,RS=`click${$r}${qd}`,jS="carousel",uo="active",qS="slide",HS="carousel-item-end",BS="carousel-item-start",FS="carousel-item-next",$S="carousel-item-prev",zS="pointer-event",WS=".active",wa=".active.carousel-item",VS=".carousel-item",US=".carousel-item img",YS=".carousel-item-next, .carousel-item-prev",KS=".carousel-indicators",GS="[data-bs-target]",XS="[data-bs-slide], [data-bs-slide-to]",JS='[data-bs-ride="carousel"]',Fd="touch",$d="pen",ri=class extends Gr{constructor(en,nn){super(en);this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(nn),this._indicatorsElement=Vn.findOne(KS,this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return Hd}static get NAME(){return jd}next(){this._slide(ao)}nextWhenVisible(){!document.hidden&&_a(this._element)&&this.next()}prev(){this._slide(lo)}pause(en){en||(this._isPaused=!0),Vn.findOne(YS,this._element)&&(Sd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(en){en||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(en){this._activeElement=Vn.findOne(wa,this._element);let nn=this._getItemIndex(this._activeElement);if(en>this._items.length-1||en<0)return;if(this._isSliding){Mn.one(this._element,Bd,()=>this.to(en));return}if(nn===en){this.pause(),this.cycle();return}let rn=en>nn?ao:lo;this._slide(rn,this._items[en])}_getConfig(en){return en=Jn(Jn(Jn({},Hd),Or.getDataAttributes(this._element)),typeof en=="object"?en:{}),wi(jd,en,wS),en}_handleSwipe(){let en=Math.abs(this.touchDeltaX);if(en<=SS)return;let nn=en/this.touchDeltaX;this.touchDeltaX=0,!!nn&&this._slide(nn>0?ys:co)}_addEventListeners(){this._config.keyboard&&Mn.on(this._element,OS,en=>this._keydown(en)),this._config.pause==="hover"&&(Mn.on(this._element,AS,en=>this.pause(en)),Mn.on(this._element,CS,en=>this.cycle(en))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){let en=on=>{this._pointerEvent&&(on.pointerType===$d||on.pointerType===Fd)?this.touchStartX=on.clientX:this._pointerEvent||(this.touchStartX=on.touches[0].clientX)},nn=on=>{this.touchDeltaX=on.touches&&on.touches.length>1?0:on.touches[0].clientX-this.touchStartX},rn=on=>{this._pointerEvent&&(on.pointerType===$d||on.pointerType===Fd)&&(this.touchDeltaX=on.clientX-this.touchStartX),this._handleSwipe(),this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(an=>this.cycle(an),_S+this._config.interval))};Vn.find(US,this._element).forEach(on=>{Mn.on(on,kS,an=>an.preventDefault())}),this._pointerEvent?(Mn.on(this._element,IS,on=>en(on)),Mn.on(this._element,PS,on=>rn(on)),this._element.classList.add(zS)):(Mn.on(this._element,LS,on=>en(on)),Mn.on(this._element,DS,on=>nn(on)),Mn.on(this._element,MS,on=>rn(on)))}_keydown(en){if(/input|textarea/i.test(en.target.tagName))return;let nn=xS[en.key];nn&&(en.preventDefault(),this._slide(nn))}_getItemIndex(en){return this._items=en&&en.parentNode?Vn.find(VS,en.parentNode):[],this._items.indexOf(en)}_getItemByOrder(en,nn){let rn=en===ao;return Od(this._items,nn,rn,this._config.wrap)}_triggerSlideEvent(en,nn){let rn=this._getItemIndex(en),on=this._getItemIndex(Vn.findOne(wa,this._element));return Mn.trigger(this._element,TS,{relatedTarget:en,direction:nn,from:on,to:rn})}_setActiveIndicatorElement(en){if(this._indicatorsElement){let nn=Vn.findOne(WS,this._indicatorsElement);nn.classList.remove(uo),nn.removeAttribute("aria-current");let rn=Vn.find(GS,this._indicatorsElement);for(let on=0;on{Mn.trigger(this._element,Bd,{relatedTarget:ln,direction:hn,from:an,to:cn})};if(this._element.classList.contains(qS)){ln.classList.add(gn),Bo(ln),on.classList.add(un),ln.classList.add(un);let yn=()=>{ln.classList.remove(un,gn),ln.classList.add(uo),on.classList.remove(uo,gn,un),this._isSliding=!1,setTimeout(vn,0)};this._queueCallback(yn,on,!0)}else on.classList.remove(uo),ln.classList.add(uo),this._isSliding=!1,vn();dn&&this.cycle()}_directionToOrder(en){return[ys,co].includes(en)?jr()?en===co?lo:ao:en===co?ao:lo:en}_orderToDirection(en){return[ao,lo].includes(en)?jr()?en===lo?co:ys:en===lo?ys:co:en}static carouselInterface(en,nn){let rn=ri.getOrCreateInstance(en,nn),{_config:on}=rn;typeof nn=="object"&&(on=Jn(Jn({},on),nn));let an=typeof nn=="string"?nn:on.slide;if(typeof nn=="number")rn.to(nn);else if(typeof an=="string"){if(typeof rn[an]=="undefined")throw new TypeError(`No method named "${an}"`);rn[an]()}else on.interval&&on.ride&&(rn.pause(),rn.cycle())}static jQueryInterface(en){return this.each(function(){ri.carouselInterface(this,en)})}static dataApiClickHandler(en){let nn=ji(this);if(!nn||!nn.classList.contains(jS))return;let rn=Jn(Jn({},Or.getDataAttributes(nn)),Or.getDataAttributes(this)),on=this.getAttribute("data-bs-slide-to");on&&(rn.interval=!1),ri.carouselInterface(nn,rn),on&&ri.getInstance(nn).to(on),en.preventDefault()}};Mn.on(document,RS,XS,ri.dataApiClickHandler);Mn.on(window,NS,()=>{let tn=Vn.find(JS);for(let en=0,nn=tn.length;enfn===this._element);cn!==null&&dn.length&&(this._selector=cn,this._triggerArray.push(ln))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return Ec}static get NAME(){return zd}toggle(){this._element.classList.contains(fo)?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains(fo))return;let en,nn;this._parent&&(en=Vn.find(sw,this._parent).filter(fn=>typeof this._config.parent=="string"?fn.getAttribute("data-bs-parent")===this._config.parent:fn.classList.contains(_s)),en.length===0&&(en=null));let rn=Vn.findOne(this._selector);if(en){let fn=en.find(un=>rn!==un);if(nn=fn?qr.getInstance(fn):null,nn&&nn._isTransitioning)return}if(Mn.trigger(this._element,ew).defaultPrevented)return;en&&en.forEach(fn=>{rn!==fn&&qr.collapseInterface(fn,"hide"),nn||so.set(fn,Wd,null)});let an=this._getDimension();this._element.classList.remove(_s),this._element.classList.add(xa),this._element.style[an]=0,this._triggerArray.length&&this._triggerArray.forEach(fn=>{fn.classList.remove(Ta),fn.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);let ln=()=>{this._element.classList.remove(xa),this._element.classList.add(_s,fo),this._element.style[an]="",this.setTransitioning(!1),Mn.trigger(this._element,tw)},dn=`scroll${an[0].toUpperCase()+an.slice(1)}`;this._queueCallback(ln,this._element,!0),this._element.style[an]=`${this._element[dn]}px`}hide(){if(this._isTransitioning||!this._element.classList.contains(fo)||Mn.trigger(this._element,nw).defaultPrevented)return;let nn=this._getDimension();this._element.style[nn]=`${this._element.getBoundingClientRect()[nn]}px`,Bo(this._element),this._element.classList.add(xa),this._element.classList.remove(_s,fo);let rn=this._triggerArray.length;if(rn>0)for(let an=0;an{this.setTransitioning(!1),this._element.classList.remove(xa),this._element.classList.add(_s),Mn.trigger(this._element,rw)};this._element.style[nn]="",this._queueCallback(on,this._element,!0)}setTransitioning(en){this._isTransitioning=en}_getConfig(en){return en=Jn(Jn({},Ec),en),en.toggle=Boolean(en.toggle),wi(zd,en,ZS),en}_getDimension(){return this._element.classList.contains(Vd)?Vd:ow}_getParent(){let{parent:en}=this._config;en=qo(en);let nn=`${Ss}[data-bs-parent="${en}"]`;return Vn.find(nn,en).forEach(rn=>{let on=ji(rn);this._addAriaAndCollapsedClass(on,[rn])}),en}_addAriaAndCollapsedClass(en,nn){if(!en||!nn.length)return;let rn=en.classList.contains(fo);nn.forEach(on=>{rn?on.classList.remove(Ta):on.classList.add(Ta),on.setAttribute("aria-expanded",rn)})}static collapseInterface(en,nn){let rn=qr.getInstance(en),on=Jn(Jn(Jn({},Ec),Or.getDataAttributes(en)),typeof nn=="object"&&nn?nn:{});if(!rn&&on.toggle&&typeof nn=="string"&&/show|hide/.test(nn)&&(on.toggle=!1),rn||(rn=new qr(en,on)),typeof nn=="string"){if(typeof rn[nn]=="undefined")throw new TypeError(`No method named "${nn}"`);rn[nn]()}}static jQueryInterface(en){return this.each(function(){qr.collapseInterface(this,en)})}};Mn.on(document,iw,Ss,function(tn){(tn.target.tagName==="A"||tn.delegateTarget&&tn.delegateTarget.tagName==="A")&&tn.preventDefault();let en=Or.getDataAttributes(this),nn=pc(this);Vn.find(nn).forEach(on=>{let an=qr.getInstance(on),ln;an?(an._parent===null&&typeof en.parent=="string"&&(an._config.parent=en.parent,an._parent=an._getParent()),ln="toggle"):ln=en,qr.collapseInterface(on,ln)})});Kr(qr);var _c="dropdown",aw="bs.dropdown",Bi=`.${aw}`,Sc=".data-api",Oa="Escape",Ud="Space",Yd="Tab",wc="ArrowUp",Aa="ArrowDown",lw=2,cw=new RegExp(`${wc}|${Aa}|${Oa}`),uw=`hide${Bi}`,fw=`hidden${Bi}`,dw=`show${Bi}`,hw=`shown${Bi}`,pw=`click${Bi}`,Kd=`click${Bi}${Sc}`,Gd=`keydown${Bi}${Sc}`,mw=`keyup${Bi}${Sc}`,xi="show",gw="dropup",vw="dropend",bw="dropstart",yw="navbar",ws='[data-bs-toggle="dropdown"]',xc=".dropdown-menu",Ew=".navbar-nav",_w=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Sw=jr()?"top-end":"top-start",ww=jr()?"top-start":"top-end",xw=jr()?"bottom-end":"bottom-start",Tw=jr()?"bottom-start":"bottom-end",Ow=jr()?"left-start":"right-start",Aw=jr()?"right-start":"left-start",Cw={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},Lw={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"},Nr=class extends Gr{constructor(en,nn){super(en);this._popper=null,this._config=this._getConfig(nn),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return Cw}static get DefaultType(){return Lw}static get NAME(){return _c}toggle(){if(Ho(this._element))return;if(this._element.classList.contains(xi)){this.hide();return}this.show()}show(){if(Ho(this._element)||this._menu.classList.contains(xi))return;let en=Nr.getParentFromElement(this._element),nn={relatedTarget:this._element};if(!Mn.trigger(this._element,dw,nn).defaultPrevented){if(this._inNavbar)Or.setDataAttribute(this._menu,"popper","none");else{if(typeof Ea=="undefined")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let on=this._element;this._config.reference==="parent"?on=en:qi(this._config.reference)?on=qo(this._config.reference):typeof this._config.reference=="object"&&(on=this._config.reference);let an=this._getPopperConfig(),ln=an.modifiers.find(cn=>cn.name==="applyStyles"&&cn.enabled===!1);this._popper=ya(on,this._menu,an),ln&&Or.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!en.closest(Ew)&&[].concat(...document.body.children).forEach(on=>Mn.on(on,"mouseover",Sa)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle(xi),this._element.classList.toggle(xi),Mn.trigger(this._element,hw,nn)}}hide(){if(Ho(this._element)||!this._menu.classList.contains(xi))return;let en={relatedTarget:this._element};this._completeHide(en)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){Mn.on(this._element,pw,en=>{en.preventDefault(),this.toggle()})}_completeHide(en){Mn.trigger(this._element,uw,en).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(rn=>Mn.off(rn,"mouseover",Sa)),this._popper&&this._popper.destroy(),this._menu.classList.remove(xi),this._element.classList.remove(xi),this._element.setAttribute("aria-expanded","false"),Or.removeDataAttribute(this._menu,"popper"),Mn.trigger(this._element,fw,en))}_getConfig(en){if(en=Jn(Jn(Jn({},this.constructor.Default),Or.getDataAttributes(this._element)),en),wi(_c,en,this.constructor.DefaultType),typeof en.reference=="object"&&!qi(en.reference)&&typeof en.reference.getBoundingClientRect!="function")throw new TypeError(`${_c.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return en}_getMenuElement(){return Vn.next(this._element,xc)[0]}_getPlacement(){let en=this._element.parentNode;if(en.classList.contains(vw))return Ow;if(en.classList.contains(bw))return Aw;let nn=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return en.classList.contains(gw)?nn?ww:Sw:nn?Tw:xw}_detectNavbar(){return this._element.closest(`.${yw}`)!==null}_getOffset(){let{offset:en}=this._config;return typeof en=="string"?en.split(",").map(nn=>Number.parseInt(nn,10)):typeof en=="function"?nn=>en(nn,this._element):en}_getPopperConfig(){let en={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return this._config.display==="static"&&(en.modifiers=[{name:"applyStyles",enabled:!1}]),Jn(Jn({},en),typeof this._config.popperConfig=="function"?this._config.popperConfig(en):this._config.popperConfig)}_selectMenuItem({key:en,target:nn}){let rn=Vn.find(_w,this._menu).filter(_a);!rn.length||Od(rn,nn,en===Aa,!rn.includes(nn)).focus()}static dropdownInterface(en,nn){let rn=Nr.getOrCreateInstance(en,nn);if(typeof nn=="string"){if(typeof rn[nn]=="undefined")throw new TypeError(`No method named "${nn}"`);rn[nn]()}}static jQueryInterface(en){return this.each(function(){Nr.dropdownInterface(this,en)})}static clearMenus(en){if(en&&(en.button===lw||en.type==="keyup"&&en.key!==Yd))return;let nn=Vn.find(ws);for(let rn=0,on=nn.length;rnthis.matches(ws)?this:Vn.prev(this,ws)[0];if(en.key===Oa){rn().focus(),Nr.clearMenus();return}if(en.key===wc||en.key===Aa){nn||rn().click(),Nr.getInstance(rn())._selectMenuItem(en);return}(!nn||en.key===Ud)&&Nr.clearMenus()}};Mn.on(document,Gd,ws,Nr.dataApiKeydownHandler);Mn.on(document,Gd,xc,Nr.dataApiKeydownHandler);Mn.on(document,Kd,Nr.clearMenus);Mn.on(document,mw,Nr.clearMenus);Mn.on(document,Kd,ws,function(tn){tn.preventDefault(),Nr.dropdownInterface(this)});Kr(Nr);var Xd=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Jd=".sticky-top",Ca=class{constructor(){this._element=document.body}getWidth(){let en=document.documentElement.clientWidth;return Math.abs(window.innerWidth-en)}hide(){let en=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",nn=>nn+en),this._setElementAttributes(Xd,"paddingRight",nn=>nn+en),this._setElementAttributes(Jd,"marginRight",nn=>nn-en)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(en,nn,rn){let on=this.getWidth(),an=ln=>{if(ln!==this._element&&window.innerWidth>ln.clientWidth+on)return;this._saveInitialAttribute(ln,nn);let cn=window.getComputedStyle(ln)[nn];ln.style[nn]=`${rn(Number.parseFloat(cn))}px`};this._applyManipulationCallback(en,an)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(Xd,"paddingRight"),this._resetElementAttributes(Jd,"marginRight")}_saveInitialAttribute(en,nn){let rn=en.style[nn];rn&&Or.setDataAttribute(en,nn,rn)}_resetElementAttributes(en,nn){let rn=on=>{let an=Or.getDataAttribute(on,nn);typeof an=="undefined"?on.style.removeProperty(nn):(Or.removeDataAttribute(on,nn),on.style[nn]=an)};this._applyManipulationCallback(en,rn)}_applyManipulationCallback(en,nn){qi(en)?nn(en):Vn.find(en,this._element).forEach(nn)}isOverflowing(){return this.getWidth()>0}},Dw={isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},Mw={isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},Qd="backdrop",Iw="modal-backdrop",Pw="fade",Zd="show",eh=`mousedown.bs.${Qd}`,Tc=class{constructor(en){this._config=this._getConfig(en),this._isAppended=!1,this._element=null}show(en){if(!this._config.isVisible){oo(en);return}this._append(),this._config.isAnimated&&Bo(this._getElement()),this._getElement().classList.add(Zd),this._emulateAnimation(()=>{oo(en)})}hide(en){if(!this._config.isVisible){oo(en);return}this._getElement().classList.remove(Zd),this._emulateAnimation(()=>{this.dispose(),oo(en)})}_getElement(){if(!this._element){let en=document.createElement("div");en.className=Iw,this._config.isAnimated&&en.classList.add(Pw),this._element=en}return this._element}_getConfig(en){return en=Jn(Jn({},Dw),typeof en=="object"?en:{}),en.rootElement=qo(en.rootElement),wi(Qd,en,Mw),en}_append(){this._isAppended||(this._config.rootElement.appendChild(this._getElement()),Mn.on(this._getElement(),eh,()=>{oo(this._config.clickCallback)}),this._isAppended=!0)}dispose(){!this._isAppended||(Mn.off(this._element,eh),this._element.remove(),this._isAppended=!1)}_emulateAnimation(en){Td(en,this._getElement(),this._config.isAnimated)}},th="modal",kw="bs.modal",zr=`.${kw}`,Nw=".data-api",nh="Escape",rh={backdrop:!0,keyboard:!0,focus:!0},Rw={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},jw=`hide${zr}`,qw=`hidePrevented${zr}`,ih=`hidden${zr}`,oh=`show${zr}`,Hw=`shown${zr}`,La=`focusin${zr}`,sh=`resize${zr}`,Oc=`click.dismiss${zr}`,ah=`keydown.dismiss${zr}`,Bw=`mouseup.dismiss${zr}`,lh=`mousedown.dismiss${zr}`,Fw=`click${zr}${Nw}`,ch="modal-open",$w="fade",uh="show",Ac="modal-static",zw=".modal-dialog",Ww=".modal-body",Vw='[data-bs-toggle="modal"]',Uw='[data-bs-dismiss="modal"]',Fi=class extends Gr{constructor(en,nn){super(en);this._config=this._getConfig(nn),this._dialog=Vn.findOne(zw,this._element),this._backdrop=this._initializeBackDrop(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new Ca}static get Default(){return rh}static get NAME(){return th}toggle(en){return this._isShown?this.hide():this.show(en)}show(en){this._isShown||this._isTransitioning||Mn.trigger(this._element,oh,{relatedTarget:en}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(ch),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),Mn.on(this._element,Oc,Uw,rn=>this.hide(rn)),Mn.on(this._dialog,lh,()=>{Mn.one(this._element,Bw,rn=>{rn.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(en)))}hide(en){if(en&&["A","AREA"].includes(en.target.tagName)&&en.preventDefault(),!this._isShown||this._isTransitioning||Mn.trigger(this._element,jw).defaultPrevented)return;this._isShown=!1;let rn=this._isAnimated();rn&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),Mn.off(document,La),this._element.classList.remove(uh),Mn.off(this._element,Oc),Mn.off(this._dialog,lh),this._queueCallback(()=>this._hideModal(),this._element,rn)}dispose(){[window,this._dialog].forEach(en=>Mn.off(en,zr)),this._backdrop.dispose(),super.dispose(),Mn.off(document,La)}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Tc({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_getConfig(en){return en=Jn(Jn(Jn({},rh),Or.getDataAttributes(this._element)),typeof en=="object"?en:{}),wi(th,en,Rw),en}_showElement(en){let nn=this._isAnimated(),rn=Vn.findOne(Ww,this._dialog);(!this._element.parentNode||this._element.parentNode.nodeType!==Node.ELEMENT_NODE)&&document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,rn&&(rn.scrollTop=0),nn&&Bo(this._element),this._element.classList.add(uh),this._config.focus&&this._enforceFocus();let on=()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,Mn.trigger(this._element,Hw,{relatedTarget:en})};this._queueCallback(on,this._dialog,nn)}_enforceFocus(){Mn.off(document,La),Mn.on(document,La,en=>{document!==en.target&&this._element!==en.target&&!this._element.contains(en.target)&&this._element.focus()})}_setEscapeEvent(){this._isShown?Mn.on(this._element,ah,en=>{this._config.keyboard&&en.key===nh?(en.preventDefault(),this.hide()):!this._config.keyboard&&en.key===nh&&this._triggerBackdropTransition()}):Mn.off(this._element,ah)}_setResizeEvent(){this._isShown?Mn.on(window,sh,()=>this._adjustDialog()):Mn.off(window,sh)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(ch),this._resetAdjustments(),this._scrollBar.reset(),Mn.trigger(this._element,ih)})}_showBackdrop(en){Mn.on(this._element,Oc,nn=>{if(this._ignoreBackdropClick){this._ignoreBackdropClick=!1;return}nn.target===nn.currentTarget&&(this._config.backdrop===!0?this.hide():this._config.backdrop==="static"&&this._triggerBackdropTransition())}),this._backdrop.show(en)}_isAnimated(){return this._element.classList.contains($w)}_triggerBackdropTransition(){if(Mn.trigger(this._element,qw).defaultPrevented)return;let{classList:nn,scrollHeight:rn,style:on}=this._element,an=rn>document.documentElement.clientHeight;!an&&on.overflowY==="hidden"||nn.contains(Ac)||(an||(on.overflowY="hidden"),nn.add(Ac),this._queueCallback(()=>{nn.remove(Ac),an||this._queueCallback(()=>{on.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){let en=this._element.scrollHeight>document.documentElement.clientHeight,nn=this._scrollBar.getWidth(),rn=nn>0;(!rn&&en&&!jr()||rn&&!en&&jr())&&(this._element.style.paddingLeft=`${nn}px`),(rn&&!en&&!jr()||!rn&&en&&jr())&&(this._element.style.paddingRight=`${nn}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(en,nn){return this.each(function(){let rn=Fi.getOrCreateInstance(this,en);if(typeof en=="string"){if(typeof rn[en]=="undefined")throw new TypeError(`No method named "${en}"`);rn[en](nn)}})}};Mn.on(document,Fw,Vw,function(tn){let en=ji(this);["A","AREA"].includes(this.tagName)&&tn.preventDefault(),Mn.one(en,oh,rn=>{rn.defaultPrevented||Mn.one(en,ih,()=>{_a(this)&&this.focus()})}),Fi.getOrCreateInstance(en).toggle(this)});Kr(Fi);var fh="offcanvas",Yw="bs.offcanvas",Ti=`.${Yw}`,dh=".data-api",Kw=`load${Ti}${dh}`,Gw="Escape",hh={backdrop:!0,keyboard:!0,scroll:!1},Xw={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},ph="show",mh=".offcanvas.show",Jw=`show${Ti}`,Qw=`shown${Ti}`,Zw=`hide${Ti}`,gh=`hidden${Ti}`,Da=`focusin${Ti}`,ex=`click${Ti}${dh}`,tx=`click.dismiss${Ti}`,nx=`keydown.dismiss${Ti}`,rx='[data-bs-dismiss="offcanvas"]',ix='[data-bs-toggle="offcanvas"]',ho=class extends Gr{constructor(en,nn){super(en);this._config=this._getConfig(nn),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._addEventListeners()}static get NAME(){return fh}static get Default(){return hh}toggle(en){return this._isShown?this.hide():this.show(en)}show(en){if(this._isShown||Mn.trigger(this._element,Jw,{relatedTarget:en}).defaultPrevented)return;this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new Ca().hide(),this._enforceFocusOnElement(this._element)),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(ph);let rn=()=>{Mn.trigger(this._element,Qw,{relatedTarget:en})};this._queueCallback(rn,this._element,!0)}hide(){if(!this._isShown||Mn.trigger(this._element,Zw).defaultPrevented)return;Mn.off(document,Da),this._element.blur(),this._isShown=!1,this._element.classList.remove(ph),this._backdrop.hide();let nn=()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||new Ca().reset(),Mn.trigger(this._element,gh)};this._queueCallback(nn,this._element,!0)}dispose(){this._backdrop.dispose(),super.dispose(),Mn.off(document,Da)}_getConfig(en){return en=Jn(Jn(Jn({},hh),Or.getDataAttributes(this._element)),typeof en=="object"?en:{}),wi(fh,en,Xw),en}_initializeBackDrop(){return new Tc({isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_enforceFocusOnElement(en){Mn.off(document,Da),Mn.on(document,Da,nn=>{document!==nn.target&&en!==nn.target&&!en.contains(nn.target)&&en.focus()}),en.focus()}_addEventListeners(){Mn.on(this._element,tx,rx,()=>this.hide()),Mn.on(this._element,nx,en=>{this._config.keyboard&&en.key===Gw&&this.hide()})}static jQueryInterface(en){return this.each(function(){let nn=ho.getOrCreateInstance(this,en);if(typeof en=="string"){if(nn[en]===void 0||en.startsWith("_")||en==="constructor")throw new TypeError(`No method named "${en}"`);nn[en](this)}})}};Mn.on(document,ex,ix,function(tn){let en=ji(this);if(["A","AREA"].includes(this.tagName)&&tn.preventDefault(),Ho(this))return;Mn.one(en,gh,()=>{_a(this)&&this.focus()});let nn=Vn.findOne(mh);nn&&nn!==en&&ho.getInstance(nn).hide(),ho.getOrCreateInstance(en).toggle(this)});Mn.on(window,Kw,()=>Vn.find(mh).forEach(tn=>ho.getOrCreateInstance(tn).show()));Kr(ho);var ox=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),sx=/^aria-[\w-]*$/i,ax=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,lx=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,cx=(tn,en)=>{let nn=tn.nodeName.toLowerCase();if(en.includes(nn))return ox.has(nn)?Boolean(ax.test(tn.nodeValue)||lx.test(tn.nodeValue)):!0;let rn=en.filter(on=>on instanceof RegExp);for(let on=0,an=rn.length;on{cx(pn,hn)||fn.removeAttribute(pn.nodeName)})}return on.body.innerHTML}var bh="tooltip",fx="bs.tooltip",ii=`.${fx}`,yh="bs-tooltip",dx=new RegExp(`(^|\\s)${yh}\\S+`,"g"),hx=new Set(["sanitize","allowList","sanitizeFn"]),px={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},mx={AUTO:"auto",TOP:"top",RIGHT:jr()?"left":"right",BOTTOM:"bottom",LEFT:jr()?"right":"left"},gx={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:ux,popperConfig:null},vx={HIDE:`hide${ii}`,HIDDEN:`hidden${ii}`,SHOW:`show${ii}`,SHOWN:`shown${ii}`,INSERTED:`inserted${ii}`,CLICK:`click${ii}`,FOCUSIN:`focusin${ii}`,FOCUSOUT:`focusout${ii}`,MOUSEENTER:`mouseenter${ii}`,MOUSELEAVE:`mouseleave${ii}`},Ma="fade",Eh="modal",xs="show",Ts="show",Cc="out",bx=".tooltip-inner",Os="hover",Lc="focus",yx="click",Ex="manual",oi=class extends Gr{constructor(en,nn){if(typeof Ea=="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(en);this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(nn),this.tip=null,this._setListeners()}static get Default(){return gx}static get NAME(){return bh}static get Event(){return vx}static get DefaultType(){return px}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(en){if(!!this._isEnabled)if(en){let nn=this._initializeOnDelegatedTarget(en);nn._activeTrigger.click=!nn._activeTrigger.click,nn._isWithActiveTrigger()?nn._enter(null,nn):nn._leave(null,nn)}else{if(this.getTipElement().classList.contains(xs)){this._leave(null,this);return}this._enter(null,this)}}dispose(){clearTimeout(this._timeout),Mn.off(this._element.closest(`.${Eh}`),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this.isWithContent()&&this._isEnabled))return;let en=Mn.trigger(this._element,this.constructor.Event.SHOW),nn=wd(this._element),rn=nn===null?this._element.ownerDocument.documentElement.contains(this._element):nn.contains(this._element);if(en.defaultPrevented||!rn)return;let on=this.getTipElement(),an=Ed(this.constructor.NAME);on.setAttribute("id",an),this._element.setAttribute("aria-describedby",an),this.setContent(),this._config.animation&&on.classList.add(Ma);let ln=typeof this._config.placement=="function"?this._config.placement.call(this,on,this._element):this._config.placement,cn=this._getAttachment(ln);this._addAttachmentClass(cn);let{container:dn}=this._config;so.set(on,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(dn.appendChild(on),Mn.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=ya(this._element,on,this._getPopperConfig(cn)),on.classList.add(xs);let fn=typeof this._config.customClass=="function"?this._config.customClass():this._config.customClass;fn&&on.classList.add(...fn.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(hn=>{Mn.on(hn,"mouseover",Sa)});let un=()=>{let hn=this._hoverState;this._hoverState=null,Mn.trigger(this._element,this.constructor.Event.SHOWN),hn===Cc&&this._leave(null,this)},gn=this.tip.classList.contains(Ma);this._queueCallback(un,this.tip,gn)}hide(){if(!this._popper)return;let en=this.getTipElement(),nn=()=>{this._isWithActiveTrigger()||(this._hoverState!==Ts&&en.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),Mn.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))};if(Mn.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;en.classList.remove(xs),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(an=>Mn.off(an,"mouseover",Sa)),this._activeTrigger[yx]=!1,this._activeTrigger[Lc]=!1,this._activeTrigger[Os]=!1;let on=this.tip.classList.contains(Ma);this._queueCallback(nn,this.tip,on),this._hoverState=""}update(){this._popper!==null&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;let en=document.createElement("div");return en.innerHTML=this._config.template,this.tip=en.children[0],this.tip}setContent(){let en=this.getTipElement();this.setElementContent(Vn.findOne(bx,en),this.getTitle()),en.classList.remove(Ma,xs)}setElementContent(en,nn){if(en!==null){if(qi(nn)){nn=qo(nn),this._config.html?nn.parentNode!==en&&(en.innerHTML="",en.appendChild(nn)):en.textContent=nn.textContent;return}this._config.html?(this._config.sanitize&&(nn=vh(nn,this._config.allowList,this._config.sanitizeFn)),en.innerHTML=nn):en.textContent=nn}}getTitle(){let en=this._element.getAttribute("data-bs-original-title");return en||(en=typeof this._config.title=="function"?this._config.title.call(this._element):this._config.title),en}updateAttachment(en){return en==="right"?"end":en==="left"?"start":en}_initializeOnDelegatedTarget(en,nn){let rn=this.constructor.DATA_KEY;return nn=nn||so.get(en.delegateTarget,rn),nn||(nn=new this.constructor(en.delegateTarget,this._getDelegateConfig()),so.set(en.delegateTarget,rn,nn)),nn}_getOffset(){let{offset:en}=this._config;return typeof en=="string"?en.split(",").map(nn=>Number.parseInt(nn,10)):typeof en=="function"?nn=>en(nn,this._element):en}_getPopperConfig(en){let nn={placement:en,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:rn=>this._handlePopperPlacementChange(rn)}],onFirstUpdate:rn=>{rn.options.placement!==rn.placement&&this._handlePopperPlacementChange(rn)}};return Jn(Jn({},nn),typeof this._config.popperConfig=="function"?this._config.popperConfig(nn):this._config.popperConfig)}_addAttachmentClass(en){this.getTipElement().classList.add(`${yh}-${this.updateAttachment(en)}`)}_getAttachment(en){return mx[en.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(nn=>{if(nn==="click")Mn.on(this._element,this.constructor.Event.CLICK,this._config.selector,rn=>this.toggle(rn));else if(nn!==Ex){let rn=nn===Os?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,on=nn===Os?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;Mn.on(this._element,rn,this._config.selector,an=>this._enter(an)),Mn.on(this._element,on,this._config.selector,an=>this._leave(an))}}),this._hideModalHandler=()=>{this._element&&this.hide()},Mn.on(this._element.closest(`.${Eh}`),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config=la(Jn({},this._config),{trigger:"manual",selector:""}):this._fixTitle()}_fixTitle(){let en=this._element.getAttribute("title"),nn=typeof this._element.getAttribute("data-bs-original-title");(en||nn!=="string")&&(this._element.setAttribute("data-bs-original-title",en||""),en&&!this._element.getAttribute("aria-label")&&!this._element.textContent&&this._element.setAttribute("aria-label",en),this._element.setAttribute("title",""))}_enter(en,nn){if(nn=this._initializeOnDelegatedTarget(en,nn),en&&(nn._activeTrigger[en.type==="focusin"?Lc:Os]=!0),nn.getTipElement().classList.contains(xs)||nn._hoverState===Ts){nn._hoverState=Ts;return}if(clearTimeout(nn._timeout),nn._hoverState=Ts,!nn._config.delay||!nn._config.delay.show){nn.show();return}nn._timeout=setTimeout(()=>{nn._hoverState===Ts&&nn.show()},nn._config.delay.show)}_leave(en,nn){if(nn=this._initializeOnDelegatedTarget(en,nn),en&&(nn._activeTrigger[en.type==="focusout"?Lc:Os]=nn._element.contains(en.relatedTarget)),!nn._isWithActiveTrigger()){if(clearTimeout(nn._timeout),nn._hoverState=Cc,!nn._config.delay||!nn._config.delay.hide){nn.hide();return}nn._timeout=setTimeout(()=>{nn._hoverState===Cc&&nn.hide()},nn._config.delay.hide)}}_isWithActiveTrigger(){for(let en in this._activeTrigger)if(this._activeTrigger[en])return!0;return!1}_getConfig(en){let nn=Or.getDataAttributes(this._element);return Object.keys(nn).forEach(rn=>{hx.has(rn)&&delete nn[rn]}),en=Jn(Jn(Jn({},this.constructor.Default),nn),typeof en=="object"&&en?en:{}),en.container=en.container===!1?document.body:qo(en.container),typeof en.delay=="number"&&(en.delay={show:en.delay,hide:en.delay}),typeof en.title=="number"&&(en.title=en.title.toString()),typeof en.content=="number"&&(en.content=en.content.toString()),wi(bh,en,this.constructor.DefaultType),en.sanitize&&(en.template=vh(en.template,en.allowList,en.sanitizeFn)),en}_getDelegateConfig(){let en={};if(this._config)for(let nn in this._config)this.constructor.Default[nn]!==this._config[nn]&&(en[nn]=this._config[nn]);return en}_cleanTipClass(){let en=this.getTipElement(),nn=en.getAttribute("class").match(dx);nn!==null&&nn.length>0&&nn.map(rn=>rn.trim()).forEach(rn=>en.classList.remove(rn))}_handlePopperPlacementChange(en){let{state:nn}=en;!nn||(this.tip=nn.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(nn.placement)))}static jQueryInterface(en){return this.each(function(){let nn=oi.getOrCreateInstance(this,en);if(typeof en=="string"){if(typeof nn[en]=="undefined")throw new TypeError(`No method named "${en}"`);nn[en]()}})}};Kr(oi);var _x="popover",Sx="bs.popover",si=`.${Sx}`,_h="bs-popover",wx=new RegExp(`(^|\\s)${_h}\\S+`,"g"),xx=la(Jn({},oi.Default),{placement:"right",offset:[0,8],trigger:"click",content:"",template:''}),Tx=la(Jn({},oi.DefaultType),{content:"(string|element|function)"}),Ox={HIDE:`hide${si}`,HIDDEN:`hidden${si}`,SHOW:`show${si}`,SHOWN:`shown${si}`,INSERTED:`inserted${si}`,CLICK:`click${si}`,FOCUSIN:`focusin${si}`,FOCUSOUT:`focusout${si}`,MOUSEENTER:`mouseenter${si}`,MOUSELEAVE:`mouseleave${si}`},Ax="fade",Cx="show",Sh=".popover-header",wh=".popover-body",po=class extends oi{static get Default(){return xx}static get NAME(){return _x}static get Event(){return Ox}static get DefaultType(){return Tx}isWithContent(){return this.getTitle()||this._getContent()}getTipElement(){return this.tip?this.tip:(this.tip=super.getTipElement(),this.getTitle()||Vn.findOne(Sh,this.tip).remove(),this._getContent()||Vn.findOne(wh,this.tip).remove(),this.tip)}setContent(){let en=this.getTipElement();this.setElementContent(Vn.findOne(Sh,en),this.getTitle());let nn=this._getContent();typeof nn=="function"&&(nn=nn.call(this._element)),this.setElementContent(Vn.findOne(wh,en),nn),en.classList.remove(Ax,Cx)}_addAttachmentClass(en){this.getTipElement().classList.add(`${_h}-${this.updateAttachment(en)}`)}_getContent(){return this._element.getAttribute("data-bs-content")||this._config.content}_cleanTipClass(){let en=this.getTipElement(),nn=en.getAttribute("class").match(wx);nn!==null&&nn.length>0&&nn.map(rn=>rn.trim()).forEach(rn=>en.classList.remove(rn))}static jQueryInterface(en){return this.each(function(){let nn=po.getOrCreateInstance(this,en);if(typeof en=="string"){if(typeof nn[en]=="undefined")throw new TypeError(`No method named "${en}"`);nn[en]()}})}};Kr(po);var Dc="scrollspy",Lx="bs.scrollspy",Ia=`.${Lx}`,Dx=".data-api",xh={offset:10,method:"auto",target:""},Mx={offset:"number",method:"string",target:"(string|element)"},Ix=`activate${Ia}`,Px=`scroll${Ia}`,kx=`load${Ia}${Dx}`,Th="dropdown-item",mo="active",Nx='[data-bs-spy="scroll"]',Rx=".nav, .list-group",Mc=".nav-link",jx=".nav-item",Oh=".list-group-item",qx=".dropdown",Hx=".dropdown-toggle",Bx="offset",Ah="position",As=class extends Gr{constructor(en,nn){super(en);this._scrollElement=this._element.tagName==="BODY"?window:this._element,this._config=this._getConfig(nn),this._selector=`${this._config.target} ${Mc}, ${this._config.target} ${Oh}, ${this._config.target} .${Th}`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,Mn.on(this._scrollElement,Px,()=>this._process()),this.refresh(),this._process()}static get Default(){return xh}static get NAME(){return Dc}refresh(){let en=this._scrollElement===this._scrollElement.window?Bx:Ah,nn=this._config.method==="auto"?en:this._config.method,rn=nn===Ah?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),Vn.find(this._selector).map(an=>{let ln=pc(an),cn=ln?Vn.findOne(ln):null;if(cn){let dn=cn.getBoundingClientRect();if(dn.width||dn.height)return[Or[nn](cn).top+rn,ln]}return null}).filter(an=>an).sort((an,ln)=>an[0]-ln[0]).forEach(an=>{this._offsets.push(an[0]),this._targets.push(an[1])})}dispose(){Mn.off(this._scrollElement,Ia),super.dispose()}_getConfig(en){if(en=Jn(Jn(Jn({},xh),Or.getDataAttributes(this._element)),typeof en=="object"&&en?en:{}),typeof en.target!="string"&&qi(en.target)){let{id:nn}=en.target;nn||(nn=Ed(Dc),en.target.id=nn),en.target=`#${nn}`}return wi(Dc,en,Mx),en}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){let en=this._getScrollTop()+this._config.offset,nn=this._getScrollHeight(),rn=this._config.offset+nn-this._getOffsetHeight();if(this._scrollHeight!==nn&&this.refresh(),en>=rn){let on=this._targets[this._targets.length-1];this._activeTarget!==on&&this._activate(on);return}if(this._activeTarget&&en0){this._activeTarget=null,this._clear();return}for(let on=this._offsets.length;on--;)this._activeTarget!==this._targets[on]&&en>=this._offsets[on]&&(typeof this._offsets[on+1]=="undefined"||en`${on}[data-bs-target="${en}"],${on}[href="${en}"]`),rn=Vn.findOne(nn.join(","));rn.classList.contains(Th)?(Vn.findOne(Hx,rn.closest(qx)).classList.add(mo),rn.classList.add(mo)):(rn.classList.add(mo),Vn.parents(rn,Rx).forEach(on=>{Vn.prev(on,`${Mc}, ${Oh}`).forEach(an=>an.classList.add(mo)),Vn.prev(on,jx).forEach(an=>{Vn.children(an,Mc).forEach(ln=>ln.classList.add(mo))})})),Mn.trigger(this._scrollElement,Ix,{relatedTarget:en})}_clear(){Vn.find(this._selector).filter(en=>en.classList.contains(mo)).forEach(en=>en.classList.remove(mo))}static jQueryInterface(en){return this.each(function(){let nn=As.getOrCreateInstance(this,en);if(typeof en=="string"){if(typeof nn[en]=="undefined")throw new TypeError(`No method named "${en}"`);nn[en]()}})}};Mn.on(window,kx,()=>{Vn.find(Nx).forEach(tn=>new As(tn))});Kr(As);var Fx="tab",$x="bs.tab",Cs=`.${$x}`,zx=".data-api",Wx=`hide${Cs}`,Vx=`hidden${Cs}`,Ux=`show${Cs}`,Yx=`shown${Cs}`,Kx=`click${Cs}${zx}`,Gx="dropdown-menu",Ls="active",Ch="fade",Lh="show",Xx=".dropdown",Jx=".nav, .list-group",Dh=".active",Mh=":scope > li > .active",Qx='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Zx=".dropdown-toggle",eT=":scope > .dropdown-menu .active",go=class extends Gr{static get NAME(){return Fx}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(Ls))return;let en,nn=ji(this._element),rn=this._element.closest(Jx);if(rn){let cn=rn.nodeName==="UL"||rn.nodeName==="OL"?Mh:Dh;en=Vn.find(cn,rn),en=en[en.length-1]}let on=en?Mn.trigger(en,Wx,{relatedTarget:this._element}):null;if(Mn.trigger(this._element,Ux,{relatedTarget:en}).defaultPrevented||on!==null&&on.defaultPrevented)return;this._activate(this._element,rn);let ln=()=>{Mn.trigger(en,Vx,{relatedTarget:this._element}),Mn.trigger(this._element,Yx,{relatedTarget:en})};nn?this._activate(nn,nn.parentNode,ln):ln()}_activate(en,nn,rn){let an=(nn&&(nn.nodeName==="UL"||nn.nodeName==="OL")?Vn.find(Mh,nn):Vn.children(nn,Dh))[0],ln=rn&&an&&an.classList.contains(Ch),cn=()=>this._transitionComplete(en,an,rn);an&&ln?(an.classList.remove(Lh),this._queueCallback(cn,en,!0)):cn()}_transitionComplete(en,nn,rn){if(nn){nn.classList.remove(Ls);let an=Vn.findOne(eT,nn.parentNode);an&&an.classList.remove(Ls),nn.getAttribute("role")==="tab"&&nn.setAttribute("aria-selected",!1)}en.classList.add(Ls),en.getAttribute("role")==="tab"&&en.setAttribute("aria-selected",!0),Bo(en),en.classList.contains(Ch)&&en.classList.add(Lh);let on=en.parentNode;if(on&&on.nodeName==="LI"&&(on=on.parentNode),on&&on.classList.contains(Gx)){let an=en.closest(Xx);an&&Vn.find(Zx,an).forEach(ln=>ln.classList.add(Ls)),en.setAttribute("aria-expanded",!0)}rn&&rn()}static jQueryInterface(en){return this.each(function(){let nn=go.getOrCreateInstance(this);if(typeof en=="string"){if(typeof nn[en]=="undefined")throw new TypeError(`No method named "${en}"`);nn[en]()}})}};Mn.on(document,Kx,Qx,function(tn){if(["A","AREA"].includes(this.tagName)&&tn.preventDefault(),Ho(this))return;go.getOrCreateInstance(this).show()});Kr(go);var Ih="toast",tT="bs.toast",Oi=`.${tT}`,nT=`click.dismiss${Oi}`,rT=`mouseover${Oi}`,iT=`mouseout${Oi}`,oT=`focusin${Oi}`,sT=`focusout${Oi}`,aT=`hide${Oi}`,lT=`hidden${Oi}`,cT=`show${Oi}`,uT=`shown${Oi}`,fT="fade",Ph="hide",Ds="show",kh="showing",dT={animation:"boolean",autohide:"boolean",delay:"number"},Nh={animation:!0,autohide:!0,delay:5e3},hT='[data-bs-dismiss="toast"]',Ai=class extends Gr{constructor(en,nn){super(en);this._config=this._getConfig(nn),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return dT}static get Default(){return Nh}static get NAME(){return Ih}show(){if(Mn.trigger(this._element,cT).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(fT);let nn=()=>{this._element.classList.remove(kh),this._element.classList.add(Ds),Mn.trigger(this._element,uT),this._maybeScheduleHide()};this._element.classList.remove(Ph),Bo(this._element),this._element.classList.add(kh),this._queueCallback(nn,this._element,this._config.animation)}hide(){if(!this._element.classList.contains(Ds)||Mn.trigger(this._element,aT).defaultPrevented)return;let nn=()=>{this._element.classList.add(Ph),Mn.trigger(this._element,lT)};this._element.classList.remove(Ds),this._queueCallback(nn,this._element,this._config.animation)}dispose(){this._clearTimeout(),this._element.classList.contains(Ds)&&this._element.classList.remove(Ds),super.dispose()}_getConfig(en){return en=Jn(Jn(Jn({},Nh),Or.getDataAttributes(this._element)),typeof en=="object"&&en?en:{}),wi(Ih,en,this.constructor.DefaultType),en}_maybeScheduleHide(){!this._config.autohide||this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))}_onInteraction(en,nn){switch(en.type){case"mouseover":case"mouseout":this._hasMouseInteraction=nn;break;case"focusin":case"focusout":this._hasKeyboardInteraction=nn;break}if(nn){this._clearTimeout();return}let rn=en.relatedTarget;this._element===rn||this._element.contains(rn)||this._maybeScheduleHide()}_setListeners(){Mn.on(this._element,nT,hT,()=>this.hide()),Mn.on(this._element,rT,en=>this._onInteraction(en,!0)),Mn.on(this._element,iT,en=>this._onInteraction(en,!1)),Mn.on(this._element,oT,en=>this._onInteraction(en,!0)),Mn.on(this._element,sT,en=>this._onInteraction(en,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(en){return this.each(function(){let nn=Ai.getOrCreateInstance(this,en);if(typeof en=="string"){if(typeof nn[en]=="undefined")throw new TypeError(`No method named "${en}"`);nn[en](this)}})}};Kr(Ai);var W$=Rr(Rh());"use strict";var D0=li(),Am=ru();D0({target:"Array",proto:!0,forced:[].forEach!=Am},{forEach:Am});var M0=vr(),I0=iu(),ou=ru(),P0=Ci();for(Lm in I0)if(su=M0[Lm],Hs=su&&su.prototype,Hs&&Hs.forEach!==ou)try{P0(Hs,"forEach",ou)}catch(tn){Hs.forEach=ou}var su,Hs,Lm;var xl=Rr(Mm());"use strict";var H0=li(),B0=Ka().filter,F0=Pm(),$0=F0("filter");H0({target:"Array",proto:!0,forced:!$0},{filter:function(en){return B0(this,en,arguments.length>1?arguments[1]:void 0)}});var lB=Rr(wu());var WA=li(),Ag=Og();WA({target:"Object",stat:!0,forced:Object.assign!==Ag},{assign:Ag});var eC=tl(),tC=_o(),nC=Ig();eC||tC(Object.prototype,"toString",nC,{unsafe:!0});var pC=li(),Bg=Hg();pC({global:!0,forced:parseInt!=Bg},{parseInt:Bg});"use strict";var bC=Cu().charAt,yC=Ui(),zg=Eo(),EC=_u(),Wg="String Iterator",_C=zg.set,SC=zg.getterFor(Wg);EC(String,"String",function(tn){_C(this,{type:Wg,string:yC(tn),index:0})},function(){var en=SC(this),nn=en.string,rn=en.index,on;return rn>=nn.length?{value:void 0,done:!0}:(on=bC(nn,rn),en.index+=on.length,{value:on,done:!1})});var hB=Rr(kv());var CL=vr(),Nv=iu(),Ws=wu(),Wu=Ci(),Rv=Dr(),Vu=Rv("iterator"),jv=Rv("toStringTag"),Uu=Ws.values;for(fl in Nv)if(Yu=CL[fl],ci=Yu&&Yu.prototype,ci){if(ci[Vu]!==Uu)try{Wu(ci,Vu,Uu)}catch(tn){ci[Vu]=Uu}if(ci[jv]||Wu(ci,jv,fl),Nv[fl]){for(xo in Ws)if(ci[xo]!==Ws[xo])try{Wu(ci,xo,Ws[xo])}catch(tn){ci[xo]=Ws[xo]}}}var Yu,ci,xo,fl;var wf=Rr($v()),xf=Rr(Uv()),Gb=Rr(tb());var Jr=[];var nb=function(){return Jr.some(function(tn){return tn.activeTargets.length>0})};var rb=function(){return Jr.some(function(tn){return tn.skippedTargets.length>0})};var ib="ResizeObserver loop completed with undelivered notifications.",ob=function(){var tn;typeof ErrorEvent=="function"?tn=new ErrorEvent("error",{message:ib}):(tn=document.createEvent("Event"),tn.initEvent("error",!1,!1),tn.message=ib),window.dispatchEvent(tn)};var Ao;(function(tn){tn.BORDER_BOX="border-box",tn.CONTENT_BOX="content-box",tn.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(Ao||(Ao={}));var Zr=function(tn){return Object.freeze(tn)};var ef=function(){function tn(en,nn){this.inlineSize=en,this.blockSize=nn,Zr(this)}return tn}();var tf=function(){function tn(en,nn,rn,on){return this.x=en,this.y=nn,this.width=rn,this.height=on,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,Zr(this)}return tn.prototype.toJSON=function(){var en=this,nn=en.x,rn=en.y,on=en.top,an=en.right,ln=en.bottom,cn=en.left,dn=en.width,fn=en.height;return{x:nn,y:rn,top:on,right:an,bottom:ln,left:cn,width:dn,height:fn}},tn.fromRect=function(en){return new tn(en.x,en.y,en.width,en.height)},tn}();var Us=function(tn){return tn instanceof SVGElement&&"getBBox"in tn},ml=function(tn){if(Us(tn)){var en=tn.getBBox(),nn=en.width,rn=en.height;return!nn&&!rn}var on=tn,an=on.offsetWidth,ln=on.offsetHeight;return!(an||ln||tn.getClientRects().length)},nf=function(tn){var en,nn;if(tn instanceof Element)return!0;var rn=(nn=(en=tn)===null||en===void 0?void 0:en.ownerDocument)===null||nn===void 0?void 0:nn.defaultView;return!!(rn&&tn instanceof rn.Element)},sb=function(tn){switch(tn.tagName){case"INPUT":if(tn.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1};var Co=typeof window!="undefined"?window:{};var gl=new WeakMap,ab=/auto|scroll/,VD=/^tb|vertical/,UD=/msie|trident/i.test(Co.navigator&&Co.navigator.userAgent),ui=function(tn){return parseFloat(tn||"0")},Ko=function(tn,en,nn){return tn===void 0&&(tn=0),en===void 0&&(en=0),nn===void 0&&(nn=!1),new ef((nn?en:tn)||0,(nn?tn:en)||0)},lb=Zr({devicePixelContentBoxSize:Ko(),borderBoxSize:Ko(),contentBoxSize:Ko(),contentRect:new tf(0,0,0,0)}),rf=function(tn,en){if(en===void 0&&(en=!1),gl.has(tn)&&!en)return gl.get(tn);if(ml(tn))return gl.set(tn,lb),lb;var nn=getComputedStyle(tn),rn=Us(tn)&&tn.ownerSVGElement&&tn.getBBox(),on=!UD&&nn.boxSizing==="border-box",an=VD.test(nn.writingMode||""),ln=!rn&&ab.test(nn.overflowY||""),cn=!rn&&ab.test(nn.overflowX||""),dn=rn?0:ui(nn.paddingTop),fn=rn?0:ui(nn.paddingRight),un=rn?0:ui(nn.paddingBottom),gn=rn?0:ui(nn.paddingLeft),hn=rn?0:ui(nn.borderTopWidth),pn=rn?0:ui(nn.borderRightWidth),vn=rn?0:ui(nn.borderBottomWidth),yn=rn?0:ui(nn.borderLeftWidth),mn=gn+fn,bn=dn+un,Sn=yn+pn,An=hn+vn,Tn=cn?tn.offsetHeight-An-tn.clientHeight:0,kn=ln?tn.offsetWidth-Sn-tn.clientWidth:0,Dn=on?mn+Sn:0,qn=on?bn+An:0,Fn=rn?rn.width:ui(nn.width)-Dn-kn,Un=rn?rn.height:ui(nn.height)-qn-Tn,Yn=Fn+mn+kn+Sn,Wn=Un+bn+Tn+An,wn=Zr({devicePixelContentBoxSize:Ko(Math.round(Fn*devicePixelRatio),Math.round(Un*devicePixelRatio),an),borderBoxSize:Ko(Yn,Wn,an),contentBoxSize:Ko(Fn,Un,an),contentRect:new tf(gn,dn,Fn,Un)});return gl.set(tn,wn),wn},vl=function(tn,en,nn){var rn=rf(tn,nn),on=rn.borderBoxSize,an=rn.contentBoxSize,ln=rn.devicePixelContentBoxSize;switch(en){case Ao.DEVICE_PIXEL_CONTENT_BOX:return ln;case Ao.BORDER_BOX:return on;default:return an}};var of=function(){function tn(en){var nn=rf(en);this.target=en,this.contentRect=nn.contentRect,this.borderBoxSize=Zr([nn.borderBoxSize]),this.contentBoxSize=Zr([nn.contentBoxSize]),this.devicePixelContentBoxSize=Zr([nn.devicePixelContentBoxSize])}return tn}();var bl=function(tn){if(ml(tn))return 1/0;for(var en=0,nn=tn.parentNode;nn;)en+=1,nn=nn.parentNode;return en};var cb=function(){var tn=1/0,en=[];Jr.forEach(function(ln){if(ln.activeTargets.length!==0){var cn=[];ln.activeTargets.forEach(function(fn){var un=new of(fn.target),gn=bl(fn.target);cn.push(un),fn.lastReportedSize=vl(fn.target,fn.observedBox),gntn?nn.activeTargets.push(on):nn.skippedTargets.push(on))})})};var ub=function(){var tn=0;for(sf(tn);nb();)tn=cb(),sf(tn);return rb()&&ob(),tn>0};var af,fb=[],YD=function(){return fb.splice(0).forEach(function(tn){return tn()})},db=function(tn){if(!af){var en=0,nn=document.createTextNode(""),rn={characterData:!0};new MutationObserver(function(){return YD()}).observe(nn,rn),af=function(){nn.textContent=""+(en?en--:en++)}}fb.push(tn),af()};var hb=function(tn){db(function(){requestAnimationFrame(tn)})};var yl=0,KD=function(){return!!yl},GD=250,XD={attributes:!0,characterData:!0,childList:!0,subtree:!0},pb=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],mb=function(tn){return tn===void 0&&(tn=0),Date.now()+tn},lf=!1,JD=function(){function tn(){var en=this;this.stopped=!0,this.listener=function(){return en.schedule()}}return tn.prototype.run=function(en){var nn=this;if(en===void 0&&(en=GD),!lf){lf=!0;var rn=mb(en);hb(function(){var on=!1;try{on=ub()}finally{if(lf=!1,en=rn-mb(),!KD())return;on?nn.run(1e3):en>0?nn.run(en):nn.start()}})}},tn.prototype.schedule=function(){this.stop(),this.run()},tn.prototype.observe=function(){var en=this,nn=function(){return en.observer&&en.observer.observe(document.body,XD)};document.body?nn():Co.addEventListener("DOMContentLoaded",nn)},tn.prototype.start=function(){var en=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),pb.forEach(function(nn){return Co.addEventListener(nn,en.listener,!0)}))},tn.prototype.stop=function(){var en=this;this.stopped||(this.observer&&this.observer.disconnect(),pb.forEach(function(nn){return Co.removeEventListener(nn,en.listener,!0)}),this.stopped=!0)},tn}(),El=new JD,cf=function(tn){!yl&&tn>0&&El.start(),yl+=tn,!yl&&El.stop()};var QD=function(tn){return!Us(tn)&&!sb(tn)&&getComputedStyle(tn).display==="inline"},gb=function(){function tn(en,nn){this.target=en,this.observedBox=nn||Ao.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return tn.prototype.isActive=function(){var en=vl(this.target,this.observedBox,!0);return QD(this.target)&&(this.lastReportedSize=en),this.lastReportedSize.inlineSize!==en.inlineSize||this.lastReportedSize.blockSize!==en.blockSize},tn}();var vb=function(){function tn(en,nn){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=en,this.callback=nn}return tn}();var _l=new WeakMap,bb=function(tn,en){for(var nn=0;nn=0&&(an&&Jr.splice(Jr.indexOf(rn),1),rn.observationTargets.splice(on,1),cf(-1))},tn.disconnect=function(en){var nn=this,rn=_l.get(en);rn.observationTargets.slice().forEach(function(on){return nn.unobserve(en,on.target)}),rn.activeTargets.splice(0,rn.activeTargets.length)},tn}();var uf=function(){function tn(en){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof en!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");Ys.connect(this,en)}return tn.prototype.observe=function(en,nn){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!nf(en))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");Ys.observe(this,en,nn)},tn.prototype.unobserve=function(en){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!nf(en))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");Ys.unobserve(this,en)},tn.prototype.disconnect=function(){Ys.disconnect(this)},tn.toString=function(){return"function ResizeObserver () { [polyfill code] }"},tn}();"use strict";var oM=li(),sM=_b().left,aM=nu(),xb=Ra(),lM=wb(),cM=aM("reduce"),uM=!lM&&xb>79&&xb<83;oM({target:"Array",proto:!0,forced:!cM||uM},{reduce:function(en){return sM(this,en,arguments.length,arguments.length>1?arguments[1]:void 0)}});var fM=$i(),dM=zi().f,ff=Function.prototype,hM=ff.toString,pM=/^\s*function ([^ (]*)/,Tb="name";fM&&!(Tb in ff)&&dM(ff,Tb,{configurable:!0,get:function(){try{return hM.call(this).match(pM)[1]}catch(tn){return""}}});var bB=Rr(gf());"use strict";var HM=bf(),BM=Vr(),FM=So(),_f=Ui(),$M=vo(),zM=yf(),Vb=Ef();HM("match",function(tn,en,nn){return[function(on){var an=$M(this),ln=on==null?void 0:on[tn];return ln!==void 0?ln.call(on,an):new RegExp(on)[tn](_f(an))},function(rn){var on=BM(this),an=_f(rn),ln=nn(en,on,an);if(ln.done)return ln.value;if(!on.global)return Vb(on,an);var cn=on.unicode;on.lastIndex=0;for(var dn=[],fn=0,un;(un=Vb(on,an))!==null;){var gn=_f(un[0]);dn[fn]=gn,gn===""&&(on.lastIndex=zM(an,FM(on.lastIndex),cn)),fn++}return fn===0?null:dn}]});"use strict";var GM=bf(),XM=Ar(),JM=Vr(),QM=js(),ZM=So(),Go=Ui(),eI=vo(),tI=yf(),nI=Yb(),rI=Ef(),iI=Dr(),Sf=iI("replace"),oI=Math.max,sI=Math.min,aI=function(tn){return tn===void 0?tn:String(tn)},lI=function(){return"a".replace(/./,"$0")==="$0"}(),Kb=function(){return/./[Sf]?/./[Sf]("a","$0")==="":!1}(),cI=!XM(function(){var tn=/./;return tn.exec=function(){var en=[];return en.groups={a:"7"},en},"".replace(tn,"$")!=="7"});GM("replace",function(tn,en,nn){var rn=Kb?"$":"$0";return[function(an,ln){var cn=eI(this),dn=an==null?void 0:an[Sf];return dn!==void 0?dn.call(an,cn,ln):en.call(Go(cn),an,ln)},function(on,an){var ln=JM(this),cn=Go(on);if(typeof an=="string"&&an.indexOf(rn)===-1&&an.indexOf("$<")===-1){var dn=nn(en,ln,cn,an);if(dn.done)return dn.value}var fn=typeof an=="function";fn||(an=Go(an));var un=ln.global;if(un){var gn=ln.unicode;ln.lastIndex=0}for(var hn=[];;){var pn=rI(ln,cn);if(pn===null||(hn.push(pn),!un))break;var vn=Go(pn[0]);vn===""&&(ln.lastIndex=tI(cn,ZM(ln.lastIndex),gn))}for(var yn="",mn=0,bn=0;bn=mn&&(yn+=cn.slice(mn,An)+Fn,mn=An+Sn.length)}return yn+cn.slice(mn)}]},!cI||!lI||Kb);var Tl=function(en){var nn=Array.prototype.reduce.call(en,function(rn,on){var an=on.name.match(/data-simplebar-(.+)/);if(an){var ln=an[1].replace(/\W+(.)/g,function(cn,dn){return dn.toUpperCase()});switch(on.value){case"true":rn[ln]=!0;break;case"false":rn[ln]=!1;break;case void 0:rn[ln]=!0;break;default:rn[ln]=on.value}}return rn},{});return nn};function Yi(tn){return!tn||!tn.ownerDocument||!tn.ownerDocument.defaultView?window:tn.ownerDocument.defaultView}function Ol(tn){return!tn||!tn.ownerDocument?document:tn.ownerDocument}var Xo=null,Xb=null;xl.default&&window.addEventListener("resize",function(){Xb!==window.devicePixelRatio&&(Xb=window.devicePixelRatio,Xo=null)});function Jb(tn){if(Xo===null){var en=Ol(tn);if(typeof en=="undefined")return Xo=0,Xo;var nn=en.body,rn=en.createElement("div");rn.classList.add("simplebar-hide-scrollbar"),nn.appendChild(rn);var on=rn.getBoundingClientRect().right;nn.removeChild(rn),Xo=on}return Xo}var yr=function(){function tn(nn,rn){var on=this;this.onScroll=function(){var an=Yi(on.el);on.scrollXTicking||(an.requestAnimationFrame(on.scrollX),on.scrollXTicking=!0),on.scrollYTicking||(an.requestAnimationFrame(on.scrollY),on.scrollYTicking=!0)},this.scrollX=function(){on.axis.x.isOverflowing&&(on.showScrollbar("x"),on.positionScrollbar("x")),on.scrollXTicking=!1},this.scrollY=function(){on.axis.y.isOverflowing&&(on.showScrollbar("y"),on.positionScrollbar("y")),on.scrollYTicking=!1},this.onMouseEnter=function(){on.showScrollbar("x"),on.showScrollbar("y")},this.onMouseMove=function(an){on.mouseX=an.clientX,on.mouseY=an.clientY,(on.axis.x.isOverflowing||on.axis.x.forceVisible)&&on.onMouseMoveForAxis("x"),(on.axis.y.isOverflowing||on.axis.y.forceVisible)&&on.onMouseMoveForAxis("y")},this.onMouseLeave=function(){on.onMouseMove.cancel(),(on.axis.x.isOverflowing||on.axis.x.forceVisible)&&on.onMouseLeaveForAxis("x"),(on.axis.y.isOverflowing||on.axis.y.forceVisible)&&on.onMouseLeaveForAxis("y"),on.mouseX=-1,on.mouseY=-1},this.onWindowResize=function(){on.scrollbarWidth=on.getScrollbarWidth(),on.hideNativeScrollbar()},this.hideScrollbars=function(){on.axis.x.track.rect=on.axis.x.track.el.getBoundingClientRect(),on.axis.y.track.rect=on.axis.y.track.el.getBoundingClientRect(),on.isWithinBounds(on.axis.y.track.rect)||(on.axis.y.scrollbar.el.classList.remove(on.classNames.visible),on.axis.y.isVisible=!1),on.isWithinBounds(on.axis.x.track.rect)||(on.axis.x.scrollbar.el.classList.remove(on.classNames.visible),on.axis.x.isVisible=!1)},this.onPointerEvent=function(an){var ln,cn;on.axis.x.track.rect=on.axis.x.track.el.getBoundingClientRect(),on.axis.y.track.rect=on.axis.y.track.el.getBoundingClientRect(),(on.axis.x.isOverflowing||on.axis.x.forceVisible)&&(ln=on.isWithinBounds(on.axis.x.track.rect)),(on.axis.y.isOverflowing||on.axis.y.forceVisible)&&(cn=on.isWithinBounds(on.axis.y.track.rect)),(ln||cn)&&(an.preventDefault(),an.stopPropagation(),an.type==="mousedown"&&(ln&&(on.axis.x.scrollbar.rect=on.axis.x.scrollbar.el.getBoundingClientRect(),on.isWithinBounds(on.axis.x.scrollbar.rect)?on.onDragStart(an,"x"):on.onTrackClick(an,"x")),cn&&(on.axis.y.scrollbar.rect=on.axis.y.scrollbar.el.getBoundingClientRect(),on.isWithinBounds(on.axis.y.scrollbar.rect)?on.onDragStart(an,"y"):on.onTrackClick(an,"y"))))},this.drag=function(an){var ln,cn=on.axis[on.draggedAxis].track,dn=cn.rect[on.axis[on.draggedAxis].sizeAttr],fn=on.axis[on.draggedAxis].scrollbar,un=on.contentWrapperEl[on.axis[on.draggedAxis].scrollSizeAttr],gn=parseInt(on.elStyles[on.axis[on.draggedAxis].sizeAttr],10);an.preventDefault(),an.stopPropagation(),on.draggedAxis==="y"?ln=an.pageY:ln=an.pageX;var hn=ln-cn.rect[on.axis[on.draggedAxis].offsetAttr]-on.axis[on.draggedAxis].dragOffset,pn=hn/(dn-fn.size),vn=pn*(un-gn);on.draggedAxis==="x"&&(vn=on.isRtl&&tn.getRtlHelpers().isRtlScrollbarInverted?vn-(dn+fn.size):vn,vn=on.isRtl&&tn.getRtlHelpers().isRtlScrollingInverted?-vn:vn),on.contentWrapperEl[on.axis[on.draggedAxis].scrollOffsetAttr]=vn},this.onEndDrag=function(an){var ln=Ol(on.el),cn=Yi(on.el);an.preventDefault(),an.stopPropagation(),on.el.classList.remove(on.classNames.dragging),ln.removeEventListener("mousemove",on.drag,!0),ln.removeEventListener("mouseup",on.onEndDrag,!0),on.removePreventClickId=cn.setTimeout(function(){ln.removeEventListener("click",on.preventClick,!0),ln.removeEventListener("dblclick",on.preventClick,!0),on.removePreventClickId=null})},this.preventClick=function(an){an.preventDefault(),an.stopPropagation()},this.el=nn,this.minScrollbarWidth=20,this.options=Object.assign({},tn.defaultOptions,{},rn),this.classNames=Object.assign({},tn.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,!tn.instances.has(this.el)&&(this.recalculate=(0,wf.default)(this.recalculate.bind(this),64),this.onMouseMove=(0,wf.default)(this.onMouseMove.bind(this),64),this.hideScrollbars=(0,xf.default)(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=(0,xf.default)(this.onWindowResize.bind(this),64,{leading:!0}),tn.getRtlHelpers=(0,Gb.default)(tn.getRtlHelpers),this.init())}tn.getRtlHelpers=function(){var rn=document.createElement("div");rn.innerHTML='
';var on=rn.firstElementChild;document.body.appendChild(on);var an=on.firstElementChild;on.scrollLeft=0;var ln=tn.getOffset(on),cn=tn.getOffset(an);on.scrollLeft=999;var dn=tn.getOffset(an);return{isRtlScrollingInverted:ln.left!==cn.left&&cn.left-dn.left!=0,isRtlScrollbarInverted:ln.left!==cn.left}},tn.getOffset=function(rn){var on=rn.getBoundingClientRect(),an=Ol(rn),ln=Yi(rn);return{top:on.top+(ln.pageYOffset||an.documentElement.scrollTop),left:on.left+(ln.pageXOffset||an.documentElement.scrollLeft)}};var en=tn.prototype;return en.init=function(){tn.instances.set(this.el,this),xl.default&&(this.initDOM(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},en.initDOM=function(){var rn=this;if(Array.prototype.filter.call(this.el.children,function(ln){return ln.classList.contains(rn.classNames.wrapper)}).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var on=document.createElement("div"),an=document.createElement("div");on.classList.add(this.classNames.track),an.classList.add(this.classNames.scrollbar),on.appendChild(an),this.axis.x.track.el=on.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=on.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},en.initListeners=function(){var rn=this,on=Yi(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach(function(cn){rn.el.addEventListener(cn,rn.onPointerEvent,!0)}),["touchstart","touchend","touchmove"].forEach(function(cn){rn.el.addEventListener(cn,rn.onPointerEvent,{capture:!0,passive:!0})}),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),on.addEventListener("resize",this.onWindowResize);var an=!1,ln=on.ResizeObserver||uf;this.resizeObserver=new ln(function(){!an||rn.recalculate()}),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),on.requestAnimationFrame(function(){an=!0}),this.mutationObserver=new on.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},en.recalculate=function(){var rn=Yi(this.el);this.elStyles=rn.getComputedStyle(this.el),this.isRtl=this.elStyles.direction==="rtl";var on=this.heightAutoObserverEl.offsetHeight<=1,an=this.heightAutoObserverEl.offsetWidth<=1,ln=this.contentEl.offsetWidth,cn=this.contentWrapperEl.offsetWidth,dn=this.elStyles.overflowX,fn=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var un=this.contentEl.scrollHeight,gn=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=on?"auto":"100%",this.placeholderEl.style.width=an?ln+"px":"auto",this.placeholderEl.style.height=un+"px";var hn=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=gn>ln,this.axis.y.isOverflowing=un>hn,this.axis.x.isOverflowing=dn==="hidden"?!1:this.axis.x.isOverflowing,this.axis.y.isOverflowing=fn==="hidden"?!1:this.axis.y.isOverflowing,this.axis.x.forceVisible=this.options.forceVisible==="x"||this.options.forceVisible===!0,this.axis.y.forceVisible=this.options.forceVisible==="y"||this.options.forceVisible===!0,this.hideNativeScrollbar();var pn=this.axis.x.isOverflowing?this.scrollbarWidth:0,vn=this.axis.y.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&gn>cn-vn,this.axis.y.isOverflowing=this.axis.y.isOverflowing&&un>hn-pn,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},en.getScrollbarSize=function(rn){if(rn===void 0&&(rn="y"),!this.axis[rn].isOverflowing)return 0;var on=this.contentEl[this.axis[rn].scrollSizeAttr],an=this.axis[rn].track.el[this.axis[rn].offsetSizeAttr],ln,cn=an/on;return ln=Math.max(~~(cn*an),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(ln=Math.min(ln,this.options.scrollbarMaxSize)),ln},en.positionScrollbar=function(rn){if(rn===void 0&&(rn="y"),!!this.axis[rn].isOverflowing){var on=this.contentWrapperEl[this.axis[rn].scrollSizeAttr],an=this.axis[rn].track.el[this.axis[rn].offsetSizeAttr],ln=parseInt(this.elStyles[this.axis[rn].sizeAttr],10),cn=this.axis[rn].scrollbar,dn=this.contentWrapperEl[this.axis[rn].scrollOffsetAttr];dn=rn==="x"&&this.isRtl&&tn.getRtlHelpers().isRtlScrollingInverted?-dn:dn;var fn=dn/(on-ln),un=~~((an-cn.size)*fn);un=rn==="x"&&this.isRtl&&tn.getRtlHelpers().isRtlScrollbarInverted?un+(an-cn.size):un,cn.el.style.transform=rn==="x"?"translate3d("+un+"px, 0, 0)":"translate3d(0, "+un+"px, 0)"}},en.toggleTrackVisibility=function(rn){rn===void 0&&(rn="y");var on=this.axis[rn].track.el,an=this.axis[rn].scrollbar.el;this.axis[rn].isOverflowing||this.axis[rn].forceVisible?(on.style.visibility="visible",this.contentWrapperEl.style[this.axis[rn].overflowAttr]="scroll"):(on.style.visibility="hidden",this.contentWrapperEl.style[this.axis[rn].overflowAttr]="hidden"),this.axis[rn].isOverflowing?an.style.display="block":an.style.display="none"},en.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},en.onMouseMoveForAxis=function(rn){rn===void 0&&(rn="y"),this.axis[rn].track.rect=this.axis[rn].track.el.getBoundingClientRect(),this.axis[rn].scrollbar.rect=this.axis[rn].scrollbar.el.getBoundingClientRect();var on=this.isWithinBounds(this.axis[rn].scrollbar.rect);on?this.axis[rn].scrollbar.el.classList.add(this.classNames.hover):this.axis[rn].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[rn].track.rect)?(this.showScrollbar(rn),this.axis[rn].track.el.classList.add(this.classNames.hover)):this.axis[rn].track.el.classList.remove(this.classNames.hover)},en.onMouseLeaveForAxis=function(rn){rn===void 0&&(rn="y"),this.axis[rn].track.el.classList.remove(this.classNames.hover),this.axis[rn].scrollbar.el.classList.remove(this.classNames.hover)},en.showScrollbar=function(rn){rn===void 0&&(rn="y");var on=this.axis[rn].scrollbar.el;this.axis[rn].isVisible||(on.classList.add(this.classNames.visible),this.axis[rn].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},en.onDragStart=function(rn,on){on===void 0&&(on="y");var an=Ol(this.el),ln=Yi(this.el),cn=this.axis[on].scrollbar,dn=on==="y"?rn.pageY:rn.pageX;this.axis[on].dragOffset=dn-cn.rect[this.axis[on].offsetAttr],this.draggedAxis=on,this.el.classList.add(this.classNames.dragging),an.addEventListener("mousemove",this.drag,!0),an.addEventListener("mouseup",this.onEndDrag,!0),this.removePreventClickId===null?(an.addEventListener("click",this.preventClick,!0),an.addEventListener("dblclick",this.preventClick,!0)):(ln.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},en.onTrackClick=function(rn,on){var an=this;if(on===void 0&&(on="y"),!!this.options.clickOnTrack){var ln=Yi(this.el);this.axis[on].scrollbar.rect=this.axis[on].scrollbar.el.getBoundingClientRect();var cn=this.axis[on].scrollbar,dn=cn.rect[this.axis[on].offsetAttr],fn=parseInt(this.elStyles[this.axis[on].sizeAttr],10),un=this.contentWrapperEl[this.axis[on].scrollOffsetAttr],gn=on==="y"?this.mouseY-dn:this.mouseX-dn,hn=gn<0?-1:1,pn=hn===-1?un-fn:un+fn,vn=function yn(){if(hn===-1){if(un>pn){var mn;un-=an.options.clickOnTrackSpeed,an.contentWrapperEl.scrollTo((mn={},mn[an.axis[on].offsetAttr]=un,mn)),ln.requestAnimationFrame(yn)}}else if(un=rn.left&&this.mouseX<=rn.left+rn.width&&this.mouseY>=rn.top&&this.mouseY<=rn.top+rn.height},en.findChild=function(rn,on){var an=rn.matches||rn.webkitMatchesSelector||rn.mozMatchesSelector||rn.msMatchesSelector;return Array.prototype.filter.call(rn.children,function(ln){return an.call(ln,on)})[0]},tn}();yr.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,clickOnTrackSpeed:40,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3};yr.instances=new WeakMap;yr.initDOMLoadedElements=function(){document.removeEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.removeEventListener("load",this.initDOMLoadedElements),Array.prototype.forEach.call(document.querySelectorAll("[data-simplebar]"),function(tn){tn.getAttribute("data-simplebar")!=="init"&&!yr.instances.has(tn)&&new yr(tn,Tl(tn.attributes))})};yr.removeObserver=function(){this.globalObserver.disconnect()};yr.initHtmlApi=function(){this.initDOMLoadedElements=this.initDOMLoadedElements.bind(this),typeof MutationObserver!="undefined"&&(this.globalObserver=new MutationObserver(yr.handleMutations),this.globalObserver.observe(document,{childList:!0,subtree:!0})),document.readyState==="complete"||document.readyState!=="loading"&&!document.documentElement.doScroll?window.setTimeout(this.initDOMLoadedElements):(document.addEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.addEventListener("load",this.initDOMLoadedElements))};yr.handleMutations=function(tn){tn.forEach(function(en){Array.prototype.forEach.call(en.addedNodes,function(nn){nn.nodeType===1&&(nn.hasAttribute("data-simplebar")?!yr.instances.has(nn)&&document.documentElement.contains(nn)&&new yr(nn,Tl(nn.attributes)):Array.prototype.forEach.call(nn.querySelectorAll("[data-simplebar]"),function(rn){rn.getAttribute("data-simplebar")!=="init"&&!yr.instances.has(rn)&&document.documentElement.contains(rn)&&new yr(rn,Tl(rn.attributes))}))}),Array.prototype.forEach.call(en.removedNodes,function(nn){nn.nodeType===1&&(nn.getAttribute("data-simplebar")==="init"?yr.instances.has(nn)&&!document.documentElement.contains(nn)&&yr.instances.get(nn).unMount():Array.prototype.forEach.call(nn.querySelectorAll('[data-simplebar="init"]'),function(rn){yr.instances.has(rn)&&!document.documentElement.contains(rn)&&yr.instances.get(rn).unMount()}))})})};yr.getOptions=Tl;xl.default&&yr.initHtmlApi();var Zb=Rr(Qb());function ey(tn){return"error"in tn&&"exception"in tn}function Jo(tn){return"error"in tn}function ty(tn){return typeof tn.next=="string"}function ur(tn){let en=["","null","undefined"];return Array.isArray(tn)?tn.length>0:typeof tn=="string"&&!en.includes(tn)||typeof tn=="number"||typeof tn=="boolean"?!0:typeof tn=="object"&&tn!==null}function Ks(tn){return tn.every(en=>typeof en!="undefined"&&en!==null)}function Gs(tn){for(let en of tn.options)en.selected&&(en.selected=!1);tn.value=""}function Of(tn){return typeof tn!==null&&typeof tn!="undefined"}function gI(){let{csrftoken:tn}=Zb.default.parse(document.cookie);if(typeof tn=="undefined")throw new Error("Invalid or missing CSRF token");return tn}function ny(tn,en,nn){return Fr(this,null,function*(){let rn=gI(),on=new Headers({"X-CSRFToken":rn}),an;typeof nn!="undefined"&&(an=JSON.stringify(nn),on.set("content-type","application/json"));let ln=yield fetch(tn,{method:en,body:an,headers:on,credentials:"same-origin"}),cn=ln.headers.get("Content-Type");if(typeof cn=="string"&&cn.includes("text"))return{error:yield ln.text()};let dn=yield ln.json();return!ln.ok&&Array.isArray(dn)?{error:dn.join(` -`)}:!ln.ok&&"detail"in dn?{error:dn.detail}:dn})}function Cl(tn,en){return Fr(this,null,function*(){return yield ny(tn,"PATCH",en)})}function vI(tn){return Fr(this,null,function*(){return yield ny(tn,"GET")})}function ry(tn){return Fr(this,null,function*(){return yield vI(tn)})}function*Hn(...tn){for(let en of tn)for(let nn of document.querySelectorAll(en))nn!==null&&(yield nn)}function Er(tn){return document.getElementById(tn)}function iy(tn,en=0){let nn=en,rn=document.getElementById("content-title");rn!==null&&(nn+=rn.getBoundingClientRect().bottom);let on=tn.getBoundingClientRect().top+window.pageYOffset+nn;window.scrollTo({top:on,behavior:"smooth"})}function oy(tn){let en=[];for(let nn of tn.querySelectorAll("select"))if(nn!==null){let rn={name:nn.name,options:[]};for(let on of nn.options)on.selected&&rn.options.push(on.value);en=[...en,rn]}return en}function Xs(tn,en){tn!==null&&(typeof en=="undefined"?window.getComputedStyle(tn).display==="none"?tn.style.display="":tn.style.display="none":en==="show"?tn.style.display="":tn.style.display="none")}function fi(tn,en,nn){function rn(an){return!!(typeof nn=="string"&&an!==null&&an.matches(nn))}function on(an){if(an!==null&&an.parentElement!==null&&!rn(an)){for(let ln of an.parentElement.querySelectorAll(en))if(ln!==null)return ln;return on(an.parentElement.parentElement)}return null}return on(tn)}function Qo(tn,en,nn=null,rn=[]){let on=document.createElement(tn);if(en!==null)for(let an of Object.keys(en)){let ln=an,cn=en[ln];ln in on&&(on[ln]=cn)}nn!==null&&nn.length>0&&on.classList.add(...nn);for(let an of rn)on.appendChild(an);return on}function sy(tn,en){let nn=new Map;for(let rn of tn){let on=rn[en];nn.has(on)||nn.set(on,rn)}return Array.from(nn.values())}function bI(tn){let en=tn.target;if(en.tagName==="BUTTON"){let nn=en,rn=nn.getAttribute("return-url"),on=nn.form;on!==null&&ur(rn)&&(on.action=rn,on.submit())}}function yI(tn,en){let nn=new Set;for(let rn of en.querySelectorAll("*[name]"))rn.validity.valid?rn.classList.contains("is-invalid")&&rn.classList.remove("is-invalid"):(nn.add(rn.name),rn.classList.contains("is-invalid")||rn.classList.add("is-invalid"));if(nn.size!==0){let rn=en.elements.namedItem(Array.from(nn)[0]);iy(rn),tn.preventDefault()}}function EI(){for(let tn of Hn("button[return-url]"))tn.addEventListener("click",bI)}function ay(){for(let tn of Hn("form")){let en=tn.querySelectorAll("button[type=submit]");for(let nn of en)nn.addEventListener("click",rn=>yI(rn,tn))}EI()}function ly(){for(let tn of Hn("a.set_speed"))if(tn!==null){let en=function(nn){nn.preventDefault();let rn=tn.getAttribute("data"),on=document.getElementById(tn.target);on!==null&&rn!==null&&(on.value=rn)};tn.addEventListener("click",en)}}var Af={vlangroup_edit:{region:{hide:["id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region"]},"site group":{hide:["id_region","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_sitegroup"]},site:{hide:["id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site"]},location:{hide:["id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location"]},rack:{hide:["id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location","id_rack"]},"cluster group":{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_cluster"],show:["id_clustergroup"]},cluster:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack"],show:["id_clustergroup","id_cluster"]},default:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:[]}}};function Cf(tn,en){var nn;for(let rn of Hn(tn)){let on=(nn=rn.parentElement)==null?void 0:nn.parentElement;on!==null&&(en==="show"?Xs(on,"show"):Xs(on,"hide"))}}function cy(tn,en){let nn=en.options[en.selectedIndex].innerText.toLowerCase();for(let[rn,on]of Object.entries(Af[tn]))if(nn.endsWith(rn)){for(let an of on.hide)Cf(`#${an}`,"hide");for(let an of on.show)Cf(`#${an}`,"show");break}else for(let an of Af[tn].default.hide)Cf(`#${an}`,"hide")}function uy(){for(let tn of Object.keys(Af))for(let en of Hn(`html[data-netbox-url-name="${tn}"] #id_scope_type`))cy(tn,en),en.addEventListener("change",()=>cy(tn,en))}function _I(tn){var nn,rn;let en=(rn=(nn=tn==null?void 0:tn.parentElement)==null?void 0:nn.parentElement)!=null?rn:null;return en!==null&&en.classList.contains("row")?en:null}function di(tn,en){let nn=_I(tn);if(tn!==null&&nn!==null){Xs(nn,en);let rn=new Event(`netbox.select.disabled.${tn.name}`);switch(en){case"hide":tn.disabled=!0,tn.dispatchEvent(rn);break;case"show":tn.disabled=!1,tn.dispatchEvent(rn)}}}function SI(){let tn=[Er("id_tagged_vlans"),Er("id_untagged_vlan"),Er("id_vlan_group")];if(Ks(tn)){let[en,nn]=tn;Gs(nn),Gs(en);for(let rn of tn)di(rn,"hide")}}function wI(){let tn=[Er("id_tagged_vlans"),Er("id_untagged_vlan"),Er("id_vlan_group")];if(Ks(tn)){let[en,nn,rn]=tn;Gs(en),di(rn,"show"),di(nn,"show"),di(en,"hide")}}function xI(){let tn=[Er("id_tagged_vlans"),Er("id_untagged_vlan"),Er("id_vlan_group")];if(Ks(tn)){let[en,nn,rn]=tn;di(en,"show"),di(rn,"show"),di(nn,"show")}}function TI(){let tn=[Er("id_tagged_vlans"),Er("id_untagged_vlan"),Er("id_vlan_group")];if(Ks(tn)){let[en,nn,rn]=tn;Gs(en),di(rn,"show"),di(nn,"show"),di(en,"hide")}}function fy(tn){switch(tn.value){case"access":wI();break;case"tagged":xI();break;case"tagged-all":TI();break;case"":SI();break}}function dy(){let tn=Er("id_mode");tn!==null&&(tn.addEventListener("change",()=>fy(tn)),fy(tn))}function hy(){for(let tn of[ay,ly,uy,dy])tn()}var Ey=Rr(yy());window.Collapse=qr;window.Modal=Fi;window.Popover=po;window.Toast=Ai;window.Tooltip=oi;function OI(){for(let tn of Hn(".masonry"))new Ey.default(tn,{itemSelector:".masonry-item",percentPosition:!0})}function AI(){for(let tn of Hn('[data-bs-toggle="tooltip"]'))new oi(tn,{container:"body"})}function CI(){for(let tn of Hn('[data-bs-toggle="modal"]'))new Fi(tn)}function Lo(tn,en,nn,rn){let on="mdi-alert";switch(tn){case"warning":on="mdi-alert";break;case"success":on="mdi-check-circle";break;case"info":on="mdi-information";break;case"danger":on="mdi-alert";break}let an=document.createElement("div");an.setAttribute("class","toast-container position-fixed bottom-0 end-0 m-3");let ln=document.createElement("div");ln.setAttribute("class",`toast bg-${tn}`),ln.setAttribute("role","alert"),ln.setAttribute("aria-live","assertive"),ln.setAttribute("aria-atomic","true");let cn=document.createElement("div");cn.setAttribute("class",`toast-header bg-${tn} text-body`);let dn=document.createElement("i");dn.setAttribute("class",`mdi ${on}`);let fn=document.createElement("strong");fn.setAttribute("class","me-auto ms-1"),fn.innerText=en;let un=document.createElement("button");un.setAttribute("type","button"),un.setAttribute("class","btn-close"),un.setAttribute("data-bs-dismiss","toast"),un.setAttribute("aria-label","Close");let gn=document.createElement("div");if(gn.setAttribute("class","toast-body"),cn.appendChild(dn),cn.appendChild(fn),typeof rn!="undefined"){let pn=document.createElement("small");pn.setAttribute("class","text-muted"),cn.appendChild(pn)}return cn.appendChild(un),gn.innerText=nn.trim(),ln.appendChild(cn),ln.appendChild(gn),an.appendChild(ln),document.body.appendChild(an),new Ai(ln)}function LI(){let{hash:tn}=location;if(tn&&tn.match(/^#tab_.+$/)){let en=tn.replace("tab_","");for(let nn of Hn(`ul.nav.nav-tabs .nav-link[data-bs-target="${en}"]`))new go(nn).show()}}function DI(){let tn=document.querySelectorAll(".sidebar .accordion-item");function en(nn){for(let rn of tn)rn!==nn?rn.classList.remove("is-open"):rn.classList.toggle("is-open")}for(let nn of tn)for(let rn of nn.querySelectorAll(".accordion-button"))rn.addEventListener("click",()=>{en(nn)})}function MI(){for(let tn of Hn("a.image-preview")){let en=`${Math.round(window.innerWidth/4)}px`,nn=Qo("img",{src:tn.href});nn.style.maxWidth=en;let rn=Qo("div",null,null,[nn]);new po(tn,{customClass:"image-preview-popover",trigger:"hover",html:!0,content:rn})}}function _y(){for(let tn of[AI,CI,OI,LI,MI,DI])tn()}function II(tn,en){var cn;let nn=tn.currentTarget,rn=fi(nn,"span.search-obj-selected"),on=fi(nn,"input.search-obj-type"),an=nn.getAttribute("data-search-value"),ln="";rn!==null&&on!==null&&(ur(an)&&ln!==an?(ln=an,rn.innerHTML=(cn=en.textContent)!=null?cn:"Error",on.value=an):(ln="",rn.innerHTML="All Objects",on.value=""))}function PI(){for(let tn of Hn(".search-obj-selector"))for(let en of tn.querySelectorAll("li > button.dropdown-item"))en.addEventListener("click",nn=>II(nn,en))}function Sy(){for(let tn of[PI])tn()}function wy(tn,en,nn){return Math.min(Math.max(tn,nn),en)}var Zo=class extends Error{constructor(en){super(`Failed to parse color: "${en}"`)}};function kI(tn){if(typeof tn!="string")throw new Zo(tn);if(tn.trim().toLowerCase()==="transparent")return[0,0,0,0];let en=tn.trim();en=BI.test(tn)?function(ln){let cn=ln.toLowerCase().trim(),dn=NI[function(fn){let un=5381,gn=fn.length;for(;gn;)un=33*un^fn.charCodeAt(--gn);return(un>>>0)%2341}(cn)];if(!dn)throw new Zo(ln);return`#${dn}`}(tn):tn;let nn=RI.exec(en);if(nn){let ln=Array.from(nn).slice(1);return[...ln.slice(0,3).map(cn=>parseInt(Js(cn,2),16)),parseInt(Js(ln[3]||"f",2),16)/255]}let rn=jI.exec(en);if(rn){let ln=Array.from(rn).slice(1);return[...ln.slice(0,3).map(cn=>parseInt(cn,16)),parseInt(ln[3]||"ff",16)/255]}let on=qI.exec(en);if(on){let ln=Array.from(on).slice(1);return[...ln.slice(0,3).map(cn=>parseInt(cn,10)),parseFloat(ln[3]||"1")]}let an=HI.exec(en);if(an){let[ln,cn,dn,fn]=Array.from(an).slice(1).map(parseFloat);if(wy(0,100,cn)!==cn)throw new Zo(tn);if(wy(0,100,dn)!==dn)throw new Zo(tn);return[...FI(ln,cn,dn),fn||1]}throw new Zo(tn)}var xy=tn=>parseInt(tn.replace(/_/g,""),36),NI="1q29ehhb 1n09sgk7 1kl1ekf_ _yl4zsno 16z9eiv3 1p29lhp8 _bd9zg04 17u0____ _iw9zhe5 _to73___ _r45e31e _7l6g016 _jh8ouiv _zn3qba8 1jy4zshs 11u87k0u 1ro9yvyo 1aj3xael 1gz9zjz0 _3w8l4xo 1bf1ekf_ _ke3v___ _4rrkb__ 13j776yz _646mbhl _nrjr4__ _le6mbhl 1n37ehkb _m75f91n _qj3bzfz 1939yygw 11i5z6x8 _1k5f8xs 1509441m 15t5lwgf _ae2th1n _tg1ugcv 1lp1ugcv 16e14up_ _h55rw7n _ny9yavn _7a11xb_ 1ih442g9 _pv442g9 1mv16xof 14e6y7tu 1oo9zkds 17d1cisi _4v9y70f _y98m8kc 1019pq0v 12o9zda8 _348j4f4 1et50i2o _8epa8__ _ts6senj 1o350i2o 1mi9eiuo 1259yrp0 1ln80gnw _632xcoy 1cn9zldc _f29edu4 1n490c8q _9f9ziet 1b94vk74 _m49zkct 1kz6s73a 1eu9dtog _q58s1rz 1dy9sjiq __u89jo3 _aj5nkwg _ld89jo3 13h9z6wx _qa9z2ii _l119xgq _bs5arju 1hj4nwk9 1qt4nwk9 1ge6wau6 14j9zlcw 11p1edc_ _ms1zcxe _439shk6 _jt9y70f _754zsow 1la40eju _oq5p___ _x279qkz 1fa5r3rv _yd2d9ip _424tcku _8y1di2_ _zi2uabw _yy7rn9h 12yz980_ __39ljp6 1b59zg0x _n39zfzp 1fy9zest _b33k___ _hp9wq92 1il50hz4 _io472ub _lj9z3eo 19z9ykg0 _8t8iu3a 12b9bl4a 1ak5yw0o _896v4ku _tb8k8lv _s59zi6t _c09ze0p 1lg80oqn 1id9z8wb _238nba5 1kq6wgdi _154zssg _tn3zk49 _da9y6tc 1sg7cv4f _r12jvtt 1gq5fmkz 1cs9rvci _lp9jn1c _xw1tdnb 13f9zje6 16f6973h _vo7ir40 _bt5arjf _rc45e4t _hr4e100 10v4e100 _hc9zke2 _w91egv_ _sj2r1kk 13c87yx8 _vqpds__ _ni8ggk8 _tj9yqfb 1ia2j4r4 _7x9b10u 1fc9ld4j 1eq9zldr _5j9lhpx _ez9zl6o _md61fzm".split(" ").reduce((tn,en)=>{let nn=xy(en.substring(0,3)),rn=xy(en.substring(3)).toString(16),on="";for(let an=0;an<6-rn.length;an++)on+="0";return tn[nn]=`${on}${rn}`,tn},{}),Js=(tn,en)=>Array.from(Array(en)).map(()=>tn).join(""),RI=new RegExp(`^#${Js("([a-f0-9])",3)}([a-f0-9])?$`,"i"),jI=new RegExp(`^#${Js("([a-f0-9]{2})",3)}([a-f0-9]{2})?$`,"i"),qI=new RegExp(`^rgba?\\(\\s*(\\d+)\\s*${Js(",\\s*(\\d+)\\s*",2)}(?:,\\s*([\\d.]+))?\\s*\\)$`,"i"),HI=/^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)$/i,BI=/^[a-z]+$/i,Ty=tn=>Math.round(255*tn),FI=(tn,en,nn)=>{let rn=nn/100;if(en===0)return[rn,rn,rn].map(Ty);let on=(tn%360+360)%360/60,an=(1-Math.abs(2*rn-1))*(en/100),ln=an*(1-Math.abs(on%2-1)),cn=0,dn=0,fn=0;on>=0&&on<1?(cn=an,dn=ln):on>=1&&on<2?(cn=ln,dn=an):on>=2&&on<3?(dn=an,fn=ln):on>=3&&on<4?(dn=ln,fn=an):on>=4&&on<5?(cn=ln,fn=an):on>=5&&on<6&&(cn=an,fn=ln);let un=rn-an/2;return[cn+un,dn+un,fn+un].map(Ty)};function $I(tn){if(tn==="transparent")return 0;function en(an){let ln=an/255;return ln<=.03928?ln/12.92:Math.pow((ln+.055)/1.055,2.4)}let[nn,rn,on]=kI(tn);return .2126*en(nn)+.7152*en(rn)+.0722*en(on)}function zI(tn){return $I(tn)>.179}function Qs(tn){return zI(tn)?"#000":"#fff"}var Zy=Rr(Ay()),If=Rr(Uy());var jl={};(function(tn,en){typeof jl=="object"&&typeof module=="object"?module.exports=en():typeof define=="function"&&define.amd?define([],en):typeof jl=="object"?jl.SlimSelect=en():tn.SlimSelect=en()})(window,function(){return nn={},tn.m=en=[function(rn,on,an){"use strict";function ln(dn,fn){fn=fn||{bubbles:!1,cancelable:!1,detail:void 0};var un=document.createEvent("CustomEvent");return un.initCustomEvent(dn,fn.bubbles,fn.cancelable,fn.detail),un}var cn;on.__esModule=!0,on.hasClassInTree=function(dn,fn){function un(gn,hn){return hn&&gn&&gn.classList&&gn.classList.contains(hn)?gn:null}return un(dn,fn)||function gn(hn,pn){return hn&&hn!==document?un(hn,pn)?hn:gn(hn.parentNode,pn):null}(dn,fn)},on.ensureElementInView=function(dn,fn){var un=dn.scrollTop+dn.offsetTop,gn=un+dn.clientHeight,hn=fn.offsetTop,pn=hn+fn.clientHeight;hn=window.innerHeight?"above":un?fn:"below"},on.debounce=function(dn,fn,un){var gn;return fn===void 0&&(fn=100),un===void 0&&(un=!1),function(){for(var hn=[],pn=0;pn[^<>]*'+yn+"")},on.kebabCase=function(dn){var fn=dn.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,function(un){return"-"+un.toLowerCase()});return dn[0]===dn[0].toUpperCase()?fn.substring(1):fn},typeof(cn=window).CustomEvent!="function"&&(ln.prototype=cn.Event.prototype,cn.CustomEvent=ln)},function(rn,on,an){"use strict";on.__esModule=!0;var ln=(cn.prototype.newOption=function(fn){return{id:fn.id?fn.id:String(Math.floor(1e8*Math.random())),value:fn.value?fn.value:"",text:fn.text?fn.text:"",innerHTML:fn.innerHTML?fn.innerHTML:"",selected:!!fn.selected&&fn.selected,display:fn.display===void 0||fn.display,disabled:!!fn.disabled&&fn.disabled,placeholder:!!fn.placeholder&&fn.placeholder,class:fn.class?fn.class:void 0,data:fn.data?fn.data:{},mandatory:!!fn.mandatory&&fn.mandatory}},cn.prototype.add=function(fn){this.data.push({id:String(Math.floor(1e8*Math.random())),value:fn.value,text:fn.text,innerHTML:"",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:fn.mandatory,data:{}})},cn.prototype.parseSelectData=function(){this.data=[];for(var fn=0,un=this.main.select.element.childNodes;fn',placeholder:this.placeholder,searchPlaceholder:"Filter",onChange:()=>this.handleSlimChange()}),this.getStaticParams(),this.getDynamicParams(),this.getPathKeys();for(let[ln,cn]of this.staticParams.entries())this.queryParams.set(ln,cn);for(let ln of this.dynamicParams.keys())this.updateQueryParams(ln);for(let ln of this.pathValues.keys())this.updatePathValues(ln);this.queryParams.set("brief",[!0]),this.updateQueryUrl(),this.resetClasses(),this.setSlimStyles(),this.initResetButton(),this.initRefreshButton(),this.addEventListeners();let on=this.base.getAttribute("data-fetch-trigger"),an=this.base.closest(".content-container .collapse");switch(Gy(on)?this.trigger=on:an!==null?this.trigger="collapse":this.trigger="load",this.trigger){case"collapse":an!==null&&(an.addEventListener("show.bs.collapse",()=>this.loadData()),an.addEventListener("hide.bs.collapse",()=>this.resetOptions()));break;case"open":this.slim.beforeOpen=()=>this.loadData();break;case"load":Promise.all([this.loadData()]);break}}get options(){return this.slim.data.data.filter(Qy)}set options(en){let nn=en;this.nullOption!==null&&(nn=[this.nullOption,...nn]);let rn=sy(nn,"value"),on=typeof rn.find(ln=>ln.value==="")!="undefined",an=rn.findIndex(ln=>ln.value==="");on&&an>=0?rn[an]=this.emptyOption:rn.unshift(this.emptyOption),this.slim.setData(rn)}resetOptions(){this.options=[this.emptyOption]}disable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")||this.slim.slim.singleSelected.container.setAttribute("disabled",""):this.slim.slim.multiSelected!==null&&(this.slim.slim.multiSelected.container.hasAttribute("disabled")||this.slim.slim.multiSelected.container.setAttribute("disabled","")),this.slim.disable()}enable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")&&this.slim.slim.singleSelected.container.removeAttribute("disabled"):this.slim.slim.multiSelected!==null&&this.slim.slim.multiSelected.container.hasAttribute("disabled")&&this.slim.slim.multiSelected.container.removeAttribute("disabled"),this.slim.enable()}addEventListeners(){let en=(0,Zy.default)(rn=>this.handleSearch(rn),300,!1);this.slim.slim.search.input.addEventListener("keyup",rn=>{if(!rn.key.match(/^(Arrow|Enter|Tab).*/))return en(rn)}),this.slim.slim.search.input.addEventListener("paste",rn=>en(rn)),this.slim.slim.list.addEventListener("scroll",()=>this.handleScroll()),this.base.addEventListener(`netbox.select.atbottom.${this.name}`,()=>this.fetchOptions(this.more,"merge")),this.base.addEventListener(`netbox.select.disabled.${this.name}`,rn=>this.handleDisableEnable(rn));let nn=new Set([...this.dynamicParams.keys(),...this.pathValues.keys()]);for(let rn of nn){let on=document.querySelector(`[name="${rn}"]`);on!==null&&on.addEventListener("change",an=>this.handleEvent(an)),this.base.addEventListener(`netbox.select.onload.${rn}`,an=>this.handleEvent(an))}}loadData(){return Fr(this,null,function*(){try{this.disable(),yield this.getOptions("replace")}catch(en){console.error(en)}finally{this.setOptionStyles(),this.enable(),this.base.dispatchEvent(this.loadEvent)}})}getPreselectedOptions(){return Array.from(this.base.options).filter(en=>en.selected).filter(en=>!(en.value==="---------"||en.innerText==="---------"))}processOptions(en,nn="merge"){return Fr(this,null,function*(){let rn=this.getPreselectedOptions(),on=rn.map(cn=>cn.getAttribute("value")).filter(ur),an=rn.map(cn=>({value:cn.value,text:cn.innerText,selected:!0,disabled:!1})),ln=[];for(let cn of en.results){let dn=cn.display;typeof cn._depth=="number"&&cn._depth>0&&(dn=`${"\u2500".repeat(cn._depth)} ${dn}`);let fn={},un=cn.id.toString(),gn,hn,pn;for(let[yn,mn]of Object.entries(cn)){if(!["id","slug"].includes(yn)&&["string","number","boolean"].includes(typeof mn)){let bn=yn.replaceAll("_","-");fn[bn]=String(mn)}this.disabledAttributes.some(bn=>bn.toLowerCase()===yn.toLowerCase())&&(typeof mn=="string"&&mn.toLowerCase()!=="false"||typeof mn=="boolean"&&mn===!0||typeof mn=="number"&&mn>0)&&(pn=!0)}on.some(yn=>this.disabledOptions.includes(yn))&&(pn=!0),on.includes(un)&&(hn=!0,pn=!1);let vn={value:un,text:dn,data:fn,style:gn,selected:hn,disabled:pn};ln=[...ln,vn]}switch(nn){case"merge":this.options=[...this.options,...ln];break;case"replace":this.options=[...an,...ln];break}ty(en)?this.more=en.next:this.more=null})}fetchOptions(en,nn="merge"){return Fr(this,null,function*(){if(typeof en=="string"){let rn=yield ry(en);if(Jo(rn))return ey(rn)?this.handleError(rn.exception,rn.error):this.handleError(`Error Fetching Options for field '${this.name}'`,rn.error);yield this.processOptions(rn,nn)}})}getOptions(en="merge"){return Fr(this,null,function*(){if(this.queryUrl.includes("{{")){this.resetOptions();return}yield this.fetchOptions(this.queryUrl,en)})}handleSearch(en){return Fr(this,null,function*(){let{value:nn}=en.target,rn=If.default.stringifyUrl({url:this.queryUrl,query:{q:nn}});yield this.fetchOptions(rn,"merge"),this.slim.data.search(nn),this.slim.render()})}handleScroll(){let en=this.slim.slim.list.scrollTop+this.slim.slim.list.offsetHeight===this.slim.slim.list.scrollHeight;this.atBottom&&!en?(this.atBottom=!1,this.base.dispatchEvent(this.bottomEvent)):!this.atBottom&&en&&(this.atBottom=!0,this.base.dispatchEvent(this.bottomEvent))}handleEvent(en){let nn=en.target;this.updateQueryParams(nn.name),this.updatePathValues(nn.name),this.updateQueryUrl(),Promise.all([this.loadData()])}handleDisableEnable(en){let nn=en.target;nn.disabled===!0?this.disable():nn.disabled===!1&&this.enable()}handleError(en,nn){Lo("danger",en,nn).show(),this.resetOptions()}handleSlimChange(){let en=this.slim.slim;en&&(en.container.classList.contains("is-invalid")||this.base.classList.contains("is-invalid"))&&(en.container.classList.remove("is-invalid"),this.base.classList.remove("is-invalid")),this.base.dispatchEvent(this.loadEvent)}updateQueryUrl(){let en={};for(let[on,an]of this.queryParams.entries())en[on]=an;let nn=this.url;for(let[on,an]of this.pathValues.entries())for(let ln of this.url.matchAll(new RegExp(`({{${on}}})`,"g")))ur(an)&&(nn=nn.replaceAll(ln[1],an.toString()));let rn=If.default.stringifyUrl({url:nn,query:en});this.queryUrl!==rn&&(this.queryUrl=rn,this.base.setAttribute("data-url",rn))}updateQueryParams(en){let nn=document.querySelector(`[name="${en}"]`);if(nn!==null){let rn=[];if(nn.multiple?rn=Array.from(nn.options).filter(on=>on.selected).map(on=>on.value):nn.value!==""&&(rn=[nn.value]),rn.length>0){this.dynamicParams.updateValue(en,rn);let on=this.dynamicParams.get(en);if(typeof on!="undefined"){let{queryParam:an,queryValue:ln}=on,cn=[];if(this.staticParams.has(an)){let dn=this.staticParams.get(an);typeof dn!="undefined"&&(cn=[...dn,...ln])}else cn=ln;cn.length>0?this.queryParams.set(an,cn):this.queryParams.delete(an)}}else{let on=this.dynamicParams.queryParam(en);on!==null&&this.queryParams.delete(on)}}}updatePathValues(en){let nn=en.replaceAll(/^id_/gi,""),rn=Er(`id_${nn}`);rn!==null&&this.url.includes("{{")&&Boolean(this.url.match(new RegExp(`({{(${en})}})`,"g")))&&(ur(rn.value)?this.pathValues.set(en,rn.value):this.pathValues.set(en,""))}getPlaceholder(){let en=this.name;if(this.base.id){let nn=document.querySelector(`label[for="${this.base.id}"]`);nn!==null&&(en=`Select ${nn.innerText.trim()}`)}return en}getDisabledOptions(){var nn;let en=[];if(Ky(this.base))try{let rn=JSON.parse((nn=this.base.getAttribute("data-query-param-exclude"))!=null?nn:"[]");en=[...en,...rn]}catch(rn){console.group(`Unable to parse data-query-param-exclude value on select element '${this.name}'`),console.warn(rn),console.groupEnd()}return en}getDisabledAttributes(){let en=[...eE],nn=this.base.getAttribute("disabled-indicator");return ur(nn)&&(en=[...en,nn]),en}getPathKeys(){for(let en of this.url.matchAll(new RegExp("{{(.+)}}","g")))this.pathValues.set(en[1],"")}getDynamicParams(){let en=this.base.getAttribute("data-dynamic-params");try{this.dynamicParams.addFromJson(en)}catch(nn){console.group(`Unable to determine dynamic query parameters for select field '${this.name}'`),console.warn(nn),console.groupEnd()}}getStaticParams(){let en=this.base.getAttribute("data-static-params");try{if(ur(en)){let nn=JSON.parse(en);if(Jy(nn))for(let{queryParam:rn,queryValue:on}of nn)Array.isArray(on)?this.staticParams.set(rn,on):this.staticParams.set(rn,[on])}}catch(nn){console.group(`Unable to determine static query parameters for select field '${this.name}'`),console.warn(nn),console.groupEnd()}}setSlimStyles(){let{width:en,height:nn}=this.slim.slim.container.getBoundingClientRect();this.base.style.opacity="0",this.base.style.width=`${en}px`,this.base.style.height=`${nn}px`,this.base.style.display="block",this.base.style.position="absolute",this.base.style.pointerEvents="none"}setOptionStyles(){for(let en of this.options)if("data"in en&&"id"in en&&typeof en.data!="undefined"&&typeof en.id!="undefined"&&"color"in en.data){let nn=en.id,rn=en.data,on=document.createElement("style"),an=`#${rn.color}`,ln=Qs(an);on.setAttribute("data-netbox",nn),on.innerHTML=` +`)}:!ln.ok&&"detail"in dn?{error:dn.detail}:dn})}function Cl(tn,en){return Fr(this,null,function*(){return yield ny(tn,"PATCH",en)})}function vI(tn){return Fr(this,null,function*(){return yield ny(tn,"GET")})}function ry(tn){return Fr(this,null,function*(){return yield vI(tn)})}function*Hn(...tn){for(let en of tn)for(let nn of document.querySelectorAll(en))nn!==null&&(yield nn)}function Er(tn){return document.getElementById(tn)}function iy(tn,en=0){let nn=en,rn=document.getElementById("content-title");rn!==null&&(nn+=rn.getBoundingClientRect().bottom);let on=tn.getBoundingClientRect().top+window.pageYOffset+nn;window.scrollTo({top:on,behavior:"smooth"})}function oy(tn){let en=[];for(let nn of tn.querySelectorAll("select"))if(nn!==null){let rn={name:nn.name,options:[]};for(let on of nn.options)on.selected&&rn.options.push(on.value);en=[...en,rn]}return en}function Xs(tn,en){tn!==null&&(typeof en=="undefined"?window.getComputedStyle(tn).display==="none"?tn.style.display="":tn.style.display="none":en==="show"?tn.style.display="":tn.style.display="none")}function fi(tn,en,nn){function rn(an){return!!(typeof nn=="string"&&an!==null&&an.matches(nn))}function on(an){if(an!==null&&an.parentElement!==null&&!rn(an)){for(let ln of an.parentElement.querySelectorAll(en))if(ln!==null)return ln;return on(an.parentElement.parentElement)}return null}return on(tn)}function Qo(tn,en,nn=null,rn=[]){let on=document.createElement(tn);if(en!==null)for(let an of Object.keys(en)){let ln=an,cn=en[ln];ln in on&&(on[ln]=cn)}nn!==null&&nn.length>0&&on.classList.add(...nn);for(let an of rn)on.appendChild(an);return on}function sy(tn,en){let nn=new Map;for(let rn of tn){let on=rn[en];nn.has(on)||nn.set(on,rn)}return Array.from(nn.values())}function bI(tn){let en=tn.target;if(en.tagName==="BUTTON"){let nn=en,rn=nn.getAttribute("return-url"),on=nn.form;on!==null&&ur(rn)&&(on.action=rn,on.submit())}}function yI(tn,en){let nn=new Set;for(let rn of en.querySelectorAll("*[name]"))rn.validity.valid?rn.classList.contains("is-invalid")&&rn.classList.remove("is-invalid"):(nn.add(rn.name),rn.classList.contains("is-invalid")||rn.classList.add("is-invalid"));if(nn.size!==0){let rn=en.elements.namedItem(Array.from(nn)[0]);iy(rn),tn.preventDefault()}}function EI(){for(let tn of Hn("button[return-url]"))tn.addEventListener("click",bI)}function ay(){for(let tn of Hn("form")){let en=tn.querySelectorAll("button[type=submit]");for(let nn of en)nn.addEventListener("click",rn=>yI(rn,tn))}EI()}function ly(){for(let tn of Hn("a.set_speed"))if(tn!==null){let en=function(nn){nn.preventDefault();let rn=tn.getAttribute("data"),on=document.getElementById(tn.target);on!==null&&rn!==null&&(on.value=rn)};tn.addEventListener("click",en)}}var Af={vlangroup_edit:{region:{hide:["id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region"]},"site group":{hide:["id_region","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_sitegroup"]},site:{hide:["id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site"]},location:{hide:["id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location"]},rack:{hide:["id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location","id_rack"]},"cluster group":{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_cluster"],show:["id_clustergroup"]},cluster:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack"],show:["id_clustergroup","id_cluster"]},default:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:[]}}};function Cf(tn,en){var nn;for(let rn of Hn(tn)){let on=(nn=rn.parentElement)==null?void 0:nn.parentElement;on!==null&&(en==="show"?Xs(on,"show"):Xs(on,"hide"))}}function cy(tn,en){let nn=en.options[en.selectedIndex].innerText.toLowerCase();for(let[rn,on]of Object.entries(Af[tn]))if(nn.endsWith(rn)){for(let an of on.hide)Cf(`#${an}`,"hide");for(let an of on.show)Cf(`#${an}`,"show");break}else for(let an of Af[tn].default.hide)Cf(`#${an}`,"hide")}function uy(){for(let tn of Object.keys(Af))for(let en of Hn(`html[data-netbox-url-name="${tn}"] #id_scope_type`))cy(tn,en),en.addEventListener("change",()=>cy(tn,en))}function _I(tn){var nn,rn;let en=(rn=(nn=tn==null?void 0:tn.parentElement)==null?void 0:nn.parentElement)!=null?rn:null;return en!==null&&en.classList.contains("row")?en:null}function di(tn,en){let nn=_I(tn);if(tn!==null&&nn!==null){Xs(nn,en);let rn=new Event(`netbox.select.disabled.${tn.name}`);switch(en){case"hide":tn.disabled=!0,tn.dispatchEvent(rn);break;case"show":tn.disabled=!1,tn.dispatchEvent(rn)}}}function SI(){let tn=[Er("id_tagged_vlans"),Er("id_untagged_vlan"),Er("id_vlan_group")];if(Ks(tn)){let[en,nn]=tn;Gs(nn),Gs(en);for(let rn of tn)di(rn,"hide")}}function wI(){let tn=[Er("id_tagged_vlans"),Er("id_untagged_vlan"),Er("id_vlan_group")];if(Ks(tn)){let[en,nn,rn]=tn;Gs(en),di(rn,"show"),di(nn,"show"),di(en,"hide")}}function xI(){let tn=[Er("id_tagged_vlans"),Er("id_untagged_vlan"),Er("id_vlan_group")];if(Ks(tn)){let[en,nn,rn]=tn;di(en,"show"),di(rn,"show"),di(nn,"show")}}function TI(){let tn=[Er("id_tagged_vlans"),Er("id_untagged_vlan"),Er("id_vlan_group")];if(Ks(tn)){let[en,nn,rn]=tn;Gs(en),di(rn,"show"),di(nn,"show"),di(en,"hide")}}function fy(tn){switch(tn.value){case"access":wI();break;case"tagged":xI();break;case"tagged-all":TI();break;case"":SI();break}}function dy(){let tn=Er("id_mode");tn!==null&&(tn.addEventListener("change",()=>fy(tn)),fy(tn))}function hy(){for(let tn of[ay,ly,uy,dy])tn()}var Ey=Rr(yy());window.Collapse=qr;window.Modal=Fi;window.Popover=po;window.Toast=Ai;window.Tooltip=oi;function OI(){for(let tn of Hn(".masonry"))new Ey.default(tn,{itemSelector:".masonry-item",percentPosition:!0})}function AI(){for(let tn of Hn('[data-bs-toggle="tooltip"]'))new oi(tn,{container:"body"})}function CI(){for(let tn of Hn('[data-bs-toggle="modal"]'))new Fi(tn)}function Lo(tn,en,nn,rn){let on="mdi-alert";switch(tn){case"warning":on="mdi-alert";break;case"success":on="mdi-check-circle";break;case"info":on="mdi-information";break;case"danger":on="mdi-alert";break}let an=document.createElement("div");an.setAttribute("class","toast-container position-fixed bottom-0 end-0 m-3");let ln=document.createElement("div");ln.setAttribute("class",`toast bg-${tn}`),ln.setAttribute("role","alert"),ln.setAttribute("aria-live","assertive"),ln.setAttribute("aria-atomic","true");let cn=document.createElement("div");cn.setAttribute("class",`toast-header bg-${tn} text-body`);let dn=document.createElement("i");dn.setAttribute("class",`mdi ${on}`);let fn=document.createElement("strong");fn.setAttribute("class","me-auto ms-1"),fn.innerText=en;let un=document.createElement("button");un.setAttribute("type","button"),un.setAttribute("class","btn-close"),un.setAttribute("data-bs-dismiss","toast"),un.setAttribute("aria-label","Close");let gn=document.createElement("div");if(gn.setAttribute("class","toast-body"),cn.appendChild(dn),cn.appendChild(fn),typeof rn!="undefined"){let pn=document.createElement("small");pn.setAttribute("class","text-muted"),cn.appendChild(pn)}return cn.appendChild(un),gn.innerText=nn.trim(),ln.appendChild(cn),ln.appendChild(gn),an.appendChild(ln),document.body.appendChild(an),new Ai(ln)}function LI(){let{hash:tn}=location;if(tn&&tn.match(/^#tab_.+$/)){let en=tn.replace("tab_","");for(let nn of Hn(`ul.nav.nav-tabs .nav-link[data-bs-target="${en}"]`))new go(nn).show()}}function DI(){let tn=document.querySelectorAll(".sidebar .accordion-item");function en(nn){for(let rn of tn)rn!==nn?rn.classList.remove("is-open"):rn.classList.toggle("is-open")}for(let nn of tn)for(let rn of nn.querySelectorAll(".accordion-button"))rn.addEventListener("click",()=>{en(nn)})}function MI(){for(let tn of Hn("a.image-preview")){let en=`${Math.round(window.innerWidth/4)}px`,nn=Qo("img",{src:tn.href});nn.style.maxWidth=en;let rn=Qo("div",null,null,[nn]);new po(tn,{customClass:"image-preview-popover",trigger:"hover",html:!0,content:rn})}}function _y(){for(let tn of[AI,CI,OI,LI,MI,DI])tn()}function II(tn,en){var cn;let nn=tn.currentTarget,rn=fi(nn,"span.search-obj-selected"),on=fi(nn,"input.search-obj-type"),an=nn.getAttribute("data-search-value"),ln="";rn!==null&&on!==null&&(ur(an)&&ln!==an?(ln=an,rn.innerHTML=(cn=en.textContent)!=null?cn:"Error",on.value=an):(ln="",rn.innerHTML="All Objects",on.value=""))}function PI(){for(let tn of Hn(".search-obj-selector"))for(let en of tn.querySelectorAll("li > button.dropdown-item"))en.addEventListener("click",nn=>II(nn,en))}function Sy(){for(let tn of[PI])tn()}function wy(tn,en,nn){return Math.min(Math.max(tn,nn),en)}var Zo=class extends Error{constructor(en){super(`Failed to parse color: "${en}"`)}};function kI(tn){if(typeof tn!="string")throw new Zo(tn);if(tn.trim().toLowerCase()==="transparent")return[0,0,0,0];let en=tn.trim();en=BI.test(tn)?function(ln){let cn=ln.toLowerCase().trim(),dn=NI[function(fn){let un=5381,gn=fn.length;for(;gn;)un=33*un^fn.charCodeAt(--gn);return(un>>>0)%2341}(cn)];if(!dn)throw new Zo(ln);return`#${dn}`}(tn):tn;let nn=RI.exec(en);if(nn){let ln=Array.from(nn).slice(1);return[...ln.slice(0,3).map(cn=>parseInt(Js(cn,2),16)),parseInt(Js(ln[3]||"f",2),16)/255]}let rn=jI.exec(en);if(rn){let ln=Array.from(rn).slice(1);return[...ln.slice(0,3).map(cn=>parseInt(cn,16)),parseInt(ln[3]||"ff",16)/255]}let on=qI.exec(en);if(on){let ln=Array.from(on).slice(1);return[...ln.slice(0,3).map(cn=>parseInt(cn,10)),parseFloat(ln[3]||"1")]}let an=HI.exec(en);if(an){let[ln,cn,dn,fn]=Array.from(an).slice(1).map(parseFloat);if(wy(0,100,cn)!==cn)throw new Zo(tn);if(wy(0,100,dn)!==dn)throw new Zo(tn);return[...FI(ln,cn,dn),fn||1]}throw new Zo(tn)}var xy=tn=>parseInt(tn.replace(/_/g,""),36),NI="1q29ehhb 1n09sgk7 1kl1ekf_ _yl4zsno 16z9eiv3 1p29lhp8 _bd9zg04 17u0____ _iw9zhe5 _to73___ _r45e31e _7l6g016 _jh8ouiv _zn3qba8 1jy4zshs 11u87k0u 1ro9yvyo 1aj3xael 1gz9zjz0 _3w8l4xo 1bf1ekf_ _ke3v___ _4rrkb__ 13j776yz _646mbhl _nrjr4__ _le6mbhl 1n37ehkb _m75f91n _qj3bzfz 1939yygw 11i5z6x8 _1k5f8xs 1509441m 15t5lwgf _ae2th1n _tg1ugcv 1lp1ugcv 16e14up_ _h55rw7n _ny9yavn _7a11xb_ 1ih442g9 _pv442g9 1mv16xof 14e6y7tu 1oo9zkds 17d1cisi _4v9y70f _y98m8kc 1019pq0v 12o9zda8 _348j4f4 1et50i2o _8epa8__ _ts6senj 1o350i2o 1mi9eiuo 1259yrp0 1ln80gnw _632xcoy 1cn9zldc _f29edu4 1n490c8q _9f9ziet 1b94vk74 _m49zkct 1kz6s73a 1eu9dtog _q58s1rz 1dy9sjiq __u89jo3 _aj5nkwg _ld89jo3 13h9z6wx _qa9z2ii _l119xgq _bs5arju 1hj4nwk9 1qt4nwk9 1ge6wau6 14j9zlcw 11p1edc_ _ms1zcxe _439shk6 _jt9y70f _754zsow 1la40eju _oq5p___ _x279qkz 1fa5r3rv _yd2d9ip _424tcku _8y1di2_ _zi2uabw _yy7rn9h 12yz980_ __39ljp6 1b59zg0x _n39zfzp 1fy9zest _b33k___ _hp9wq92 1il50hz4 _io472ub _lj9z3eo 19z9ykg0 _8t8iu3a 12b9bl4a 1ak5yw0o _896v4ku _tb8k8lv _s59zi6t _c09ze0p 1lg80oqn 1id9z8wb _238nba5 1kq6wgdi _154zssg _tn3zk49 _da9y6tc 1sg7cv4f _r12jvtt 1gq5fmkz 1cs9rvci _lp9jn1c _xw1tdnb 13f9zje6 16f6973h _vo7ir40 _bt5arjf _rc45e4t _hr4e100 10v4e100 _hc9zke2 _w91egv_ _sj2r1kk 13c87yx8 _vqpds__ _ni8ggk8 _tj9yqfb 1ia2j4r4 _7x9b10u 1fc9ld4j 1eq9zldr _5j9lhpx _ez9zl6o _md61fzm".split(" ").reduce((tn,en)=>{let nn=xy(en.substring(0,3)),rn=xy(en.substring(3)).toString(16),on="";for(let an=0;an<6-rn.length;an++)on+="0";return tn[nn]=`${on}${rn}`,tn},{}),Js=(tn,en)=>Array.from(Array(en)).map(()=>tn).join(""),RI=new RegExp(`^#${Js("([a-f0-9])",3)}([a-f0-9])?$`,"i"),jI=new RegExp(`^#${Js("([a-f0-9]{2})",3)}([a-f0-9]{2})?$`,"i"),qI=new RegExp(`^rgba?\\(\\s*(\\d+)\\s*${Js(",\\s*(\\d+)\\s*",2)}(?:,\\s*([\\d.]+))?\\s*\\)$`,"i"),HI=/^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)$/i,BI=/^[a-z]+$/i,Ty=tn=>Math.round(255*tn),FI=(tn,en,nn)=>{let rn=nn/100;if(en===0)return[rn,rn,rn].map(Ty);let on=(tn%360+360)%360/60,an=(1-Math.abs(2*rn-1))*(en/100),ln=an*(1-Math.abs(on%2-1)),cn=0,dn=0,fn=0;on>=0&&on<1?(cn=an,dn=ln):on>=1&&on<2?(cn=ln,dn=an):on>=2&&on<3?(dn=an,fn=ln):on>=3&&on<4?(dn=ln,fn=an):on>=4&&on<5?(cn=ln,fn=an):on>=5&&on<6&&(cn=an,fn=ln);let un=rn-an/2;return[cn+un,dn+un,fn+un].map(Ty)};function $I(tn){if(tn==="transparent")return 0;function en(an){let ln=an/255;return ln<=.03928?ln/12.92:Math.pow((ln+.055)/1.055,2.4)}let[nn,rn,on]=kI(tn);return .2126*en(nn)+.7152*en(rn)+.0722*en(on)}function zI(tn){return $I(tn)>.179}function Qs(tn){return zI(tn)?"#000":"#fff"}var Zy=Rr(Ay()),If=Rr(Uy());var jl={};(function(tn,en){typeof jl=="object"&&typeof module=="object"?module.exports=en():typeof define=="function"&&define.amd?define([],en):typeof jl=="object"?jl.SlimSelect=en():tn.SlimSelect=en()})(window,function(){return nn={},tn.m=en=[function(rn,on,an){"use strict";function ln(dn,fn){fn=fn||{bubbles:!1,cancelable:!1,detail:void 0};var un=document.createEvent("CustomEvent");return un.initCustomEvent(dn,fn.bubbles,fn.cancelable,fn.detail),un}var cn;on.__esModule=!0,on.hasClassInTree=function(dn,fn){function un(gn,hn){return hn&&gn&&gn.classList&&gn.classList.contains(hn)?gn:null}return un(dn,fn)||function gn(hn,pn){return hn&&hn!==document?un(hn,pn)?hn:gn(hn.parentNode,pn):null}(dn,fn)},on.ensureElementInView=function(dn,fn){var un=dn.scrollTop+dn.offsetTop,gn=un+dn.clientHeight,hn=fn.offsetTop,pn=hn+fn.clientHeight;hn=window.innerHeight?"above":un?fn:"below"},on.debounce=function(dn,fn,un){var gn;return fn===void 0&&(fn=100),un===void 0&&(un=!1),function(){for(var hn=[],pn=0;pn[^<>]*'+yn+"")},on.kebabCase=function(dn){var fn=dn.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,function(un){return"-"+un.toLowerCase()});return dn[0]===dn[0].toUpperCase()?fn.substring(1):fn},typeof(cn=window).CustomEvent!="function"&&(ln.prototype=cn.Event.prototype,cn.CustomEvent=ln)},function(rn,on,an){"use strict";on.__esModule=!0;var ln=(cn.prototype.newOption=function(fn){return{id:fn.id?fn.id:String(Math.floor(1e8*Math.random())),value:fn.value?fn.value:"",text:fn.text?fn.text:"",innerHTML:fn.innerHTML?fn.innerHTML:"",selected:!!fn.selected&&fn.selected,display:fn.display===void 0||fn.display,disabled:!!fn.disabled&&fn.disabled,placeholder:!!fn.placeholder&&fn.placeholder,class:fn.class?fn.class:void 0,data:fn.data?fn.data:{},mandatory:!!fn.mandatory&&fn.mandatory}},cn.prototype.add=function(fn){this.data.push({id:String(Math.floor(1e8*Math.random())),value:fn.value,text:fn.text,innerHTML:"",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:fn.mandatory,data:{}})},cn.prototype.parseSelectData=function(){this.data=[];for(var fn=0,un=this.main.select.element.childNodes;fn',placeholder:this.placeholder,searchPlaceholder:"Filter",onChange:()=>this.handleSlimChange()}),this.getStaticParams(),this.getDynamicParams(),this.getPathKeys();for(let[ln,cn]of this.staticParams.entries())this.queryParams.set(ln,cn);for(let ln of this.dynamicParams.keys())this.updateQueryParams(ln);for(let ln of this.pathValues.keys())this.updatePathValues(ln);this.queryParams.set("brief",[!0]),this.updateQueryUrl(),this.resetClasses(),this.setSlimStyles(),this.initResetButton(),this.initRefreshButton(),this.addEventListeners();let on=this.base.getAttribute("data-fetch-trigger"),an=this.base.closest(".content-container .collapse");switch(Gy(on)?this.trigger=on:an!==null?this.trigger="collapse":this.trigger="open",this.trigger){case"collapse":an!==null&&(an.addEventListener("show.bs.collapse",()=>this.loadData()),an.addEventListener("hide.bs.collapse",()=>this.resetOptions()));break;case"open":this.slim.beforeOpen=()=>this.loadData();break;case"load":Promise.all([this.loadData()]);break}}get options(){return this.slim.data.data.filter(Qy)}set options(en){let nn=en;this.nullOption!==null&&(nn=[this.nullOption,...nn]);let rn=sy(nn,"value"),on=typeof rn.find(ln=>ln.value==="")!="undefined",an=rn.findIndex(ln=>ln.value==="");on&&an>=0?rn[an]=this.emptyOption:rn.unshift(this.emptyOption),this.slim.setData(rn)}resetOptions(){this.options=[this.emptyOption]}disable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")||this.slim.slim.singleSelected.container.setAttribute("disabled",""):this.slim.slim.multiSelected!==null&&(this.slim.slim.multiSelected.container.hasAttribute("disabled")||this.slim.slim.multiSelected.container.setAttribute("disabled","")),this.slim.disable()}enable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")&&this.slim.slim.singleSelected.container.removeAttribute("disabled"):this.slim.slim.multiSelected!==null&&this.slim.slim.multiSelected.container.hasAttribute("disabled")&&this.slim.slim.multiSelected.container.removeAttribute("disabled"),this.slim.enable()}addEventListeners(){let en=(0,Zy.default)(rn=>this.handleSearch(rn),300,!1);this.slim.slim.search.input.addEventListener("keyup",rn=>{if(!rn.key.match(/^(Arrow|Enter|Tab).*/))return en(rn)}),this.slim.slim.search.input.addEventListener("paste",rn=>en(rn)),this.slim.slim.list.addEventListener("scroll",()=>this.handleScroll()),this.base.addEventListener(`netbox.select.atbottom.${this.name}`,()=>this.fetchOptions(this.more,"merge")),this.base.addEventListener(`netbox.select.disabled.${this.name}`,rn=>this.handleDisableEnable(rn));let nn=new Set([...this.dynamicParams.keys(),...this.pathValues.keys()]);for(let rn of nn){let on=document.querySelector(`[name="${rn}"]`);on!==null&&on.addEventListener("change",an=>this.handleEvent(an)),this.base.addEventListener(`netbox.select.onload.${rn}`,an=>this.handleEvent(an))}}loadData(){return Fr(this,null,function*(){try{this.disable(),yield this.getOptions("replace")}catch(en){console.error(en)}finally{this.setOptionStyles(),this.enable(),this.base.dispatchEvent(this.loadEvent)}})}getPreselectedOptions(){return Array.from(this.base.options).filter(en=>en.selected).filter(en=>!(en.value==="---------"||en.innerText==="---------"))}processOptions(en,nn="merge"){return Fr(this,null,function*(){let rn=this.getPreselectedOptions(),on=rn.map(cn=>cn.getAttribute("value")).filter(ur),an=rn.map(cn=>({value:cn.value,text:cn.innerText,selected:!0,disabled:!1})),ln=[];for(let cn of en.results){let dn=cn.display;typeof cn._depth=="number"&&cn._depth>0&&(dn=`${"\u2500".repeat(cn._depth)} ${dn}`);let fn={},un=cn.id.toString(),gn,hn,pn;for(let[yn,mn]of Object.entries(cn)){if(!["id","slug"].includes(yn)&&["string","number","boolean"].includes(typeof mn)){let bn=yn.replaceAll("_","-");fn[bn]=String(mn)}this.disabledAttributes.some(bn=>bn.toLowerCase()===yn.toLowerCase())&&(typeof mn=="string"&&mn.toLowerCase()!=="false"||typeof mn=="boolean"&&mn===!0||typeof mn=="number"&&mn>0)&&(pn=!0)}on.some(yn=>this.disabledOptions.includes(yn))&&(pn=!0),on.includes(un)&&(hn=!0,pn=!1);let vn={value:un,text:dn,data:fn,style:gn,selected:hn,disabled:pn};ln=[...ln,vn]}switch(nn){case"merge":this.options=[...this.options,...ln];break;case"replace":this.options=[...an,...ln];break}ty(en)?this.more=en.next:this.more=null})}fetchOptions(en,nn="merge"){return Fr(this,null,function*(){if(typeof en=="string"){let rn=yield ry(en);if(Jo(rn))return ey(rn)?this.handleError(rn.exception,rn.error):this.handleError(`Error Fetching Options for field '${this.name}'`,rn.error);yield this.processOptions(rn,nn)}})}getOptions(en="merge"){return Fr(this,null,function*(){if(this.queryUrl.includes("{{")){this.resetOptions();return}yield this.fetchOptions(this.queryUrl,en)})}handleSearch(en){return Fr(this,null,function*(){let{value:nn}=en.target,rn=If.default.stringifyUrl({url:this.queryUrl,query:{q:nn}});yield this.fetchOptions(rn,"merge"),this.slim.data.search(nn),this.slim.render()})}handleScroll(){let en=this.slim.slim.list.scrollTop+this.slim.slim.list.offsetHeight===this.slim.slim.list.scrollHeight;this.atBottom&&!en?(this.atBottom=!1,this.base.dispatchEvent(this.bottomEvent)):!this.atBottom&&en&&(this.atBottom=!0,this.base.dispatchEvent(this.bottomEvent))}handleEvent(en){let nn=en.target;this.updateQueryParams(nn.name),this.updatePathValues(nn.name),this.updateQueryUrl(),Promise.all([this.loadData()])}handleDisableEnable(en){let nn=en.target;nn.disabled===!0?this.disable():nn.disabled===!1&&this.enable()}handleError(en,nn){Lo("danger",en,nn).show(),this.resetOptions()}handleSlimChange(){let en=this.slim.slim;en&&(en.container.classList.contains("is-invalid")||this.base.classList.contains("is-invalid"))&&(en.container.classList.remove("is-invalid"),this.base.classList.remove("is-invalid")),this.base.dispatchEvent(this.loadEvent)}updateQueryUrl(){let en={};for(let[on,an]of this.queryParams.entries())en[on]=an;let nn=this.url;for(let[on,an]of this.pathValues.entries())for(let ln of this.url.matchAll(new RegExp(`({{${on}}})`,"g")))ur(an)&&(nn=nn.replaceAll(ln[1],an.toString()));let rn=If.default.stringifyUrl({url:nn,query:en});this.queryUrl!==rn&&(this.queryUrl=rn,this.base.setAttribute("data-url",rn))}updateQueryParams(en){let nn=document.querySelector(`[name="${en}"]`);if(nn!==null){let rn=[];if(nn.multiple?rn=Array.from(nn.options).filter(on=>on.selected).map(on=>on.value):nn.value!==""&&(rn=[nn.value]),rn.length>0){this.dynamicParams.updateValue(en,rn);let on=this.dynamicParams.get(en);if(typeof on!="undefined"){let{queryParam:an,queryValue:ln}=on,cn=[];if(this.staticParams.has(an)){let dn=this.staticParams.get(an);typeof dn!="undefined"&&(cn=[...dn,...ln])}else cn=ln;cn.length>0?this.queryParams.set(an,cn):this.queryParams.delete(an)}}else{let on=this.dynamicParams.queryParam(en);on!==null&&this.queryParams.delete(on)}}}updatePathValues(en){let nn=en.replaceAll(/^id_/gi,""),rn=Er(`id_${nn}`);rn!==null&&this.url.includes("{{")&&Boolean(this.url.match(new RegExp(`({{(${en})}})`,"g")))&&(ur(rn.value)?this.pathValues.set(en,rn.value):this.pathValues.set(en,""))}getPlaceholder(){let en=this.name;if(this.base.id){let nn=document.querySelector(`label[for="${this.base.id}"]`);nn!==null&&(en=`Select ${nn.innerText.trim()}`)}return en}getDisabledOptions(){var nn;let en=[];if(Ky(this.base))try{let rn=JSON.parse((nn=this.base.getAttribute("data-query-param-exclude"))!=null?nn:"[]");en=[...en,...rn]}catch(rn){console.group(`Unable to parse data-query-param-exclude value on select element '${this.name}'`),console.warn(rn),console.groupEnd()}return en}getDisabledAttributes(){let en=[...eE],nn=this.base.getAttribute("disabled-indicator");return ur(nn)&&(en=[...en,nn]),en}getPathKeys(){for(let en of this.url.matchAll(new RegExp("{{(.+)}}","g")))this.pathValues.set(en[1],"")}getDynamicParams(){let en=this.base.getAttribute("data-dynamic-params");try{this.dynamicParams.addFromJson(en)}catch(nn){console.group(`Unable to determine dynamic query parameters for select field '${this.name}'`),console.warn(nn),console.groupEnd()}}getStaticParams(){let en=this.base.getAttribute("data-static-params");try{if(ur(en)){let nn=JSON.parse(en);if(Jy(nn))for(let{queryParam:rn,queryValue:on}of nn)Array.isArray(on)?this.staticParams.set(rn,on):this.staticParams.set(rn,[on])}}catch(nn){console.group(`Unable to determine static query parameters for select field '${this.name}'`),console.warn(nn),console.groupEnd()}}setSlimStyles(){let{width:en,height:nn}=this.slim.slim.container.getBoundingClientRect();this.base.style.opacity="0",this.base.style.width=`${en}px`,this.base.style.height=`${nn}px`,this.base.style.display="block",this.base.style.position="absolute",this.base.style.pointerEvents="none"}setOptionStyles(){for(let en of this.options)if("data"in en&&"id"in en&&typeof en.data!="undefined"&&typeof en.id!="undefined"&&"color"in en.data){let nn=en.id,rn=en.data,on=document.createElement("style"),an=`#${rn.color}`,ln=Qs(an);on.setAttribute("data-netbox",nn),on.innerHTML=` div.ss-values div.ss-value[data-id="${nn}"], div.ss-list div.ss-option:not(.ss-disabled)[data-id="${nn}"] { diff --git a/netbox/project-static/src/select/api/apiSelect.ts b/netbox/project-static/src/select/api/apiSelect.ts index 032fc83fa..f24c3fa5b 100644 --- a/netbox/project-static/src/select/api/apiSelect.ts +++ b/netbox/project-static/src/select/api/apiSelect.ts @@ -251,7 +251,7 @@ export class APISelect { } else if (collapse !== null) { this.trigger = 'collapse'; } else { - this.trigger = 'load'; + this.trigger = 'open'; } switch (this.trigger) { diff --git a/netbox/templates/base/layout.html b/netbox/templates/base/layout.html index a207558cc..7b1597bf0 100644 --- a/netbox/templates/base/layout.html +++ b/netbox/templates/base/layout.html @@ -20,7 +20,7 @@ {# Top bar #} -