diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/FodyWeavers.xml b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/FodyWeavers.xml deleted file mode 100644 index 1715698cc..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/FodyWeavers.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/FodyWeavers.xsd b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/FodyWeavers.xsd deleted file mode 100644 index 3f3946e28..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/FodyWeavers.xsd +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. - - - - - A comma-separated list of error codes that can be safely ignored in assembly verification. - - - - - 'false' to turn off automatic generation of the XML Schema file. - - - - - \ No newline at end of file diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN.Abp.Localization.Persistence.csproj b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN.Abp.Localization.Persistence.csproj deleted file mode 100644 index dfc87bd25..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN.Abp.Localization.Persistence.csproj +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - netstandard2.0;netstandard2.1;net8.0;net9.0 - LINGYUN.Abp.Localization.Persistence - LINGYUN.Abp.Localization.Persistence - false - false - false - - - - - - - - diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/AbpLocalizationPersistenceModule.cs b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/AbpLocalizationPersistenceModule.cs deleted file mode 100644 index a98762376..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/AbpLocalizationPersistenceModule.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Microsoft.Extensions.DependencyInjection; -using Volo.Abp.Localization; -using Volo.Abp.Modularity; - -namespace LINGYUN.Abp.Localization.Persistence; - -[DependsOn( - typeof(AbpLocalizationModule))] -public class AbpLocalizationPersistenceModule : AbpModule -{ - public override void ConfigureServices(ServiceConfigurationContext context) - { - context.Services.AddHostedService(); - - Configure(options => - { - options.GlobalContributors.Add(); - }); - } -} diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/AbpLocalizationPersistenceOptions.cs b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/AbpLocalizationPersistenceOptions.cs deleted file mode 100644 index d195ca8e7..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/AbpLocalizationPersistenceOptions.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using Volo.Abp.Localization; - -namespace LINGYUN.Abp.Localization.Persistence; - -public class AbpLocalizationPersistenceOptions -{ - public bool SaveStaticLocalizationsToPersistence { get; set; } - - public HashSet SaveToPersistenceResources { get; } - - public AbpLocalizationPersistenceOptions() - { - SaveStaticLocalizationsToPersistence = true; - - SaveToPersistenceResources = new HashSet(); - } - - public void AddPersistenceResource() - { - AddPersistenceResource(typeof(TResource)); - } - - public void AddPersistenceResource(Type resourceType) - { - var resourceName = LocalizationResourceNameAttribute.GetName(resourceType); - if (SaveToPersistenceResources.Contains(resourceName)) - { - return; - } - - SaveToPersistenceResources.Add(resourceName); - } -} diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/DefaultStaticLocalizationSaver.cs b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/DefaultStaticLocalizationSaver.cs deleted file mode 100644 index ba1c648bd..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/DefaultStaticLocalizationSaver.cs +++ /dev/null @@ -1,135 +0,0 @@ -using Microsoft.Extensions.Localization; -using Microsoft.Extensions.Options; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Localization; -using Volo.Abp.Uow; - -namespace LINGYUN.Abp.Localization.Persistence; - -[Dependency(ReplaceServices = true)] -public class DefaultStaticLocalizationSaver : IStaticLocalizationSaver, ITransientDependency -{ - protected ILocalizationPersistenceWriter LocalizationPersistenceWriter { get; } - - protected AbpLocalizationOptions LocalizationOptions { get; } - protected IServiceProvider ServiceProvider { get; } - protected AbpLocalizationPersistenceOptions LocalizationPersistenceOptions { get; } - - public DefaultStaticLocalizationSaver( - IServiceProvider serviceProvider, - ILocalizationPersistenceWriter localizationPersistenceWriter, - IOptions localizationOptions, - IOptions localizationPersistenceOptions) - { - ServiceProvider = serviceProvider; - LocalizationPersistenceWriter = localizationPersistenceWriter; - LocalizationOptions = localizationOptions.Value; - LocalizationPersistenceOptions = localizationPersistenceOptions.Value; - } - - [UnitOfWork] - public async virtual Task SaveAsync() - { - if (!LocalizationPersistenceOptions.SaveStaticLocalizationsToPersistence) - { - return; - } - - var canWriterTexts = new List(); - - foreach (var localizationResource in LocalizationOptions.Resources) - { - if (ShouldSaveToPersistence(localizationResource.Value)) - { - if (!await LocalizationPersistenceWriter.WriteResourceAsync(localizationResource.Value)) - { - continue; - } - - foreach (var language in LocalizationOptions.Languages) - { - if (!await LocalizationPersistenceWriter.WriteLanguageAsync(language)) - { - continue; - } - - using (CultureHelper.Use(language.CultureName, language.UiCultureName)) - { - await FillCanWriterTextxAsync(localizationResource.Value, language, canWriterTexts); - } - } - } - } - - if (canWriterTexts.Any()) - { - await LocalizationPersistenceWriter.WriteTextsAsync(canWriterTexts); - } - } - - protected virtual bool ShouldSaveToPersistence(LocalizationResourceBase localizationResource) - { - var saveResource = false; - if (localizationResource.Contributors.Exists(IsMatchSaveToPersistenceContributor)) - { - saveResource = true; - } - if (!saveResource) - { - saveResource = LocalizationPersistenceOptions - .SaveToPersistenceResources - .Contains(localizationResource.ResourceName); - } - - return saveResource; - } - - protected virtual bool IsMatchSaveToPersistenceContributor(ILocalizationResourceContributor contributor) - { - return typeof(LocalizationSaveToPersistenceContributor).IsAssignableFrom(contributor.GetType()); - } - - protected async virtual Task FillCanWriterTextxAsync( - LocalizationResourceBase localizationResource, - LanguageInfo language, - List canWriterTexts) - { - var fillTexts = new Dictionary(); - var context = new LocalizationResourceInitializationContext(localizationResource, ServiceProvider); - foreach (var contributor in localizationResource.Contributors) - { - if (contributor.IsDynamic) - { - continue; - } - - contributor.Initialize(context); - - await contributor.FillAsync(language.CultureName, fillTexts); - } - - var existsKeys = await LocalizationPersistenceWriter.GetExistsTextsAsync( - localizationResource.ResourceName, - language.CultureName, - fillTexts.Values.Select(x => x.Name)); - - var notExistsKeys = fillTexts.Values.Where(x => !existsKeys.Contains(x.Name)); - - foreach (var notExistsKey in notExistsKeys) - { - if (!canWriterTexts.Any(x => x.CultureName == language.CultureName && x.Name == notExistsKey.Name)) - { - canWriterTexts.Add( - new LocalizableStringText( - localizationResource.ResourceName, - language.CultureName, - notExistsKey.Name, - notExistsKey.Value)); - } - } - } -} diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/ILocalizationPersistenceReader.cs b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/ILocalizationPersistenceReader.cs deleted file mode 100644 index 92f9cbd39..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/ILocalizationPersistenceReader.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Microsoft.Extensions.Localization; -using System.Collections.Generic; -using System.Threading.Tasks; - -namespace LINGYUN.Abp.Localization.Persistence; - -public interface ILocalizationPersistenceReader -{ - LocalizedString GetOrNull(string resourceName, string cultureName, string name); - - void Fill(string resourceName, string cultureName, Dictionary dictionary); - - Task FillAsync(string resourceName, string cultureName, Dictionary dictionary); - - Task> GetSupportedCulturesAsync(); -} diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/ILocalizationPersistenceWriter.cs b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/ILocalizationPersistenceWriter.cs deleted file mode 100644 index 6ad174c73..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/ILocalizationPersistenceWriter.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; -using Volo.Abp.Localization; - -namespace LINGYUN.Abp.Localization.Persistence; -public interface ILocalizationPersistenceWriter -{ - Task WriteLanguageAsync( - LanguageInfo language, - CancellationToken cancellationToken = default); - - Task WriteResourceAsync( - LocalizationResourceBase resource, - CancellationToken cancellationToken = default); - - Task> GetExistsTextsAsync( - string resourceName, - string cultureName, - IEnumerable keys, - CancellationToken cancellationToken = default); - - Task WriteTextsAsync( - IEnumerable texts, - CancellationToken cancellationToken = default); -} diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/LocalizableStringText.cs b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/LocalizableStringText.cs deleted file mode 100644 index b89ccffe7..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/LocalizableStringText.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace LINGYUN.Abp.Localization.Persistence; -public class LocalizableStringText -{ - public LocalizableStringText( - string resourceName, - string cultureName, - string name, - string value) - { - ResourceName = resourceName; - CultureName = cultureName; - Name = name; - Value = value; - } - - public string ResourceName { get; set; } - public string CultureName { get; set; } - public string Name { get; set; } - public string Value { get; set; } - public override string ToString() - { - return $"[R]:{ResourceName},[C]:{CultureName ?? ""},[N]:{Name},[V]:{Value ?? ""}"; - } -} diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/LocalizationPersistenceContributor.cs b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/LocalizationPersistenceContributor.cs deleted file mode 100644 index be4976dcd..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/LocalizationPersistenceContributor.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Localization; -using System.Collections.Generic; -using System.Threading.Tasks; -using Volo.Abp.Localization; - -namespace LINGYUN.Abp.Localization.Persistence; - -public class LocalizationPersistenceContributor : ILocalizationResourceContributor -{ - public bool IsDynamic => true; - - private LocalizationResourceBase _resource; - private ILocalizationPersistenceReader _persistenceSupport; - public void Initialize(LocalizationResourceInitializationContext context) - { - _resource = context.Resource; - _persistenceSupport = context.ServiceProvider.GetRequiredService(); - } - - public virtual void Fill(string cultureName, Dictionary dictionary) - { - _persistenceSupport.Fill(_resource.ResourceName, cultureName, dictionary); - } - - public async virtual Task FillAsync(string cultureName, Dictionary dictionary) - { - await _persistenceSupport.FillAsync(_resource.ResourceName, cultureName, dictionary); - } - - public virtual LocalizedString GetOrNull(string cultureName, string name) - { - return _persistenceSupport.GetOrNull(_resource.ResourceName, cultureName, name); - } - - public async virtual Task> GetSupportedCulturesAsync() - { - return await _persistenceSupport.GetSupportedCulturesAsync(); - } -} diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/LocalizationSaveToPersistenceContributor.cs b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/LocalizationSaveToPersistenceContributor.cs deleted file mode 100644 index 46cbcf485..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/LocalizationSaveToPersistenceContributor.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Microsoft.Extensions.Localization; -using System.Collections.Generic; -using System.Threading.Tasks; -using Volo.Abp.Localization; - -namespace LINGYUN.Abp.Localization.Persistence; - -/// -/// 空接口, 使用此提供者可持久化本地化资源到持久设施 -/// -public class LocalizationSaveToPersistenceContributor : ILocalizationResourceContributor -{ - public bool IsDynamic => true; - - public void Fill(string cultureName, Dictionary dictionary) - { - } - - public Task FillAsync(string cultureName, Dictionary dictionary) - { - return Task.CompletedTask; - } - - public LocalizedString GetOrNull(string cultureName, string name) - { - return null; - } - - public Task> GetSupportedCulturesAsync() - { - IEnumerable emptyCultures = new string[0]; - - return Task.FromResult(emptyCultures); - } - - public void Initialize(LocalizationResourceInitializationContext context) - { - } -} diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/NoneLocalizationPersistenceReader.cs b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/NoneLocalizationPersistenceReader.cs deleted file mode 100644 index f494a7605..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/NoneLocalizationPersistenceReader.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Microsoft.Extensions.Localization; -using System.Collections.Generic; -using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; - -namespace LINGYUN.Abp.Localization.Persistence; - -[Dependency(TryRegister = true)] -public class NoneLocalizationPersistenceReader : ILocalizationPersistenceReader, ISingletonDependency -{ - public void Fill(string resourceName, string cultureName, Dictionary dictionary) - { - - } - - public Task FillAsync(string resourceName, string cultureName, Dictionary dictionary) - { - return Task.CompletedTask; - } - - public LocalizedString GetOrNull(string resourceName, string cultureName, string name) - { - return null; - } - - public Task> GetSupportedCulturesAsync() - { - IEnumerable emptyCultures = new string[0]; - - return Task.FromResult(emptyCultures); - } -} diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/NoneLocalizationPersistenceWriter.cs b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/NoneLocalizationPersistenceWriter.cs deleted file mode 100644 index b239450ce..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/NoneLocalizationPersistenceWriter.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Localization; - -namespace LINGYUN.Abp.Localization.Persistence; - -[Dependency(TryRegister = true)] -public class NoneLocalizationPersistenceWriter : ILocalizationPersistenceWriter, ISingletonDependency -{ - public Task> GetExistsTextsAsync( - string resourceName, - string cultureName, - IEnumerable keys, - CancellationToken cancellationToken = default) - { - return Task.FromResult(keys); - } - - public Task WriteLanguageAsync(LanguageInfo language, CancellationToken cancellationToken = default) - { - return Task.FromResult(false); - } - - public Task WriteResourceAsync(LocalizationResourceBase resource, CancellationToken cancellationToken = default) - { - return Task.FromResult(false); - } - - public Task WriteTextsAsync(IEnumerable texts, CancellationToken cancellationToken = default) - { - return Task.FromResult(false); - } -} diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/StaticLocalizationSaverHostService.cs b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/StaticLocalizationSaverHostService.cs deleted file mode 100644 index 0cf130a47..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/StaticLocalizationSaverHostService.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Options; -using System; -using System.Threading; -using System.Threading.Tasks; - -namespace LINGYUN.Abp.Localization.Persistence; - -public class StaticLocalizationSaverHostService : BackgroundService -{ - private readonly AbpLocalizationPersistenceOptions _options; - private readonly IStaticLocalizationSaver _staticLocalizationSaver; - - public StaticLocalizationSaverHostService( - IOptions options, - IStaticLocalizationSaver staticLocalizationSaver) - { - _options = options.Value; - _staticLocalizationSaver = staticLocalizationSaver; - } - - protected async override Task ExecuteAsync(CancellationToken stoppingToken) - { - if (_options.SaveStaticLocalizationsToPersistence) - { - try - { - await _staticLocalizationSaver.SaveAsync(); - } - catch (OperationCanceledException) - { - // Ignore - return; - } - } - } -} diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/README.EN.md b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/README.EN.md deleted file mode 100644 index 283966395..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/README.EN.md +++ /dev/null @@ -1,129 +0,0 @@ -# LINGYUN.Abp.Localization.Persistence - -## Module Description - -Localization component persistence module, providing functionality to persist localization resources to storage facilities. This module allows you to save static localization documents to persistent storage for easier management and maintenance. - -## Features - -* Support persisting static localization resources to storage facilities -* Provide read and write interfaces for localization resources -* Support custom persistence storage implementation -* Support asynchronous read and write operations -* Support multi-language culture support -* Support selective persistence of specified resources - -## Installation - -```bash -dotnet add package LINGYUN.Abp.Localization.Persistence -``` - -## Base Modules - -* Volo.Abp.Localization - -## Configuration - -The module provides the following configuration options: - -* SaveStaticLocalizationsToPersistence: Whether to enable localization resource persistence (default: true) -* SaveToPersistenceResources: List of resources to be persisted - -## Usage - -1. Add module dependency: - -```csharp -[DependsOn( - typeof(AbpLocalizationPersistenceModule))] -public class YouProjectModule : AbpModule -{ - public override void ConfigureServices(ServiceConfigurationContext context) - { - Configure(options => - { - // Enable persistence facility - options.SaveStaticLocalizationsToPersistence = true; - - // Specify your localization resource type, static documents under this type will be persisted to storage facilities - options.AddPersistenceResource(); - }); - - // Or use extension method to persist localization resource type - Configure(options => - { - // Same effect as above - options.UsePersistence(); - }); - } -} -``` - -## Extension Interfaces - -### ILocalizationPersistenceReader - -Used to read localization resources from persistent storage: - -```csharp -public interface ILocalizationPersistenceReader -{ - // Get localized string for specified resource - LocalizedString GetOrNull(string resourceName, string cultureName, string name); - - // Fill localization dictionary - void Fill(string resourceName, string cultureName, Dictionary dictionary); - - // Asynchronously fill localization dictionary - Task FillAsync(string resourceName, string cultureName, Dictionary dictionary); - - // Get supported cultures list - Task> GetSupportedCulturesAsync(); -} -``` - -### ILocalizationPersistenceWriter - -Used to write localization resources to persistent storage: - -```csharp -public interface ILocalizationPersistenceWriter -{ - // Write language information - Task WriteLanguageAsync(LanguageInfo language); - - // Write resource information - Task WriteResourceAsync(LocalizationResourceBase resource); - - // Get existing texts - Task> GetExistsTextsAsync( - string resourceName, - string cultureName, - IEnumerable keys); - - // Write localization texts - Task WriteTextsAsync(IEnumerable texts); -} -``` - -## Custom Persistence Implementation - -To implement custom persistence storage, you need to: - -1. Implement `ILocalizationPersistenceReader` interface -2. Implement `ILocalizationPersistenceWriter` interface -3. Register your implementation in the module: - -```csharp -public override void ConfigureServices(ServiceConfigurationContext context) -{ - context.Services.AddTransient(); - context.Services.AddTransient(); -} -``` - -## More Information - -* [中文文档](./README.md) -* [ABP Localization Documentation](https://docs.abp.io/en/abp/latest/Localization) diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/README.md b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/README.md deleted file mode 100644 index f6a30128b..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/README.md +++ /dev/null @@ -1,129 +0,0 @@ -# LINGYUN.Abp.Localization.Persistence - -## 模块说明 - -本地化组件持久层模块,提供将本地化资源持久化到存储设施的功能。此模块允许你将静态本地化文档保存到持久化存储中,方便管理和维护。 - -## 功能特性 - -* 支持将静态本地化资源持久化到存储设施 -* 提供本地化资源的读写接口 -* 支持自定义持久化存储实现 -* 支持异步读写操作 -* 支持多语言文化支持 -* 支持选择性持久化指定的资源 - -## 安装 - -```bash -dotnet add package LINGYUN.Abp.Localization.Persistence -``` - -## 基础模块 - -* Volo.Abp.Localization - -## 配置说明 - -模块提供以下配置选项: - -* SaveStaticLocalizationsToPersistence:是否启用本地化资源持久化(默认:true) -* SaveToPersistenceResources:需要持久化的资源列表 - -## 使用方法 - -1. 添加模块依赖: - -```csharp -[DependsOn( - typeof(AbpLocalizationPersistenceModule))] -public class YouProjectModule : AbpModule -{ - public override void ConfigureServices(ServiceConfigurationContext context) - { - Configure(options => - { - // 启用持久化设施 - options.SaveStaticLocalizationsToPersistence = true; - - // 指定你的本地化资源类型, 此类型下定义的静态文档将被持久化到存储设施 - options.AddPersistenceResource(); - }); - - // 或者使用扩展方法持久化本地化资源类型 - Configure(options => - { - // 效果如上 - options.UsePersistence(); - }); - } -} -``` - -## 扩展接口 - -### ILocalizationPersistenceReader - -用于从持久化存储中读取本地化资源: - -```csharp -public interface ILocalizationPersistenceReader -{ - // 获取指定资源的本地化字符串 - LocalizedString GetOrNull(string resourceName, string cultureName, string name); - - // 填充本地化字典 - void Fill(string resourceName, string cultureName, Dictionary dictionary); - - // 异步填充本地化字典 - Task FillAsync(string resourceName, string cultureName, Dictionary dictionary); - - // 获取支持的文化列表 - Task> GetSupportedCulturesAsync(); -} -``` - -### ILocalizationPersistenceWriter - -用于将本地化资源写入持久化存储: - -```csharp -public interface ILocalizationPersistenceWriter -{ - // 写入语言信息 - Task WriteLanguageAsync(LanguageInfo language); - - // 写入资源信息 - Task WriteResourceAsync(LocalizationResourceBase resource); - - // 获取已存在的文本 - Task> GetExistsTextsAsync( - string resourceName, - string cultureName, - IEnumerable keys); - - // 写入本地化文本 - Task WriteTextsAsync(IEnumerable texts); -} -``` - -## 自定义持久化实现 - -要实现自定义的持久化存储,需要: - -1. 实现 `ILocalizationPersistenceReader` 接口 -2. 实现 `ILocalizationPersistenceWriter` 接口 -3. 在模块中注册你的实现: - -```csharp -public override void ConfigureServices(ServiceConfigurationContext context) -{ - context.Services.AddTransient(); - context.Services.AddTransient(); -} -``` - -## 更多信息 - -* [English Documentation](./README.EN.md) -* [ABP本地化文档](https://docs.abp.io/zh-Hans/abp/latest/Localization) diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/Volo/Abp/Localization/AbpLocalizationOptionsExtensions.cs b/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/Volo/Abp/Localization/AbpLocalizationOptionsExtensions.cs deleted file mode 100644 index 19ebbfe62..000000000 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/Volo/Abp/Localization/AbpLocalizationOptionsExtensions.cs +++ /dev/null @@ -1,44 +0,0 @@ -using LINGYUN.Abp.Localization.Persistence; -using System; - -namespace Volo.Abp.Localization; -public static class AbpLocalizationOptionsExtensions -{ - public static void UsePersistence( - this AbpLocalizationOptions options) - { - options.Resources - .Get() - .Contributors - .Add(new LocalizationSaveToPersistenceContributor()); - } - - public static void UsePersistence( - this AbpLocalizationOptions options, - Type localizationResourceType) - { - options.Resources - .Get(localizationResourceType) - .Contributors - .Add(new LocalizationSaveToPersistenceContributor()); - } - - public static void UsePersistences( - this AbpLocalizationOptions options, - params Type[] localizationResourceTypes) - { - foreach (var localizationResourceType in localizationResourceTypes) - { - options.UsePersistence(localizationResourceType); - } - } - - public static void UseAllPersistence( - this AbpLocalizationOptions options) - { - foreach (var resource in options.Resources) - { - resource.Value.Contributors.Add(new LocalizationSaveToPersistenceContributor()); - } - } -} diff --git a/aspnet-core/migrations/LY.MicroService.Applications.Single.EntityFrameworkCore/SingleMigrationsEntityFrameworkCoreModule.cs b/aspnet-core/migrations/LY.MicroService.Applications.Single.EntityFrameworkCore/SingleMigrationsEntityFrameworkCoreModule.cs index b1e964af5..1c947b759 100644 --- a/aspnet-core/migrations/LY.MicroService.Applications.Single.EntityFrameworkCore/SingleMigrationsEntityFrameworkCoreModule.cs +++ b/aspnet-core/migrations/LY.MicroService.Applications.Single.EntityFrameworkCore/SingleMigrationsEntityFrameworkCoreModule.cs @@ -13,7 +13,6 @@ using LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore; using LINGYUN.Abp.WeChat; using LINGYUN.Platform.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; -using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Modularity; using Volo.Abp.OpenIddict.EntityFrameworkCore; diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.js b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.js index f12e05a37..a105bb428 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.js +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.js @@ -9,8 +9,9 @@ $(function () { }) .then(function () { abp.notify.success(ul("SavedSuccessfully")); + abp.ui.clearBusy(); }) - .done(function () { + .catch(function () { abp.ui.clearBusy(); }); }); diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/AbpAuditingWebModule.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/AbpAuditingWebModule.cs deleted file mode 100644 index fa2f4129c..000000000 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/AbpAuditingWebModule.cs +++ /dev/null @@ -1,74 +0,0 @@ -using LINGYUN.Abp.Auditing.Web.ProfileManagement; -using Microsoft.Extensions.DependencyInjection; -using Volo.Abp.Account.Web; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.Account.Web.ProfileManagement; -using Volo.Abp.AspNetCore.Mvc.Localization; -using Volo.Abp.AspNetCore.Mvc.UI.Bundling; -using Volo.Abp.AuditLogging.Localization; -using Volo.Abp.AutoMapper; -using Volo.Abp.Http.ProxyScripting.Generators.JQuery; -using Volo.Abp.Modularity; -using Volo.Abp.UI.Navigation; -using Volo.Abp.VirtualFileSystem; - -namespace LINGYUN.Abp.Auditing.Web; - -[DependsOn( - typeof(AbpAccountWebModule), - typeof(AbpAuditingApplicationContractsModule))] -public class AbpAuditingWebModule : AbpModule -{ - public override void PreConfigureServices(ServiceConfigurationContext context) - { - context.Services.PreConfigure(options => - { - options.AddAssemblyResource(typeof(AuditLoggingResource), typeof(AbpAuditingWebModule).Assembly); - }); - - PreConfigure(mvcBuilder => - { - mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpAuditingWebModule).Assembly); - }); - } - - public override void ConfigureServices(ServiceConfigurationContext context) - { - Configure(options => - { - options.FileSets.AddEmbedded(); - }); - - ConfigureProfileManagementPage(); - - context.Services.AddAutoMapperObjectMapper(); - Configure(options => - { - options.AddMaps(validate: true); - }); - - Configure(options => - { - options.DisableModule(AuditingRemoteServiceConsts.ModuleName); - }); - } - - private void ConfigureProfileManagementPage() - { - Configure(options => - { - options.Contributors.Add(new SecurityLogManagementPageContributor()); - }); - - Configure(options => - { - options.ScriptBundles - .Configure(typeof(ManageModel).FullName, - configuration => - { - configuration.AddFiles("/client-proxies/auditing-proxy.js"); - configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js"); - }); - }); - } -} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/FodyWeavers.xml b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/FodyWeavers.xml deleted file mode 100644 index 1715698cc..000000000 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/FodyWeavers.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/LINGYUN.Abp.Auditing.Web.csproj b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/LINGYUN.Abp.Auditing.Web.csproj deleted file mode 100644 index 35797b108..000000000 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/LINGYUN.Abp.Auditing.Web.csproj +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - net9.0 - LINGYUN.Abp.Auditing.Web - LINGYUN.Abp.Auditing.Web - false - false - false - true - LINGYUN.Abp.Auditing.Web - true - Library - - - - - - - - - - - - - - - - - - - - - - - diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs deleted file mode 100644 index e594b528b..000000000 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using System.Threading.Tasks; -using Volo.Abp.AspNetCore.Mvc; - -namespace LINGYUN.Abp.Auditing.Web.Pages.Account.Components.ProfileManagementGroup.SecurityLog; - -public class AccountProfileSecurityLogManagementGroupViewComponent : AbpViewComponent -{ - public AccountProfileSecurityLogManagementGroupViewComponent() - { - } - - public async virtual Task InvokeAsync() - { - await Task.CompletedTask; - - return View("~/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml"); - } -} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml deleted file mode 100644 index 9cc605220..000000000 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml +++ /dev/null @@ -1,22 +0,0 @@ -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@using Volo.Abp.Localization - -@inject IHtmlLocalizer L - -@section scripts { - -} - - - - - - @L["SecurityLog"] - - - - - - - diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js deleted file mode 100644 index 28d48c27e..000000000 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js +++ /dev/null @@ -1,60 +0,0 @@ -$(function () { - var ul = abp.localization.getResource('AbpUi'); - var il = abp.localization.getResource('AbpIdentity'); - var dataTable = $('#SecurityLogTable').DataTable( - abp.libs.datatables.normalizeConfiguration({ - serverSide: true, - paging: true, - searching: false, - scrollX: true, - ajax: abp.libs.datatables.createAjax(labp.auditing.securityLogs.securityLog.getList), - columnDefs: [ - { - title: ul('Actions'), - rowAction: { - items: - [ - { - text: il('RevokeSession'), - confirmMessage: function () { - return il('SessionWillBeRevokedMessage'); - }, - visible: function (data) { - return data.sessionId !== abp.currentUser?.sessionId; - }, - action: function (data) { - labp.account.myProfile - .revokeSession(data.record.sessionId) - .then(function () { - abp.notify.info( - il('SuccessfullyRevoked') - ); - dataTable.ajax.reload(); - }); - } - } - ] - } - }, - { - title: il('DisplayName:Device'), - data: "device" - }, - { - title: il('DisplayName:IpAddresses'), - data: "ipAddresses" - }, - { - title: il('DisplayName:SignedIn'), - data: "signedIn", - render: function (data) { - return luxon - .DateTime - .fromISO(data, { - locale: abp.localization.currentCulture.name - }).toLocaleString(luxon.DateTime.DATETIME_FULL_WITH_SECONDS); - } - }] - }) - ); -}); diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/ProfileManagement/SecurityLogManagementPageContributor.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/ProfileManagement/SecurityLogManagementPageContributor.cs deleted file mode 100644 index c521a732c..000000000 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/ProfileManagement/SecurityLogManagementPageContributor.cs +++ /dev/null @@ -1,26 +0,0 @@ -using LINGYUN.Abp.Auditing.Web.Pages.Account.Components.ProfileManagementGroup.SecurityLog; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Localization; -using System.Threading.Tasks; -using Volo.Abp.Account.Web.ProfileManagement; -using Volo.Abp.AuditLogging.Localization; - -namespace LINGYUN.Abp.Auditing.Web.ProfileManagement; - -public class SecurityLogManagementPageContributor : IProfileManagementPageContributor -{ - public virtual Task ConfigureAsync(ProfileManagementPageCreationContext context) - { - var l = context.ServiceProvider.GetRequiredService>(); - - context.Groups.Add( - new ProfileManagementPageGroup( - "LINGYUN.Abp.Account.SecurityLog", - l["SecurityLog"], - typeof(AccountProfileSecurityLogManagementGroupViewComponent) - ) - ); - - return Task.CompletedTask; - } -} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Properties/launchSettings.json b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Properties/launchSettings.json deleted file mode 100644 index 4b94e23fd..000000000 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Properties/launchSettings.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "profiles": { - "LINGYUN.Abp.Auditing.Web": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "https://localhost:62925;http://localhost:62926" - } - } -} \ No newline at end of file diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/wwwroot/client-proxies/auditing-proxy.js b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/wwwroot/client-proxies/auditing-proxy.js deleted file mode 100644 index 9b0535a2e..000000000 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/wwwroot/client-proxies/auditing-proxy.js +++ /dev/null @@ -1,146 +0,0 @@ -/* This file is automatically generated by ABP framework to use MVC Controllers from javascript. */ - - -// module auditing - -(function(){ - - // controller labp.auditing.auditLogs.auditLog - - (function(){ - - abp.utils.createNamespace(window, 'labp.auditing.auditLogs.auditLog'); - - labp.auditing.auditLogs.auditLog['delete'] = function(id, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/audit-log/' + id + '', - type: 'DELETE', - dataType: null - }, ajaxParams)); - }; - - labp.auditing.auditLogs.auditLog.deleteMany = function(input, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/audit-log/bulk', - type: 'DELETE', - dataType: null, - data: JSON.stringify(input) - }, ajaxParams)); - }; - - labp.auditing.auditLogs.auditLog.get = function(id, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/audit-log/' + id + '', - type: 'GET' - }, ajaxParams)); - }; - - labp.auditing.auditLogs.auditLog.getList = function(input, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/audit-log' + abp.utils.buildQueryString([{ name: 'startTime', value: input.startTime }, { name: 'endTime', value: input.endTime }, { name: 'httpMethod', value: input.httpMethod }, { name: 'url', value: input.url }, { name: 'userId', value: input.userId }, { name: 'userName', value: input.userName }, { name: 'applicationName', value: input.applicationName }, { name: 'correlationId', value: input.correlationId }, { name: 'clientId', value: input.clientId }, { name: 'clientIpAddress', value: input.clientIpAddress }, { name: 'maxExecutionDuration', value: input.maxExecutionDuration }, { name: 'minExecutionDuration', value: input.minExecutionDuration }, { name: 'hasException', value: input.hasException }, { name: 'httpStatusCode', value: input.httpStatusCode }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', - type: 'GET' - }, ajaxParams)); - }; - - })(); - - // controller labp.auditing.auditLogs.entityChanges - - (function(){ - - abp.utils.createNamespace(window, 'labp.auditing.auditLogs.entityChanges'); - - labp.auditing.auditLogs.entityChanges.get = function(id, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/entity-changes/' + id + '', - type: 'GET' - }, ajaxParams)); - }; - - labp.auditing.auditLogs.entityChanges.getList = function(input, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/entity-changes' + abp.utils.buildQueryString([{ name: 'auditLogId', value: input.auditLogId }, { name: 'startTime', value: input.startTime }, { name: 'endTime', value: input.endTime }, { name: 'changeType', value: input.changeType }, { name: 'entityId', value: input.entityId }, { name: 'entityTypeFullName', value: input.entityTypeFullName }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', - type: 'GET' - }, ajaxParams)); - }; - - labp.auditing.auditLogs.entityChanges.getWithUsernameAsyncById = function(id, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/entity-changes/with-username/' + id + '', - type: 'GET' - }, ajaxParams)); - }; - - labp.auditing.auditLogs.entityChanges.getWithUsernameAsyncByInput = function(input, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/entity-changes/with-username' + abp.utils.buildQueryString([{ name: 'entityId', value: input.entityId }, { name: 'entityTypeFullName', value: input.entityTypeFullName }]) + '', - type: 'GET' - }, ajaxParams)); - }; - - })(); - - // controller labp.auditing.logging.log - - (function(){ - - abp.utils.createNamespace(window, 'labp.auditing.logging.log'); - - labp.auditing.logging.log.get = function(id, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/logging/' + id + '', - type: 'GET' - }, ajaxParams)); - }; - - labp.auditing.logging.log.getList = function(input, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/logging' + abp.utils.buildQueryString([{ name: 'startTime', value: input.startTime }, { name: 'endTime', value: input.endTime }, { name: 'level', value: input.level }, { name: 'machineName', value: input.machineName }, { name: 'environment', value: input.environment }, { name: 'application', value: input.application }, { name: 'context', value: input.context }, { name: 'requestId', value: input.requestId }, { name: 'requestPath', value: input.requestPath }, { name: 'correlationId', value: input.correlationId }, { name: 'processId', value: input.processId }, { name: 'threadId', value: input.threadId }, { name: 'hasException', value: input.hasException }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', - type: 'GET' - }, ajaxParams)); - }; - - })(); - - // controller labp.auditing.securityLogs.securityLog - - (function(){ - - abp.utils.createNamespace(window, 'labp.auditing.securityLogs.securityLog'); - - labp.auditing.securityLogs.securityLog['delete'] = function(id, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/security-log/' + id + '', - type: 'DELETE', - dataType: null - }, ajaxParams)); - }; - - labp.auditing.securityLogs.securityLog.deleteMany = function(input, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/security-log/bulk', - type: 'DELETE', - dataType: null, - data: JSON.stringify(input) - }, ajaxParams)); - }; - - labp.auditing.securityLogs.securityLog.get = function(id, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/security-log/' + id + '', - type: 'GET' - }, ajaxParams)); - }; - - labp.auditing.securityLogs.securityLog.getList = function(input, ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/auditing/security-log' + abp.utils.buildQueryString([{ name: 'startTime', value: input.startTime }, { name: 'endTime', value: input.endTime }, { name: 'applicationName', value: input.applicationName }, { name: 'identity', value: input.identity }, { name: 'actionName', value: input.actionName }, { name: 'userId', value: input.userId }, { name: 'userName', value: input.userName }, { name: 'clientId', value: input.clientId }, { name: 'correlationId', value: input.correlationId }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', - type: 'GET' - }, ajaxParams)); - }; - - })(); - -})(); - - diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN.Abp.LocalizationManagement.Domain.csproj b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN.Abp.LocalizationManagement.Domain.csproj index bf4c2633d..13f6c9e14 100644 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN.Abp.LocalizationManagement.Domain.csproj +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN.Abp.LocalizationManagement.Domain.csproj @@ -14,12 +14,12 @@ + - diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementDomainModule.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementDomainModule.cs index fb198053a..5cdc53e8e 100644 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementDomainModule.cs +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementDomainModule.cs @@ -1,19 +1,29 @@ -using LINGYUN.Abp.Localization.Persistence; -using LINGYUN.Abp.LocalizationManagement.Localization; -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Polly; +using System; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp; using Volo.Abp.AutoMapper; +using Volo.Abp.DependencyInjection; using Volo.Abp.Domain; +using Volo.Abp.Domain.Entities.Events.Distributed; +using Volo.Abp.Localization; using Volo.Abp.Modularity; +using Volo.Abp.Threading; namespace LINGYUN.Abp.LocalizationManagement; [DependsOn( typeof(AbpAutoMapperModule), typeof(AbpDddDomainModule), - typeof(AbpLocalizationPersistenceModule), typeof(AbpLocalizationManagementDomainSharedModule))] public class AbpLocalizationManagementDomainModule : AbpModule { + private readonly CancellationTokenSource cancellationTokenSource = new(); public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddAutoMapperObjectMapper(); @@ -23,16 +33,86 @@ public class AbpLocalizationManagementDomainModule : AbpModule options.AddProfile(validate: true); }); - Configure(options => + Configure(options => { - options.AddPersistenceResource(); + options.GlobalContributors.Add(); }); - // 分布式事件 - //Configure(options => - //{ - // options.AutoEventSelectors.Add(); - // options.EtoMappings.Add(); - //}); + Configure(options => + { + options.EtoMappings.Add(); + options.EtoMappings.Add(); + options.EtoMappings.Add(); + }); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + AsyncHelper.RunSync(() => OnApplicationInitializationAsync(context)); + } + + public override async Task OnApplicationInitializationAsync(ApplicationInitializationContext context) + { + await SaveLocalizationAsync(context); + } + + public override Task OnApplicationShutdownAsync(ApplicationShutdownContext context) + { + cancellationTokenSource.CancelAsync(); + return Task.CompletedTask; + } + + private async Task SaveLocalizationAsync(ApplicationInitializationContext context) + { + var options = context.ServiceProvider.GetRequiredService>(); + if (options.Value.SaveStaticLocalizationsToDatabase) + { + var rootServiceProvider = context.ServiceProvider.GetRequiredService(); + await Task.Run(async () => + { + using (var scope = rootServiceProvider.CreateScope()) + { + var applicationLifetime = scope.ServiceProvider.GetService(); + var cancellationTokenProvider = scope.ServiceProvider.GetRequiredService(); + var cancellationToken = applicationLifetime?.ApplicationStopping ?? cancellationTokenSource.Token; + try + { + using (cancellationTokenProvider.Use(cancellationToken)) + { + if (cancellationTokenProvider.Token.IsCancellationRequested) + { + return; + } + + await Policy.Handle() + .WaitAndRetryAsync(8, + retryAttempt => TimeSpan.FromSeconds( + RandomHelper.GetRandom((int)Math.Pow(2.0, retryAttempt) * 8, (int)Math.Pow(2.0, retryAttempt) * 12))) + .ExecuteAsync(async _ => + { + try + { + await scope.ServiceProvider + .GetRequiredService() + .SaveAsync(); + } + catch (Exception ex) + { + scope.ServiceProvider + .GetService>() + ?.LogException(ex); + + throw; + } + }, + cancellationTokenProvider.Token); + } + } + catch + { + } + } + }); + } } } diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementOptions.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementOptions.cs index 152153f54..e2b7988b7 100644 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementOptions.cs +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementOptions.cs @@ -1,24 +1,13 @@ -using System; - -namespace LINGYUN.Abp.LocalizationManagement; +namespace LINGYUN.Abp.LocalizationManagement; public class AbpLocalizationManagementOptions { /// - /// 申请时间戳超时时间 - /// default: 2 minutes - /// - public TimeSpan LocalizationCacheStampTimeOut { get; set; } - /// - /// 时间戳过期时间 - /// default: 30 minutes + /// 保存本地化文本到数据库 /// - public TimeSpan LocalizationCacheStampExpiration { get; set; } + public bool SaveStaticLocalizationsToDatabase { get; set; } public AbpLocalizationManagementOptions() { - LocalizationCacheStampTimeOut = TimeSpan.FromMinutes(2); - // 30分钟过期重新刷新缓存 - LocalizationCacheStampExpiration = TimeSpan.FromMinutes(30); } } diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ILocalizationLanguageStoreCache.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ILocalizationLanguageStoreCache.cs new file mode 100644 index 000000000..25de726fe --- /dev/null +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ILocalizationLanguageStoreCache.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.LocalizationManagement; + +public interface ILocalizationLanguageStoreCache +{ + Task> GetLanguagesAsync(); +} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ILocalizationStoreCache.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ILocalizationStoreCache.cs deleted file mode 100644 index f50f5954d..000000000 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ILocalizationStoreCache.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Microsoft.Extensions.Localization; -using System; -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; -using Volo.Abp.Localization; - -namespace LINGYUN.Abp.LocalizationManagement; - -public interface ILocalizationStoreCache -{ - string CacheStamp { get; set; } - - SemaphoreSlim SyncSemaphore { get; } - - DateTime? LastCheckTime { get; set; } - - Task InitializeAsync(LocalizationStoreCacheInitializeContext context); - - LocalizationResourceBase GetResourceOrNull(string resourceName); - - LocalizedString GetLocalizedStringOrNull(string resourceName, string cultureName, string name); - - IReadOnlyList GetResources(); - - IReadOnlyList GetLanguages(); - - IDictionary GetAllLocalizedStrings(string cultureName); -} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ILocalizationTextStoreCache.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ILocalizationTextStoreCache.cs new file mode 100644 index 000000000..6ae9fa45b --- /dev/null +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ILocalizationTextStoreCache.cs @@ -0,0 +1,15 @@ +using Microsoft.Extensions.Localization; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.LocalizationManagement; + +public interface ILocalizationTextStoreCache +{ + LocalizedString GetOrNull(LocalizationResourceBase resource, string cultureName, string name); + + void Fill(LocalizationResourceBase resource, string cultureName, Dictionary dictionary); + + Task FillAsync(LocalizationResourceBase resource, string cultureName, Dictionary dictionary); +} diff --git a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/IStaticLocalizationSaver.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/IStaticLocalizationSaver.cs similarity index 68% rename from aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/IStaticLocalizationSaver.cs rename to aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/IStaticLocalizationSaver.cs index d9a02cace..9ec909e12 100644 --- a/aspnet-core/framework/localization/LINGYUN.Abp.Localization.Persistence/LINGYUN/Abp/Localization/Persistence/IStaticLocalizationSaver.cs +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/IStaticLocalizationSaver.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -namespace LINGYUN.Abp.Localization.Persistence; +namespace LINGYUN.Abp.LocalizationManagement; public interface IStaticLocalizationSaver { diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ITextRepository.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ITextRepository.cs index db2f36253..761bdb7f6 100644 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ITextRepository.cs +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ITextRepository.cs @@ -20,6 +20,10 @@ namespace LINGYUN.Abp.LocalizationManagement CancellationToken cancellationToken = default ); + List GetList( + string resourceName = null, + string cultureName = null); + Task> GetListAsync( string resourceName = null, string cultureName = null, diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationCacheInvalidator.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationCacheInvalidator.cs deleted file mode 100644 index 186a5b75f..000000000 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationCacheInvalidator.cs +++ /dev/null @@ -1,124 +0,0 @@ -using Microsoft.Extensions.Caching.Distributed; -using Microsoft.Extensions.Options; -using System; -using System.Threading.Tasks; -using Volo.Abp.Caching; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Domain.Entities.Events; -using Volo.Abp.Domain.Entities.Events.Distributed; -using Volo.Abp.EventBus; -using Volo.Abp.EventBus.Distributed; -using Volo.Abp.Threading; -using Volo.Abp.Timing; - -namespace LINGYUN.Abp.LocalizationManagement; - -public class LocalizationCacheInvalidator : - ILocalEventHandler>, - ILocalEventHandler>, - ILocalEventHandler>, - - IDistributedEventHandler>, - IDistributedEventHandler>, - IDistributedEventHandler>, - - IDistributedEventHandler>, - IDistributedEventHandler>, - IDistributedEventHandler>, - - IDistributedEventHandler>, - IDistributedEventHandler>, - IDistributedEventHandler>, - - ITransientDependency -{ - private readonly IClock _clock; - private readonly IDistributedCache _distributedCache; - private readonly ILocalizationStoreCache _storeCache; - private readonly AbpDistributedCacheOptions _distributedCacheOptions; - - public LocalizationCacheInvalidator( - IClock clock, - ILocalizationStoreCache storeCache, - IDistributedCache distributedCache, - IOptions options) - { - _clock = clock; - _storeCache = storeCache; - _distributedCache = distributedCache; - _distributedCacheOptions = options.Value; - } - - public async virtual Task HandleEventAsync(EntityChangedEventData eventData) - { - await RemoveStampInDistributedCacheAsync(); - } - - public async virtual Task HandleEventAsync(EntityChangedEventData eventData) - { - await RemoveStampInDistributedCacheAsync(); - } - - public async virtual Task HandleEventAsync(EntityChangedEventData eventData) - { - await RemoveStampInDistributedCacheAsync(); - } - - public async virtual Task HandleEventAsync(EntityCreatedEto eventData) - { - await RemoveStampInDistributedCacheAsync(); - } - - public async virtual Task HandleEventAsync(EntityUpdatedEto eventData) - { - await RemoveStampInDistributedCacheAsync(); - } - - public async virtual Task HandleEventAsync(EntityDeletedEto eventData) - { - await RemoveStampInDistributedCacheAsync(); - } - - public async virtual Task HandleEventAsync(EntityCreatedEto eventData) - { - await RemoveStampInDistributedCacheAsync(); - } - - public async virtual Task HandleEventAsync(EntityDeletedEto eventData) - { - await RemoveStampInDistributedCacheAsync(); - } - - public async virtual Task HandleEventAsync(EntityCreatedEto eventData) - { - await RemoveStampInDistributedCacheAsync(); - } - - public async virtual Task HandleEventAsync(EntityUpdatedEto eventData) - { - await RemoveStampInDistributedCacheAsync(); - } - - public async virtual Task HandleEventAsync(EntityDeletedEto eventData) - { - await RemoveStampInDistributedCacheAsync(); - } - - public async virtual Task HandleEventAsync(EntityUpdatedEto eventData) - { - await RemoveStampInDistributedCacheAsync(); - } - - protected async virtual Task RemoveStampInDistributedCacheAsync() - { - using (await _storeCache.SyncSemaphore.LockAsync()) - { - var cacheKey = $"{_distributedCacheOptions.KeyPrefix}_AbpInMemoryLocalizationCacheStamp"; - - await _distributedCache.RemoveAsync(cacheKey); - - _storeCache.CacheStamp = Guid.NewGuid().ToString(); - _storeCache.LastCheckTime = _clock.Now.AddMinutes(-5); - } - } -} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDictionary.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDictionary.cs deleted file mode 100644 index 10ebef1d7..000000000 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDictionary.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Microsoft.Extensions.Localization; -using System.Collections.Generic; - -namespace LINGYUN.Abp.LocalizationManagement; -public class LocalizationDictionary : Dictionary -{ - -} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDictionaryWithCulture.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDictionaryWithCulture.cs deleted file mode 100644 index 3cd5ed1a3..000000000 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDictionaryWithCulture.cs +++ /dev/null @@ -1,6 +0,0 @@ -using System.Collections.Generic; - -namespace LINGYUN.Abp.LocalizationManagement; -public class LocalizationDictionaryWithCulture : Dictionary -{ -} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDictionaryWithResource.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDictionaryWithResource.cs deleted file mode 100644 index 194989b54..000000000 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDictionaryWithResource.cs +++ /dev/null @@ -1,6 +0,0 @@ -using System.Collections.Generic; - -namespace LINGYUN.Abp.LocalizationManagement; -public class LocalizationDictionaryWithResource : Dictionary -{ -} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageCacheInvalidator.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageCacheInvalidator.cs new file mode 100644 index 000000000..70ae35136 --- /dev/null +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageCacheInvalidator.cs @@ -0,0 +1,21 @@ +using System.Threading.Tasks; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Entities.Events; +using Volo.Abp.EventBus; + +namespace LINGYUN.Abp.LocalizationManagement; + +public class LocalizationLanguageCacheInvalidator: ILocalEventHandler>, ITransientDependency +{ + private readonly IDistributedCache _localizationLanguageCache; + public LocalizationLanguageCacheInvalidator(IDistributedCache localizationLanguageCache) + { + _localizationLanguageCache = localizationLanguageCache; + } + + public async virtual Task HandleEventAsync(EntityChangedEventData eventData) + { + await _localizationLanguageCache.RemoveAsync(LocalizationLanguageCacheItem.CacheKey); + } +} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageCacheItem.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageCacheItem.cs new file mode 100644 index 000000000..f2b25862c --- /dev/null +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageCacheItem.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using Volo.Abp.Localization; +using Volo.Abp.MultiTenancy; + +namespace LINGYUN.Abp.LocalizationManagement; + +[Serializable] +[IgnoreMultiTenancy] +public class LocalizationLanguageCacheItem +{ + internal const string CacheKey = "Abp.Localization.Languages"; + public List Languages { get; set; } + + public LocalizationLanguageCacheItem() + { + + } + + public LocalizationLanguageCacheItem(List languages) + { + Languages = languages; + } +} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageDictionary.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageDictionary.cs deleted file mode 100644 index d5d3a7b65..000000000 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageDictionary.cs +++ /dev/null @@ -1,7 +0,0 @@ -using System.Collections.Generic; -using Volo.Abp.Localization; - -namespace LINGYUN.Abp.LocalizationManagement; -public class LocalizationLanguageDictionary : Dictionary -{ -} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageProvider.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageProvider.cs new file mode 100644 index 000000000..ca89b10ac --- /dev/null +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageProvider.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.LocalizationManagement; + +[Dependency(ReplaceServices = true)] +public class LocalizationLanguageProvider : ILanguageProvider, ITransientDependency +{ + protected ILocalizationLanguageStoreCache LocalizationLanguageStore { get; } + public LocalizationLanguageProvider(ILocalizationLanguageStoreCache localizationLanguageStore) + { + LocalizationLanguageStore = localizationLanguageStore; + } + + public async virtual Task> GetLanguagesAsync() + { + return await LocalizationLanguageStore.GetLanguagesAsync(); + } +} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageStoreCache.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageStoreCache.cs new file mode 100644 index 000000000..037511cc2 --- /dev/null +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationLanguageStoreCache.cs @@ -0,0 +1,50 @@ +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.ChangeTracking; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.LocalizationManagement; + +public class LocalizationLanguageStoreCache : ILocalizationLanguageStoreCache, ITransientDependency +{ + protected IDistributedCache LanguageCache { get; } + protected ILanguageRepository LanguageRepository { get; } + + public LocalizationLanguageStoreCache( + IDistributedCache languageCache, + ILanguageRepository languageRepository) + { + LanguageCache = languageCache; + LanguageRepository = languageRepository; + } + + [DisableEntityChangeTracking] + public async virtual Task> GetLanguagesAsync() + { + var cacheItem = await GetCacheItemAsync(); + + return cacheItem.Languages.ToImmutableList(); + } + + protected async virtual Task GetCacheItemAsync() + { + var cacheItem = await LanguageCache.GetAsync(LocalizationLanguageCacheItem.CacheKey); + if (cacheItem != null) + { + return cacheItem; + } + + var languages = await LanguageRepository.GetListAsync(); + + cacheItem = new LocalizationLanguageCacheItem( + languages.Select(x => + new LanguageInfo(x.CultureName, x.UiCultureName, x.DisplayName)) + .ToList()); + + return cacheItem; + } +} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationManagementPersistenceReader.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationManagementPersistenceReader.cs deleted file mode 100644 index 7359245f1..000000000 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationManagementPersistenceReader.cs +++ /dev/null @@ -1,65 +0,0 @@ -using LINGYUN.Abp.Localization.Persistence; -using Microsoft.Extensions.Localization; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Threading; - -namespace LINGYUN.Abp.LocalizationManagement; - -[Dependency(ReplaceServices = true)] -[ExposeServices( - typeof(ILocalizationPersistenceReader), - typeof(LocalizationManagementPersistenceReader))] -public class LocalizationManagementPersistenceReader : ILocalizationPersistenceReader, ITransientDependency -{ - private readonly ILocalizationStoreCache _localizationStoreCache; - private readonly LocalizationStoreCacheInitializeContext _cacheInitializeContext; - - public LocalizationManagementPersistenceReader( - IServiceProvider serviceProvider, - ILocalizationStoreCache localizationStoreCache) - { - _localizationStoreCache = localizationStoreCache; - _cacheInitializeContext = new LocalizationStoreCacheInitializeContext(serviceProvider); - } - - public virtual void Fill(string resourceName, string cultureName, Dictionary dictionary) - { - AsyncHelper.RunSync(async () => await FillAsync(resourceName, cultureName, dictionary)); - } - - public async virtual Task FillAsync(string resourceName, string cultureName, Dictionary dictionary) - { - await _localizationStoreCache.InitializeAsync(_cacheInitializeContext); - - var localizedStrings = _localizationStoreCache.GetAllLocalizedStrings(cultureName); - - var localizedStringsInResource = localizedStrings.GetOrDefault(resourceName); - if (localizedStringsInResource != null) - { - foreach (var localizedString in localizedStringsInResource) - { - dictionary[localizedString.Key] = localizedString.Value; - } - } - } - - public virtual LocalizedString GetOrNull(string resourceName, string cultureName, string name) - { - return _localizationStoreCache.GetLocalizedStringOrNull(resourceName, cultureName, name); - } - - public virtual Task> GetSupportedCulturesAsync() - { - var languageInfos = _localizationStoreCache.GetLanguages(); - - IEnumerable languages = languageInfos - .Select(x => x.CultureName) - .ToList(); - - return Task.FromResult(languages); - } -} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationManagementPersistenceWriter.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationManagementPersistenceWriter.cs deleted file mode 100644 index 1c353a95b..000000000 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationManagementPersistenceWriter.cs +++ /dev/null @@ -1,203 +0,0 @@ -using LINGYUN.Abp.Localization.Persistence; -using Microsoft.Extensions.Caching.Distributed; -using Microsoft.Extensions.Options; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using Volo.Abp; -using Volo.Abp.Caching; -using Volo.Abp.DependencyInjection; -using Volo.Abp.DistributedLocking; -using Volo.Abp.Guids; -using Volo.Abp.Localization; - -namespace LINGYUN.Abp.LocalizationManagement; - -[Dependency(ReplaceServices = true)] -[ExposeServices( - typeof(ILocalizationPersistenceWriter), - typeof(LocalizationManagementPersistenceWriter))] -public class LocalizationManagementPersistenceWriter : ILocalizationPersistenceWriter, ITransientDependency -{ - protected IDistributedCache Cache { get; } - protected IAbpDistributedLock DistributedLock { get; } - protected AbpDistributedCacheOptions CacheOptions { get; } - protected IApplicationInfoAccessor ApplicationInfoAccessor { get; } - - protected IGuidGenerator GuidGenerator { get; } - protected ILanguageRepository LanguageRepository { get; } - protected ITextRepository TextRepository { get; } - protected IResourceRepository ResourceRepository { get; } - - public LocalizationManagementPersistenceWriter( - IDistributedCache cache, - IGuidGenerator guidGenerator, - IAbpDistributedLock distributedLock, - ITextRepository textRepository, - ILanguageRepository languageRepository, - IResourceRepository resourceRepository, - IApplicationInfoAccessor applicationInfoAccessor, - IOptions cacheOptions) - { - Cache = cache; - GuidGenerator = guidGenerator; - DistributedLock = distributedLock; - LanguageRepository = languageRepository; - TextRepository = textRepository; - ResourceRepository = resourceRepository; - ApplicationInfoAccessor = applicationInfoAccessor; - CacheOptions = cacheOptions.Value; - } - - public async virtual Task> GetExistsTextsAsync( - string resourceName, - string cultureName, - IEnumerable keys, - CancellationToken cancellationToken = default) - { - if (!await ShouldCalculateTextsHash(keys, cancellationToken)) - { - return keys; - } - - return await TextRepository.GetExistsKeysAsync( - resourceName, - cultureName, - keys, - cancellationToken); - } - - - - public async virtual Task WriteLanguageAsync( - LanguageInfo language, - CancellationToken cancellationToken = default) - { - var commonDistributedLockKey = GetCommonDistributedLockKey("Language", language.CultureName); - await using var lockHandle = await DistributedLock.TryAcquireAsync(commonDistributedLockKey); - if (lockHandle == null) - { - return false; - } - - if (await LanguageRepository.FindByCultureNameAsync(language.CultureName, cancellationToken) == null) - { - await LanguageRepository.InsertAsync( - new Language( - GuidGenerator.Create(), - language.CultureName, - language.UiCultureName, - language.DisplayName, - language.TwoLetterISOLanguageName), - autoSave: true, - cancellationToken: cancellationToken); - } - - return true; - } - - public async virtual Task WriteResourceAsync( - LocalizationResourceBase resource, - CancellationToken cancellationToken = default) - { - var commonDistributedLockKey = GetCommonDistributedLockKey("Resource", resource.ResourceName); - await using var lockHandle = await DistributedLock.TryAcquireAsync(commonDistributedLockKey); - if (lockHandle == null) - { - return false; - } - - if (await ResourceRepository.FindByNameAsync(resource.ResourceName, cancellationToken) == null) - { - await ResourceRepository.InsertAsync( - new Resource( - GuidGenerator.Create(), - resource.ResourceName, - resource.ResourceName, - resource.ResourceName, - resource.DefaultCultureName), - autoSave: true, - cancellationToken: cancellationToken); - } - - return true; - } - - public async virtual Task WriteTextsAsync( - IEnumerable texts, - CancellationToken cancellationToken = default) - { - if (!await ShouldCalculateTextsHash(texts.Select(x => x.Name), cancellationToken)) - { - return false; - } - - var cacheKey = GetApplicationHashCacheKey(); - var currentHash = CalculateTextsHash(texts.Select(x => x.Name)); - - var savedTexts = texts.Select(text => - new Text( - text.ResourceName, - text.CultureName, - text.Name, - text.Value)); - - await TextRepository.InsertManyAsync( - savedTexts, - autoSave: true, - cancellationToken: cancellationToken); - - await Cache.SetStringAsync( - cacheKey, - currentHash, - new DistributedCacheEntryOptions - { - SlidingExpiration = TimeSpan.FromDays(30) - }, - cancellationToken); - - return true; - } - - private async Task ShouldCalculateTextsHash(IEnumerable texts, CancellationToken cancellationToken = default) - { - var cacheKey = GetApplicationHashCacheKey(); - var cachedHash = await Cache.GetStringAsync(cacheKey, cancellationToken); - - var currentHash = CalculateTextsHash(texts); - - if (cachedHash == currentHash) - { - return false; - } - - return cachedHash != currentHash; - } - - private static string CalculateTextsHash(IEnumerable texts) - { - var stringBuilder = new StringBuilder(); - - stringBuilder.Append("LocalizableStrings:"); - stringBuilder.Append(texts.JoinAsString(",")); - - return stringBuilder - .ToString() - .ToMd5(); - } - - private string GetCommonDistributedLockKey( - string lockResourceName, - string lockResourceKey) - { - return $"{CacheOptions.KeyPrefix}_Common_AbpLocalizationWriter_{lockResourceName}_{lockResourceKey}_Lock"; - } - - private string GetApplicationHashCacheKey() - { - return $"{CacheOptions.KeyPrefix}_{ApplicationInfoAccessor.ApplicationName}_AbpLocalizationHash"; - } -} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationResourceContributor.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationResourceContributor.cs new file mode 100644 index 000000000..63d811c80 --- /dev/null +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationResourceContributor.cs @@ -0,0 +1,45 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.LocalizationManagement; + +public class LocalizationResourceContributor : ILocalizationResourceContributor +{ + public bool IsDynamic => true; + protected LocalizationResourceBase Resource { get; private set; } + protected ILocalizationTextStoreCache LocalizationTextStoreCache { get; private set; } + protected ILocalizationLanguageStoreCache LocalizationLanguageStoreCache { get; private set; } + + public virtual void Fill(string cultureName, Dictionary dictionary) + { + LocalizationTextStoreCache.Fill(Resource, cultureName, dictionary); + } + + public async virtual Task FillAsync(string cultureName, Dictionary dictionary) + { + await LocalizationTextStoreCache.FillAsync(Resource, cultureName, dictionary); + } + + public virtual LocalizedString GetOrNull(string cultureName, string name) + { + return LocalizationTextStoreCache.GetOrNull(Resource, cultureName, name); + } + + public async virtual Task> GetSupportedCulturesAsync() + { + var languageInfos = await LocalizationLanguageStoreCache.GetLanguagesAsync(); + + return languageInfos.Select(x => x.CultureName); + } + + public void Initialize(LocalizationResourceInitializationContext context) + { + Resource = context.Resource; + LocalizationTextStoreCache = context.ServiceProvider.GetRequiredService(); + LocalizationLanguageStoreCache = context.ServiceProvider.GetRequiredService(); + } +} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStore.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStore.cs deleted file mode 100644 index d3ef6b14a..000000000 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStore.cs +++ /dev/null @@ -1,160 +0,0 @@ -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Localization; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Localization; -using Volo.Abp.Localization.External; -using Volo.Abp.Threading; - -namespace LINGYUN.Abp.LocalizationManagement; - -[Dependency(ServiceLifetime.Transient, ReplaceServices = true)] -[ExposeServices( - typeof(IExternalLocalizationStore), - typeof(LocalizationStore))] -public class LocalizationStore : IExternalLocalizationStore -{ - protected IServiceProvider ServiceProvider { get; } - protected ILocalizationStoreCache LocalizationStoreCache { get; } - - public LocalizationStore( - IServiceProvider serviceProvider, - ILocalizationStoreCache localizationStoreCache) - { - ServiceProvider = serviceProvider; - LocalizationStoreCache = localizationStoreCache; - } - - [Obsolete("The framework already supports dynamic languages and will be deprecated in the next release")] - public async virtual Task> GetLanguageListAsync( - CancellationToken cancellationToken = default) - { - var context = new LocalizationStoreCacheInitializeContext(ServiceProvider); - await LocalizationStoreCache.InitializeAsync(context); - - return LocalizationStoreCache.GetLanguages().ToList(); - } - - [Obsolete("The framework already supports dynamic languages and will be deprecated in the next release")] - public async virtual Task> GetLocalizationDictionaryAsync( - string resourceName, - CancellationToken cancellationToken = default) - { - var dictionaries = new Dictionary(); - - var context = new LocalizationStoreCacheInitializeContext(ServiceProvider); - await LocalizationStoreCache.InitializeAsync(context); - - var resource = LocalizationStoreCache.GetResourceOrNull(resourceName); - - if (resource == null) - { - // 资源不存在或未启用返回空 - return dictionaries; - } - - var texts = LocalizationStoreCache.GetAllLocalizedStrings(CultureInfo.CurrentCulture.Name); - - foreach (var textGroup in texts) - { - var cultureTextDictionaires = new Dictionary(); - - foreach (var text in textGroup.Value) - { - // 本地化名称去重 - if (!cultureTextDictionaires.ContainsKey(text.Key)) - { - cultureTextDictionaires[text.Key] = new LocalizedString(text.Key, text.Value.Value.NormalizeLineEndings()); - } - } - - // 本地化语言去重 - if (!dictionaries.ContainsKey(textGroup.Key)) - { - dictionaries[textGroup.Key] = new StaticLocalizationDictionary(textGroup.Key, cultureTextDictionaires); - } - } - - return dictionaries; - } - - [Obsolete("The framework already supports dynamic languages and will be deprecated in the next release")] - public async virtual Task>> GetAllLocalizationDictionaryAsync(CancellationToken cancellationToken = default) - { - var result = new Dictionary>(); - - var context = new LocalizationStoreCacheInitializeContext(ServiceProvider); - await LocalizationStoreCache.InitializeAsync(context); - - var textList = LocalizationStoreCache.GetAllLocalizedStrings(CultureInfo.CurrentCulture.Name); - - foreach (var resourcesGroup in textList) - { - var dictionaries = new Dictionary(); - foreach (var text in resourcesGroup.Value) - { - var cultureTextDictionaires = new Dictionary(); - // 本地化名称去重 - if (!cultureTextDictionaires.ContainsKey(text.Key)) - { - cultureTextDictionaires[text.Key] = new LocalizedString(text.Key, text.Value.Value.NormalizeLineEndings()); - } - - // 本地化语言去重 - if (!dictionaries.ContainsKey(text.Key)) - { - dictionaries[text.Key] = new StaticLocalizationDictionary(text.Key, cultureTextDictionaires); - } - } - - result.Add(resourcesGroup.Key, dictionaries); - } - - return result; - } - - [Obsolete("The framework already supports dynamic languages and will be deprecated in the next release")] - public async virtual Task ResourceExistsAsync(string resourceName, CancellationToken cancellationToken = default) - { - var context = new LocalizationStoreCacheInitializeContext(ServiceProvider); - await LocalizationStoreCache.InitializeAsync(context); - - return LocalizationStoreCache.GetResourceOrNull(resourceName) != null; - } - - public LocalizationResourceBase GetResourceOrNull(string resourceName) - { - return AsyncHelper.RunSync(async () => await GetResourceOrNullAsync(resourceName)); - } - - public async virtual Task GetResourceOrNullAsync(string resourceName) - { - var context = new LocalizationStoreCacheInitializeContext(ServiceProvider); - await LocalizationStoreCache.InitializeAsync(context); - - return LocalizationStoreCache.GetResourceOrNull(resourceName); - } - - public async virtual Task GetResourceNamesAsync() - { - var context = new LocalizationStoreCacheInitializeContext(ServiceProvider); - await LocalizationStoreCache.InitializeAsync(context); - - return LocalizationStoreCache.GetResources() - .Select(x => x.ResourceName) - .ToArray(); - } - - public async virtual Task GetResourcesAsync() - { - var context = new LocalizationStoreCacheInitializeContext(ServiceProvider); - await LocalizationStoreCache.InitializeAsync(context); - - return LocalizationStoreCache.GetResources().ToArray(); - } -} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStoreCacheInitializeContext.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStoreCacheInitializeContext.cs deleted file mode 100644 index 617d9128e..000000000 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStoreCacheInitializeContext.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace LINGYUN.Abp.LocalizationManagement; - -public class LocalizationStoreCacheInitializeContext -{ - public IServiceProvider ServiceProvider { get; } - public LocalizationStoreCacheInitializeContext(IServiceProvider serviceProvider) - { - ServiceProvider = serviceProvider; - } -} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStoreInMemoryCache.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStoreInMemoryCache.cs deleted file mode 100644 index 217b70907..000000000 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStoreInMemoryCache.cs +++ /dev/null @@ -1,243 +0,0 @@ -using Microsoft.Extensions.Caching.Distributed; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Localization; -using Microsoft.Extensions.Options; -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Globalization; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Volo.Abp; -using Volo.Abp.Caching; -using Volo.Abp.DependencyInjection; -using Volo.Abp.DistributedLocking; -using Volo.Abp.Localization; -using Volo.Abp.Threading; -using Volo.Abp.Timing; - -namespace LINGYUN.Abp.LocalizationManagement; - -[ExposeServices( - typeof(ILocalizationStoreCache), - typeof(LocalizationStoreInMemoryCache))] -public class LocalizationStoreInMemoryCache : ILocalizationStoreCache, ISingletonDependency -{ - public string CacheStamp { get; set; } - public DateTime? LastCheckTime { get; set; } - - public SemaphoreSlim SyncSemaphore { get; } = new(1, 1); - - protected LocalizationResourceDictionary Resources { get; } - protected LocalizationLanguageDictionary Languages { get; } - protected LocalizationDictionaryWithResource LocalizedStrings { get; } - - private readonly IClock _clock; - private readonly IDistributedCache _distributedCache; - private readonly IAbpDistributedLock _distributedLock; - private readonly AbpDistributedCacheOptions _distributedCacheOptions; - private readonly AbpLocalizationManagementOptions _managementOptions; - - public LocalizationStoreInMemoryCache( - IClock clock, - IDistributedCache distributedCache, - IAbpDistributedLock distributedLock, - IOptions distributedCacheOptions, - IOptions managementOptions) - { - _clock = clock; - _distributedCache = distributedCache; - _distributedLock = distributedLock; - _distributedCacheOptions = distributedCacheOptions.Value; - _managementOptions = managementOptions.Value; - - Resources = new LocalizationResourceDictionary(); - Languages = new LocalizationLanguageDictionary(); - LocalizedStrings = new LocalizationDictionaryWithResource(); - } - - public async virtual Task InitializeAsync(LocalizationStoreCacheInitializeContext context) - { - using (await SyncSemaphore.LockAsync()) - { - await EnsureCacheIsUptoDateAsync(context); - } - } - - public virtual IDictionary GetAllLocalizedStrings(string cultureName) - { - var localizedStrings = new Dictionary(); - - foreach (var resource in Resources) - { - var localizedStringsInResource = LocalizedStrings.GetOrDefault(resource.Key); - if (localizedStringsInResource == null) - { - continue; - } - - var localizedStringsInCurrentCulture = localizedStringsInResource.GetOrDefault(cultureName); - if (localizedStringsInCurrentCulture == null) - { - continue; - } - - var currentCultureLocalizedStrings = new LocalizationDictionary(); - - foreach (var localizedString in localizedStringsInCurrentCulture) - { - if (!currentCultureLocalizedStrings.ContainsKey(localizedString.Key)) - { - currentCultureLocalizedStrings.Add(localizedString.Key, localizedString.Value); - } - } - - localizedStrings[resource.Key] = currentCultureLocalizedStrings; - } - - return localizedStrings; - } - - public virtual LocalizedString GetLocalizedStringOrNull(string resourceName, string cultureName, string name) - { - var localizedStringsInResource = LocalizedStrings.GetOrDefault(resourceName); - if (localizedStringsInResource == null) - { - return null; - } - - var currentCultureLocalizedStrings = localizedStringsInResource.GetOrDefault(cultureName); - if (currentCultureLocalizedStrings == null) - { - return null; - } - - return currentCultureLocalizedStrings.GetOrDefault(name); - } - - public virtual LocalizationResourceBase GetResourceOrNull(string resourceName) - { - return Resources.GetOrDefault(resourceName); - } - - public virtual IReadOnlyList GetResources() - { - return Resources.Values.ToImmutableList(); - } - - public virtual IReadOnlyList GetLanguages() - { - return Languages.Values.ToImmutableList(); - } - - protected async virtual Task EnsureCacheIsUptoDateAsync(LocalizationStoreCacheInitializeContext context) - { - if (LastCheckTime.HasValue && - _clock.Now.Subtract(LastCheckTime.Value).TotalSeconds < 30) - { - return; - } - - var stampInDistributedCache = await GetOrSetStampInDistributedCache(); - - if (stampInDistributedCache == CacheStamp) - { - LastCheckTime = _clock.Now; - return; - } - - await UpdateInMemoryStoreCache(context); - - CacheStamp = stampInDistributedCache; - LastCheckTime = _clock.Now; - } - - protected async virtual Task UpdateInMemoryStoreCache(LocalizationStoreCacheInitializeContext context) - { - var textRepository = context.ServiceProvider.GetRequiredService(); - var languageRepository = context.ServiceProvider.GetRequiredService(); - var resourceRepository = context.ServiceProvider.GetRequiredService(); - - var resourceRecords = await resourceRepository.GetListAsync(); - var languageRecords = await languageRepository.GetActivedListAsync(); - var textRecords = await textRepository.GetListAsync(); - - Resources.Clear(); - Languages.Clear(); - - foreach (var resourceRecord in resourceRecords) - { - Resources[resourceRecord.Name] = new NonTypedLocalizationResource(resourceRecord.Name, resourceRecord.DefaultCultureName); - - var localizedStrings = LocalizedStrings.GetOrDefault(resourceRecord.Name); - - localizedStrings ??= new LocalizationDictionaryWithCulture(); - localizedStrings.Clear(); - - // 需要按照不同文化聚合 - foreach (var textRecordByCulture in textRecords.Where(x => x.ResourceName == resourceRecord.Name).GroupBy(x => x.CultureName)) - { - var currentCultureLocalizedStrings = new LocalizationDictionary(); - foreach (var textRecord in textRecordByCulture) - { - currentCultureLocalizedStrings[textRecord.Key] = new LocalizedString(textRecord.Key, textRecord.Value); - } - localizedStrings[textRecordByCulture.Key] = currentCultureLocalizedStrings; - } - - LocalizedStrings[resourceRecord.Name] = localizedStrings; - } - - foreach (var language in languageRecords) - { - Languages[language.CultureName] = new LanguageInfo( - language.CultureName, - language.UiCultureName, - language.DisplayName); - } - } - - protected async virtual Task GetOrSetStampInDistributedCache() - { - var cacheKey = $"{_distributedCacheOptions.KeyPrefix}_AbpInMemoryLocalizationCacheStamp"; - - var stampInDistributedCache = await _distributedCache.GetStringAsync(cacheKey); - if (stampInDistributedCache != null) - { - return stampInDistributedCache; - } - - var distributedLockKey = $"{_distributedCacheOptions.KeyPrefix}_AbpLocalizationUpdateLock"; - await using (var commonLockHandle = await _distributedLock - .TryAcquireAsync(distributedLockKey, _managementOptions.LocalizationCacheStampTimeOut)) - { - if (commonLockHandle == null) - { - /* This request will fail */ - throw new AbpException( - "Could not acquire distributed lock for localization stamp check!" - ); - } - - stampInDistributedCache = await _distributedCache.GetStringAsync(cacheKey); - if (stampInDistributedCache != null) - { - return stampInDistributedCache; - } - - stampInDistributedCache = Guid.NewGuid().ToString(); - - await _distributedCache.SetStringAsync( - cacheKey, - stampInDistributedCache, - new DistributedCacheEntryOptions - { - SlidingExpiration = _managementOptions.LocalizationCacheStampExpiration - } - ); - } - - return stampInDistributedCache; - } -} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationTextCacheInvalidator.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationTextCacheInvalidator.cs new file mode 100644 index 000000000..4ca3bb4ea --- /dev/null +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationTextCacheInvalidator.cs @@ -0,0 +1,25 @@ +using System.Threading.Tasks; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Entities.Events; +using Volo.Abp.EventBus; + +namespace LINGYUN.Abp.LocalizationManagement; + +public class LocalizationTextCacheInvalidator : ILocalEventHandler>, ITransientDependency +{ + private readonly IDistributedCache _localizationTextCache; + public LocalizationTextCacheInvalidator(IDistributedCache localizationTextCache) + { + _localizationTextCache = localizationTextCache; + } + + public async virtual Task HandleEventAsync(EntityChangedEventData eventData) + { + var cacheKey = LocalizationTextCacheItem.CalculateCacheKey( + eventData.Entity.ResourceName, + eventData.Entity.CultureName); + + await _localizationTextCache.RemoveAsync(cacheKey); + } +} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationTextCacheItem.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationTextCacheItem.cs new file mode 100644 index 000000000..be11a3e37 --- /dev/null +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationTextCacheItem.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using Volo.Abp.MultiTenancy; + +namespace LINGYUN.Abp.LocalizationManagement; + +[Serializable] +[IgnoreMultiTenancy] +public class LocalizationTextCacheItem +{ + private const string CacheKeyFormat = "r:{0},c:{1}"; + public string ResourceName { get; set; } + public string CultureName { get; set; } + public Dictionary Texts { get; set; } + public LocalizationTextCacheItem() + { + Texts = new Dictionary(); + } + public LocalizationTextCacheItem(string resourceName, string cultureName, Dictionary texts) + { + ResourceName = resourceName; + CultureName = cultureName; + Texts = texts; + } + + public static string CalculateCacheKey(string resourceName, string cultureName) + { + return string.Format(CacheKeyFormat, resourceName, cultureName); + } +} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationTextStoreCache.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationTextStoreCache.cs new file mode 100644 index 000000000..4530a43de --- /dev/null +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationTextStoreCache.cs @@ -0,0 +1,119 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.LocalizationManagement; + +public class LocalizationTextStoreCache : ILocalizationTextStoreCache, ISingletonDependency +{ + protected IServiceScopeFactory ServiceScopeFactory { get; } + protected IDistributedCache LocalizationTextCache { get; } + public LocalizationTextStoreCache( + IServiceScopeFactory serviceScopeFactory, + IDistributedCache localizationTextCache) + { + ServiceScopeFactory = serviceScopeFactory; + LocalizationTextCache = localizationTextCache; + } + + public virtual void Fill(LocalizationResourceBase resource, string cultureName, Dictionary dictionary) + { + var cacheItem = GetCacheItem(resource, cultureName); + + foreach (var text in cacheItem.Texts) + { + dictionary[text.Key] = new LocalizedString(text.Key, text.Value); + } + } + + public async virtual Task FillAsync(LocalizationResourceBase resource, string cultureName, Dictionary dictionary) + { + var cacheItem = await GetCacheItemAsync(resource, cultureName); + + foreach (var text in cacheItem.Texts) + { + dictionary[text.Key] = new LocalizedString(text.Key, text.Value); + } + } + + public virtual LocalizedString GetOrNull(LocalizationResourceBase resource, string cultureName, string name) + { + var cacheItem = GetCacheItem(resource, cultureName); + + var value = cacheItem.Texts.GetOrDefault(name); + if (value.IsNullOrWhiteSpace()) + { + return null; + } + + return new LocalizedString(name, value); + } + + protected virtual LocalizationTextCacheItem GetCacheItem(LocalizationResourceBase resource, string cultureName) + { + var cacheKey = LocalizationTextCacheItem.CalculateCacheKey(resource.ResourceName, cultureName); + var cacheItem = LocalizationTextCache.Get(cacheKey); + if (cacheItem != null) + { + return cacheItem; + } + + var setTexts = new Dictionary(); + using (var scope = ServiceScopeFactory.CreateScope()) + { + var provider = scope.ServiceProvider.GetRequiredService(); + using (provider.Change(false)) + { + var repo = scope.ServiceProvider.GetRequiredService(); + var texts = repo.GetList(resource.ResourceName, cultureName); + foreach (var text in texts) + { + setTexts[text.Key] = text.Value; + } + } + } + + cacheItem = new LocalizationTextCacheItem(resource.ResourceName, cultureName, setTexts); + + LocalizationTextCache.Set(cacheKey, cacheItem); + + return cacheItem; + } + + protected async virtual Task GetCacheItemAsync(LocalizationResourceBase resource, string cultureName) + { + var cacheKey = LocalizationTextCacheItem.CalculateCacheKey(resource.ResourceName, cultureName); + var cacheItem = await LocalizationTextCache.GetAsync(cacheKey); + if (cacheItem != null) + { + return cacheItem; + } + + var setTexts = new Dictionary(); + using (var scope = ServiceScopeFactory.CreateScope()) + { + var provider = scope.ServiceProvider.GetRequiredService(); + using (provider.Change(false)) + { + var repo = scope.ServiceProvider.GetRequiredService(); + var texts = await repo.GetListAsync(resource.ResourceName, cultureName); + foreach (var text in texts) + { + setTexts[text.Key] = text.Value; + } + } + } + + cacheItem = new LocalizationTextCacheItem(resource.ResourceName, cultureName, setTexts); + + await LocalizationTextCache.SetAsync(cacheKey, cacheItem); + + return cacheItem; + } +} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/StaticLocalizationSaver.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/StaticLocalizationSaver.cs new file mode 100644 index 000000000..daf6ddecb --- /dev/null +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/StaticLocalizationSaver.cs @@ -0,0 +1,309 @@ +using Microsoft.Extensions.Caching.Distributed; +using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.Json; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; +using Volo.Abp.DistributedLocking; +using Volo.Abp.Guids; +using Volo.Abp.Localization; +using Volo.Abp.Threading; +using Volo.Abp.Uow; + +namespace LINGYUN.Abp.LocalizationManagement; + +public class StaticLocalizationSaver : IStaticLocalizationSaver, ITransientDependency +{ + protected ILogger Logger { get; } + + protected IDistributedCache Cache { get; } + protected IGuidGenerator GuidGenerator { get; } + protected IAbpDistributedLock DistributedLock { get; } + protected IUnitOfWorkManager UnitOfWorkManager { get; } + protected AbpDistributedCacheOptions CacheOptions { get; } + protected IApplicationInfoAccessor ApplicationInfoAccessor { get; } + protected ICancellationTokenProvider CancellationTokenProvider { get; } + protected IStringLocalizerFactory StringLocalizerFactory { get; } + protected AbpLocalizationOptions LocalizationOptions { get; } + protected AbpLocalizationManagementOptions LocalizationManagementOptions { get; } + + protected ILanguageRepository LanguageRepository { get; } + protected IResourceRepository ResourceRepository { get; } + protected ITextRepository TextRepository { get; } + + public StaticLocalizationSaver( + ILogger logger, + IDistributedCache cache, + IGuidGenerator guidGenerator, + IAbpDistributedLock distributedLock, + IUnitOfWorkManager unitOfWorkManager, + IApplicationInfoAccessor applicationInfoAccessor, + ICancellationTokenProvider cancellationTokenProvider, + IStringLocalizerFactory stringLocalizerFactory, + IOptions cacheOptions, + IOptions localizationOptions, + IOptions localizationManagementOptions, + ILanguageRepository languageRepository, + IResourceRepository resourceRepository, + ITextRepository textRepository) + { + Logger = logger; + Cache = cache; + GuidGenerator = guidGenerator; + DistributedLock = distributedLock; + UnitOfWorkManager = unitOfWorkManager; + CacheOptions = cacheOptions.Value; + ApplicationInfoAccessor = applicationInfoAccessor; + CancellationTokenProvider = cancellationTokenProvider; + StringLocalizerFactory = stringLocalizerFactory; + LocalizationOptions = localizationOptions.Value; + LocalizationManagementOptions = localizationManagementOptions.Value; + LanguageRepository = languageRepository; + ResourceRepository = resourceRepository; + TextRepository = textRepository; + } + + public async virtual Task SaveAsync() + { + if (!LocalizationManagementOptions.SaveStaticLocalizationsToDatabase) + { + return; + } + + Logger.LogDebug("Waiting to acquire the distributed lock for saving static localizations..."); + + await using var applicationLockHandle = await DistributedLock.TryAcquireAsync(GetApplicationDistributedLockKey()); + if (applicationLockHandle == null) + { + return; + } + + using var unitOfWork = UnitOfWorkManager.Begin(true, true); + try + { + await SaveLanguagesAsync(); + await SaveResourcesAsync(); + await SaveTextsAsync(); + } + catch (Exception ex) + { + Logger.LogInformation("Filed to save static localizations."); + Logger.LogWarning(ex.ToString()); + try + { + await unitOfWork.RollbackAsync(); + } + catch + { + Logger.LogInformation("Filed to rollback saving static localizations."); + } + throw; + } + + await unitOfWork.CompleteAsync(); + + Logger.LogInformation("Completed to save static localizations."); + } + + private async Task SaveLanguagesAsync() + { + var languageHashKey = GetApplicationLanguageHashKey(); + var languageHashCache = await Cache.GetStringAsync(languageHashKey, CancellationTokenProvider.Token); + var languageHash = CalculateLanguagesHash(LocalizationOptions.Languages); + if (languageHashCache != languageHash) + { + var newLanguages = new List(); + foreach (var language in LocalizationOptions.Languages) + { + if (await LanguageRepository.FindByCultureNameAsync(language.CultureName, cancellationToken: CancellationTokenProvider.Token) == null) + { + newLanguages.Add( + new Language( + GuidGenerator.Create(), + language.CultureName, + language.UiCultureName, + language.DisplayName, + language.TwoLetterISOLanguageName)); + } + } + + if (newLanguages.Any()) + { + Logger.LogInformation("Saved {0} new languages.", newLanguages.Count); + + await LanguageRepository.InsertManyAsync(newLanguages, cancellationToken: CancellationTokenProvider.Token); + } + + await Cache.SetStringAsync(languageHashKey, languageHash, CancellationTokenProvider.Token); + } + } + + private async Task SaveResourcesAsync() + { + var resourceHashKey = GetApplicationResourceHashKey(); + var resourceHashCache = await Cache.GetStringAsync(resourceHashKey, CancellationTokenProvider.Token); + var resourceHash = CalculateResourceHash(LocalizationOptions.Resources.Select(x => x.Value).ToList()); + if (resourceHashCache != resourceHash) + { + var newResources = new List(); + foreach (var resource in LocalizationOptions.Resources) + { + if (await ResourceRepository.FindByNameAsync(resource.Key, cancellationToken: CancellationTokenProvider.Token) == null) + { + newResources.Add( + new Resource( + GuidGenerator.Create(), + resource.Value.ResourceName, + resource.Value.ResourceName, + resource.Value.ResourceName, + resource.Value.DefaultCultureName)); + } + } + if (newResources.Any()) + { + Logger.LogInformation("Saved {0} new resources.", newResources.Count); + + await ResourceRepository.InsertManyAsync(newResources, cancellationToken: CancellationTokenProvider.Token); + } + + await Cache.SetStringAsync(resourceHashKey, resourceHash, CancellationTokenProvider.Token); + } + } + + private async Task SaveTextsAsync() + { + var createTexts = new List(); + var updateTexts = new List(); + + var localizationResources = LocalizationOptions.Resources.Values.OfType().ToArray(); + + var languageResourceTexts = new Dictionary>>(); + + foreach (var language in LocalizationOptions.Languages) + { + var resourceTexts = new Dictionary>(); + foreach (var resource in localizationResources) + { + using (CultureHelper.Use(language.CultureName, language.UiCultureName)) + { + var stringLocalizer = StringLocalizerFactory.Create(resource.ResourceType); + + var localizedStrings = await stringLocalizer.GetAllStringsAsync(false, false, false); + + var textHashKey = GetApplicationTextHashKey(resource.ResourceName, language.CultureName); + var textHashCache = await Cache.GetStringAsync(textHashKey, CancellationTokenProvider.Token); + var textHash = CalculateTextsHash(localizedStrings); + if (textHashCache == textHash) + { + continue; + } + + var savedLocalizedStrings = await TextRepository.GetListAsync( + resource.ResourceName, + language.CultureName); + + foreach (var localizedString in localizedStrings) + { + var findLocalizedString = savedLocalizedStrings.FirstOrDefault(x => x.Key == localizedString.Name); + if (findLocalizedString == null) + { + createTexts.Add( + new Text( + resource.ResourceName, + language.CultureName, + localizedString.Name, + localizedString.Value)); + continue; + } + + if (!string.Equals(findLocalizedString.Value, localizedString.Value, StringComparison.InvariantCultureIgnoreCase)) + { + findLocalizedString.SetValue(localizedString.Value); + updateTexts.Add(findLocalizedString); + } + } + + await Cache.SetStringAsync(textHashKey, textHash, CancellationTokenProvider.Token); + } + } + + languageResourceTexts[language.CultureName] = resourceTexts; + } + + if (createTexts.Any()) + { + Logger.LogInformation("Saved {0} new texts.", createTexts.Count); + + await TextRepository.InsertManyAsync(createTexts, cancellationToken: CancellationTokenProvider.Token); + } + if (updateTexts.Any()) + { + Logger.LogInformation("Update {0} changed texts.", updateTexts.Count); + + await TextRepository.UpdateManyAsync(updateTexts, cancellationToken: CancellationTokenProvider.Token); + } + } + + private string GetApplicationDistributedLockKey() + { + return $"{CacheOptions.KeyPrefix}_{ApplicationInfoAccessor.ApplicationName}_AbpLocalizationsUpdateLock"; + } + + private string GetApplicationResourceHashKey() + { + return $"{CacheOptions.KeyPrefix}_{ApplicationInfoAccessor.ApplicationName}_AbpLocalizationResourcesHash"; + } + + private string GetApplicationLanguageHashKey() + { + return $"{CacheOptions.KeyPrefix}_{ApplicationInfoAccessor.ApplicationName}_AbpLocalizationLanguagesHash"; + } + private string GetApplicationTextHashKey(string resourceName, string cultureName) + { + return $"{CacheOptions.KeyPrefix}_{ApplicationInfoAccessor.ApplicationName}_{resourceName}_{cultureName}_AbpLocalizationTextsHash"; + } + + private static string CalculateResourceHash(List localizationResources) + { + var stringBuilder = new StringBuilder(); + + stringBuilder.Append("LocalizationResources:"); + stringBuilder.AppendLine(JsonSerializer.Serialize(localizationResources)); + + return stringBuilder + .ToString() + .ToMd5(); + } + + private static string CalculateLanguagesHash(List languageInfos) + { + var stringBuilder = new StringBuilder(); + + stringBuilder.Append("LocalizationLanguages:"); + stringBuilder.AppendLine(JsonSerializer.Serialize(languageInfos)); + + return stringBuilder + .ToString() + .ToMd5(); + } + + private static string CalculateTextsHash(IEnumerable localizers) + { + var stringBuilder = new StringBuilder(); + + stringBuilder.Append("LocalizationTexts:"); + stringBuilder.AppendLine(JsonSerializer.Serialize( + localizers.Select(x => new NameValue(x.Name, x.Value)).ToList())); + + return stringBuilder + .ToString() + .ToMd5(); + } +} diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreTextRepository.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreTextRepository.cs index 0b7446b71..33b979771 100644 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreTextRepository.cs +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreTextRepository.cs @@ -62,29 +62,19 @@ public class EfCoreTextRepository : EfCoreRepository GetList(string resourceName = null, string cultureName = null) + { + return DbSet + .WhereIf(!resourceName.IsNullOrWhiteSpace(), x => x.ResourceName.Equals(resourceName)) + .WhereIf(!cultureName.IsNullOrWhiteSpace(), x => x.CultureName.Equals(cultureName)) + .ToList(); + } + public async virtual Task> GetListAsync( string resourceName = null, string cultureName = null, CancellationToken cancellationToken = default) { - //var languages = (await GetDbContextAsync()).Set(); - //var resources = (IQueryable)(await GetDbContextAsync()).Set(); - //if (!resourceName.IsNullOrWhiteSpace()) - //{ - // resources = resources.Where(x => x.Name.Equals(resourceName)); - //} - - //var texts = await GetDbSetAsync(); - - //return await (from txts in texts - // join r in resources - // on txts.ResourceName equals r.Name - // join lg in languages - // on txts.CultureName equals lg.CultureName - // where r.Enable && lg.Enable - // select txts) - // .ToListAsync(GetCancellationToken(cancellationToken)); - return await (await GetDbSetAsync()) .WhereIf(!resourceName.IsNullOrWhiteSpace(), x => x.ResourceName.Equals(resourceName)) .WhereIf(!cultureName.IsNullOrWhiteSpace(), x => x.CultureName.Equals(cultureName)) diff --git a/aspnet-core/modules/saas/LINGYUN.Abp.Saas.Domain/LINGYUN/Abp/Saas/Tenants/TenantCacheItem.cs b/aspnet-core/modules/saas/LINGYUN.Abp.Saas.Domain/LINGYUN/Abp/Saas/Tenants/TenantCacheItem.cs index 9962e3b81..f7c982e5f 100644 --- a/aspnet-core/modules/saas/LINGYUN.Abp.Saas.Domain/LINGYUN/Abp/Saas/Tenants/TenantCacheItem.cs +++ b/aspnet-core/modules/saas/LINGYUN.Abp.Saas.Domain/LINGYUN/Abp/Saas/Tenants/TenantCacheItem.cs @@ -1,35 +1,35 @@ -using System; +using System; using Volo.Abp; -using Volo.Abp.MultiTenancy; - -namespace LINGYUN.Abp.Saas.Tenants; - -[Serializable] -[IgnoreMultiTenancy] -public class TenantCacheItem -{ - private const string CacheKeyFormat = "i:{0},n:{1}"; - - public TenantConfiguration Value { get; set; } - - public TenantCacheItem() - { - } - - public TenantCacheItem(TenantConfiguration value) - { - Value = value; - } - - public static string CalculateCacheKey(Guid? id, string name) - { - if (id == null && name.IsNullOrWhiteSpace()) - { - throw new AbpException("Both id and name can't be invalid."); - } - - return string.Format(CacheKeyFormat, - id?.ToString() ?? "null", - (name.IsNullOrWhiteSpace() ? "null" : name)); - } -} +using Volo.Abp.MultiTenancy; + +namespace LINGYUN.Abp.Saas.Tenants; + +[Serializable] +[IgnoreMultiTenancy] +public class TenantCacheItem +{ + private const string CacheKeyFormat = "i:{0},n:{1}"; + + public TenantConfiguration Value { get; set; } + + public TenantCacheItem() + { + } + + public TenantCacheItem(TenantConfiguration value) + { + Value = value; + } + + public static string CalculateCacheKey(Guid? id, string name) + { + if (id == null && name.IsNullOrWhiteSpace()) + { + throw new AbpException("Both id and name can't be invalid."); + } + + return string.Format(CacheKeyFormat, + id?.ToString() ?? "null", + (name.IsNullOrWhiteSpace() ? "null" : name)); + } +} diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/DataSeeder/DataSeederWorker.cs b/aspnet-core/services/LY.MicroService.Applications.Single/DataSeeder/DataSeederWorker.cs new file mode 100644 index 000000000..d50c8cf41 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.Applications.Single/DataSeeder/DataSeederWorker.cs @@ -0,0 +1,16 @@ +namespace LY.MicroService.Applications.Single.DataSeeder; + +public class DataSeederWorker : BackgroundService +{ + protected IDataSeeder DataSeeder { get; } + + public DataSeederWorker(IDataSeeder dataSeeder) + { + DataSeeder = dataSeeder; + } + + protected async override Task ExecuteAsync(CancellationToken stoppingToken) + { + await DataSeeder.SeedAsync(); + } +} diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml deleted file mode 100644 index aed9202eb..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml +++ /dev/null @@ -1,103 +0,0 @@ -@using Volo.Abp.Account.Localization -@using Volo.Abp.Users -@using Microsoft.AspNetCore.Mvc.Localization -@using Microsoft.Extensions.Localization -@using Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.PersonalInfo -@using Volo.Abp.AspNetCore.Mvc.UI.Theming -@using Volo.Abp.Data -@using Volo.Abp.Identity.Settings -@using Volo.Abp.Localization -@using Volo.Abp.Settings -@using Volo.Abp.ObjectExtending -@inject IHtmlLocalizer L -@inject ICurrentUser CurrentUser -@inject ISettingProvider SettingManager -@inject IThemeManager ThemeManager -@inject IStringLocalizerFactory StringLocalizerFactory -@model Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.PersonalInfo.AccountProfilePersonalInfoManagementGroupViewComponent.PersonalInfoModel -@{ - var isUserNameUpdateEnabled = string.Equals(await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsUserNameUpdateEnabled), "true", - StringComparison.OrdinalIgnoreCase); - - var isEmailUpdateEnabled = string.Equals(await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsEmailUpdateEnabled), "true", - StringComparison.OrdinalIgnoreCase); -} - -

@L["PersonalSettings"]


-
- - - - - - - - - - - - - - - - - - - - @if (CurrentUser.EmailVerified) - { - - } - else - { - @**@ - @L["Validation"].Value - } - - - - - - @foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties()) - { - var isAllowed = propertyInfo.Configuration.GetOrDefault(IdentityModuleExtensionConsts.ConfigurationNames.AllowUserToEdit); - - if (isAllowed == null || !isAllowed.Equals(true)) - { - continue; - } - - if (!propertyInfo.Name.EndsWith("_Text")) - { - if (propertyInfo.Type.IsEnum || !propertyInfo.Lookup.Url.IsNullOrEmpty()) - { - if (propertyInfo.Type.IsEnum) - { - Model.ExtraProperties.ToEnum(propertyInfo.Name, propertyInfo.Type); - } - - - } - else - { - - } - } - } - - - diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js deleted file mode 100644 index 55a88e52e..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js +++ /dev/null @@ -1,28 +0,0 @@ -(function ($) { - $(function () { - var l = abp.localization.getResource("AbpAccount"); - - $('#PersonalSettingsForm').submit(function (e) { - e.preventDefault(); - - if (!$('#PersonalSettingsForm').valid()) { - return false; - } - - var input = $('#PersonalSettingsForm').serializeFormToObject(); - - volo.abp.account.profile.update(input).then(function (result) { - abp.notify.success(l('PersonalSettingsSaved')); - updateConcurrencyStamp(); - }); - }); - }); - - abp.event.on('passwordChanged', updateConcurrencyStamp); - - function updateConcurrencyStamp(){ - volo.abp.account.profile.get().then(function(profile){ - $("#ConcurrencyStamp").val(profile.concurrencyStamp); - }); - } -})(jQuery); diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/EmailConfirm.cshtml b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/EmailConfirm.cshtml deleted file mode 100644 index 06c9f122c..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/EmailConfirm.cshtml +++ /dev/null @@ -1,17 +0,0 @@ -@page -@inject IHtmlLocalizer L -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.Applications.Single.Pages.Account.EmailConfirmModel -@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout -
-
-

@L["EmailConfirm"]

-
- - - @L["Cancel"] - - -
-
diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/EmailConfirm.cshtml.cs b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/EmailConfirm.cshtml.cs deleted file mode 100644 index 9559961dc..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/EmailConfirm.cshtml.cs +++ /dev/null @@ -1,74 +0,0 @@ -using LINGYUN.Abp.Account; -using Microsoft.AspNetCore.Mvc; -using System; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.Identity; -using Volo.Abp.Validation; - -namespace LY.MicroService.Applications.Single.Pages.Account -{ - public class EmailConfirmModel : AccountPageModel - { - [Required] - [HiddenInput] - [BindProperty(SupportsGet = true)] - public Guid UserId { get; set; } - - [Required] - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ConfirmToken { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - public IMyProfileAppService MyProfileAppService { get; set; } - - public EmailConfirmModel() - { - LocalizationResourceType = typeof(AccountResource); - } - - public async virtual Task OnPostAsync() - { - try - { - ValidateModel(); - - await MyProfileAppService.ConfirmEmailAsync( - new ConfirmEmailInput - { - ConfirmToken = ConfirmToken, - }); - } - catch (AbpIdentityResultException e) - { - if (!string.IsNullOrWhiteSpace(e.Message)) - { - Alerts.Warning(GetLocalizeExceptionMessage(e)); - return Page(); - } - - throw; - } - catch (AbpValidationException) - { - return Page(); - } - - return RedirectToPage("./ConfirmEmailConfirmation", new - { - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash - }); - } - } -} diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/EmailConfirmConfirmation.cshtml b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/EmailConfirmConfirmation.cshtml deleted file mode 100644 index a97bd8668..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/EmailConfirmConfirmation.cshtml +++ /dev/null @@ -1,13 +0,0 @@ -@page -@model LY.MicroService.Applications.Single.Pages.Account.EmailConfirmConfirmationModel -@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@inject IHtmlLocalizer L -
-
-

@L["EmailConfirm"]

-

@L["YourEmailIsSuccessfullyConfirm"]

- @L["GoToTheApplication"] -
-
diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/EmailConfirmConfirmation.cshtml.cs b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/EmailConfirmConfirmation.cshtml.cs deleted file mode 100644 index 1787b949e..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/EmailConfirmConfirmation.cshtml.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using System.Threading.Tasks; -using Volo.Abp.Account.Web.Pages.Account; - -namespace LY.MicroService.Applications.Single.Pages.Account; - -[AllowAnonymous] -public class EmailConfirmConfirmationModel : AccountPageModel -{ - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - public async virtual Task OnGetAsync() - { - ReturnUrl = await GetRedirectUrlAsync(ReturnUrl, ReturnUrlHash); - - return Page(); - } -} diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/SendCode.cshtml b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/SendCode.cshtml deleted file mode 100644 index e180bc238..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/SendCode.cshtml +++ /dev/null @@ -1,26 +0,0 @@ -@page -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.Applications.Single.Pages.Account.SendCodeModel -@inject IHtmlLocalizer L - -
-
-

@L["TwoFactor"]

-
- - - -
- -
-
- @L["SendVerifyCode"] -
- - @L["Login"] - - -
-
- diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/SendCode.cshtml.cs b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/SendCode.cshtml.cs deleted file mode 100644 index ab3353799..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/SendCode.cshtml.cs +++ /dev/null @@ -1,128 +0,0 @@ -using LINGYUN.Abp.Account.Emailing; -using LINGYUN.Abp.Identity.Settings; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Rendering; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Volo.Abp; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.Sms; - -namespace LY.MicroService.Applications.Single.Pages.Account -{ - public class SendCodeModel : AccountPageModel - { - [BindProperty] - public SendCodeInputModel Input { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public bool RememberMe { get; set; } - - public IEnumerable Providers { get; set; } - - protected ISmsSender SmsSender { get; } - - protected IAccountEmailVerifySender AccountEmailVerifySender { get; } - - public SendCodeModel( - ISmsSender smsSender, - IAccountEmailVerifySender accountEmailVerifySender) - { - SmsSender = smsSender; - AccountEmailVerifySender = accountEmailVerifySender; - - LocalizationResourceType = typeof(AccountResource); - } - - public virtual async Task OnGetAsync() - { - Input = new SendCodeInputModel(); - - var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); - if (user == null) - { - // ˫Ϣ֤ʧ,һ㶼dzʱ˻ûϢ - Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); - return Page(); - } - var userFactors = await UserManager.GetValidTwoFactorProvidersAsync(user); - Providers = userFactors.Select(purpose => new SelectListItem { Text = purpose, Value = purpose }).ToList(); - - return Page(); - } - - public virtual async Task OnPostAsync() - { - var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); - if (user == null) - { - Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); - return Page(); - } - - if (Input.SelectedProvider == "Authenticator") - { - // ûͨʼ/ӽȨҳ - return RedirectToPage("VerifyAuthenticatorCode", new - { - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash, - rememberMe = RememberMe - }); - } - // ֤ - var code = await UserManager.GenerateTwoFactorTokenAsync(user, Input.SelectedProvider); - if (string.IsNullOrWhiteSpace(code)) - { - Alerts.Warning(L["InvaidGenerateTwoFactorToken"]); - return Page(); - } - - if (Input.SelectedProvider == "Email") - { - await AccountEmailVerifySender - .SendMailLoginVerifyCodeAsync( - code, - user.UserName, - user.Email); - } - else if (Input.SelectedProvider == "Phone") - { - var phoneNumber = await UserManager.GetPhoneNumberAsync(user); - var templateCode = await SettingProvider.GetOrNullAsync(IdentitySettingNames.User.SmsUserSignin); - Check.NotNullOrWhiteSpace(templateCode, nameof(IdentitySettingNames.User.SmsUserSignin)); - - // TODO: Ժչģ巢 - var smsMessage = new SmsMessage(phoneNumber, code); - smsMessage.Properties.Add("code", code); - smsMessage.Properties.Add("TemplateCode", templateCode); - - await SmsSender.SendAsync(smsMessage); - } - - return RedirectToPage("VerifyCode", new - { - provider = Input.SelectedProvider, - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash, - rememberMe = RememberMe - }); - } - } - - public class SendCodeInputModel - { - public string SelectedProvider { get; set; } - } -} diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/SendEmailConfirm.cshtml b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/SendEmailConfirm.cshtml deleted file mode 100644 index 6fe6fdf64..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/SendEmailConfirm.cshtml +++ /dev/null @@ -1,16 +0,0 @@ -@page -@inject IHtmlLocalizer L -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.Applications.Single.Pages.Account.SendEmailConfirmModel -@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout -
-
-

@L["EmailConfirm"]

-
- - @L["Cancel"] - - -
-
diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/SendEmailConfirm.cshtml.cs b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/SendEmailConfirm.cshtml.cs deleted file mode 100644 index 541ebc66e..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/SendEmailConfirm.cshtml.cs +++ /dev/null @@ -1,75 +0,0 @@ -using LINGYUN.Abp.Account; -using Microsoft.AspNetCore.Mvc; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.Identity; -using Volo.Abp.Validation; - -namespace LY.MicroService.Applications.Single.Pages.Account -{ - public class SendEmailConfirmModel : AccountPageModel - { - [BindProperty(SupportsGet = true)] - public string Email { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - public IMyProfileAppService MyProfileAppService { get; set; } - - public SendEmailConfirmModel() - { - LocalizationResourceType = typeof(AccountResource); - } - - public virtual Task OnGetAsync() - { - Email = CurrentUser.Email; - - return Task.FromResult(Page()); - } - - public async virtual Task OnPostAsync() - { - try - { - ValidateModel(); - - await MyProfileAppService.SendEmailConfirmLinkAsync( - new SendEmailConfirmCodeDto - { - Email = Email, - AppName = "MVC", - ReturnUrl = ReturnUrl, - ReturnUrlHash = ReturnUrlHash - }); - } - catch (AbpIdentityResultException e) - { - if (!string.IsNullOrWhiteSpace(e.Message)) - { - Alerts.Warning(GetLocalizeExceptionMessage(e)); - return Page(); - } - - throw; - } - catch (AbpValidationException) - { - return Page(); - } - - return RedirectToPage("~/Account/Manage", new - { - returnUrl = ReturnUrl - }); - } - } -} diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/TwoFactorSupportedLoginModel.cs b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/TwoFactorSupportedLoginModel.cs deleted file mode 100644 index 1ba62d4b9..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/TwoFactorSupportedLoginModel.cs +++ /dev/null @@ -1,65 +0,0 @@ -using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using System.Collections.Generic; -using System.Threading.Tasks; -using Volo.Abp.Account.Web; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Identity; -using Volo.Abp.OpenIddict; -using IdentityOptions = Microsoft.AspNetCore.Identity.IdentityOptions; - -namespace LY.MicroService.Applications.Single.Pages.Account -{ - /// - /// 重写登录模型,实现双因素登录 - /// - [Dependency(ReplaceServices = true)] - [ExposeServices(typeof(LoginModel), typeof(OpenIddictSupportedLoginModel))] - public class TwoFactorSupportedLoginModel : OpenIddictSupportedLoginModel - { - public TwoFactorSupportedLoginModel( - IAuthenticationSchemeProvider schemeProvider, - IOptions accountOptions, - IOptions identityOptions, - IdentityDynamicClaimsPrincipalContributorCache identityDynamicClaimsPrincipalContributorCache, - AbpOpenIddictRequestHelper openIddictRequestHelper) - : base(schemeProvider, accountOptions, identityOptions, identityDynamicClaimsPrincipalContributorCache, openIddictRequestHelper) - { - - } - - protected async override Task> GetExternalProviders() - { - var providers = await base.GetExternalProviders(); - - foreach (var provider in providers) - { - var localizedDisplayName = L[provider.DisplayName]; - if (localizedDisplayName.ResourceNotFound) - { - localizedDisplayName = L["AuthenticationScheme:" + provider.DisplayName]; - } - - if (!localizedDisplayName.ResourceNotFound) - { - provider.DisplayName = localizedDisplayName.Value; - } - } - - return providers; - } - - protected override Task TwoFactorLoginResultAsync() - { - // 重定向双因素认证页面 - return Task.FromResult(RedirectToPage("SendCode", new - { - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash, - rememberMe = LoginInput.RememberMe - })); - } - } -} diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/UseRecoveryCode.cshtml b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/UseRecoveryCode.cshtml deleted file mode 100644 index 061de0112..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/UseRecoveryCode.cshtml +++ /dev/null @@ -1,4 +0,0 @@ -@page -@model LY.MicroService.Applications.Single.Pages.Account.UseRecoveryCodeModel -@{ -} diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/UseRecoveryCode.cshtml.cs b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/UseRecoveryCode.cshtml.cs deleted file mode 100644 index 96029e69b..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/UseRecoveryCode.cshtml.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Microsoft.AspNetCore.Mvc.RazorPages; - -namespace LY.MicroService.Applications.Single.Pages.Account -{ - public class UseRecoveryCodeModel : PageModel - { - public void OnGet() - { - } - } -} diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/VerifyAuthenticatorCode.cshtml b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/VerifyAuthenticatorCode.cshtml deleted file mode 100644 index 537dee923..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/VerifyAuthenticatorCode.cshtml +++ /dev/null @@ -1,26 +0,0 @@ -@page -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.Applications.Single.Pages.Account.VerifyAuthenticatorCodeModel -@inject IHtmlLocalizer L -
-
-
- - -
- - - -
-
- - -
- @L["VerifyAuthenticatorCode"] - - @L["Login"] - -
-
-
\ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/VerifyAuthenticatorCode.cshtml.cs b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/VerifyAuthenticatorCode.cshtml.cs deleted file mode 100644 index c4f00379c..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/VerifyAuthenticatorCode.cshtml.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Web.Pages.Account; - -namespace LY.MicroService.Applications.Single.Pages.Account -{ - public class VerifyAuthenticatorCodeModel : AccountPageModel - { - [BindProperty] - public VerifyAuthenticatorCodeInputModel Input { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - [BindProperty(SupportsGet = true)] - public bool RememberBrowser { get; set; } - - [HiddenInput] - public bool RememberMe { get; set; } - - public virtual IActionResult OnGet() - { - Input = new VerifyAuthenticatorCodeInputModel(); - - return Page(); - } - - public virtual async Task OnPostAsync() - { - var result = await SignInManager.TwoFactorAuthenticatorSignInAsync(Input.VerifyCode, RememberMe, RememberBrowser); - if (result.Succeeded) - { - return await RedirectSafelyAsync(ReturnUrl, ReturnUrlHash); - } - if (result.IsLockedOut) - { - Logger.LogWarning(7, "User account locked out."); - Alerts.Warning(L["UserLockedOutMessage"]); - return Page(); - } - else - { - Alerts.Danger(L["TwoFactorAuthenticationInvaidUser"]);// TODO: ״̬Ľ - return Page(); - } - } - } - - public class VerifyAuthenticatorCodeInputModel - { - [Required] - public string VerifyCode { get; set; } - } -} diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/VerifyCode.cshtml b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/VerifyCode.cshtml deleted file mode 100644 index aeaab5eda..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/VerifyCode.cshtml +++ /dev/null @@ -1,29 +0,0 @@ -@page -@inject IHtmlLocalizer L -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.Applications.Single.Pages.Account.VerifyCodeModel -
-
-
- - - - -
- -
- - - - - -
- @L["VerifyAuthenticatorCode"] -
- - @L["ReSendVerifyCode"] - -
-
-
diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/VerifyCode.cshtml.cs b/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/VerifyCode.cshtml.cs deleted file mode 100644 index b2663b53e..000000000 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Pages/Account/VerifyCode.cshtml.cs +++ /dev/null @@ -1,92 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; - -namespace LY.MicroService.Applications.Single.Pages.Account -{ - public class VerifyCodeModel : AccountPageModel - { - [BindProperty] - public VerifyCodeInputModel Input { get; set; } - /// - /// ˫֤ṩ - /// - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string Provider { get; set; } - /// - /// ضUrl - /// - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - /// - /// - /// - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - /// - /// Ƿס¼״̬ - /// - [HiddenInput] - [BindProperty(SupportsGet = true)] - public bool RememberMe { get; set; } - - public VerifyCodeModel() - { - LocalizationResourceType = typeof(AccountResource); - } - - public virtual IActionResult OnGet() - { - Input = new VerifyCodeInputModel(); - - return Page(); - } - - public virtual async Task OnPostAsync() - { - // ֤û¼״̬ - var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); - if (user == null) - { - Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); - return Page(); - } - // ˫ص¼ - var result = await SignInManager.TwoFactorSignInAsync(Provider, Input.VerifyCode, RememberMe, Input.RememberBrowser); - if (result.Succeeded) - { - return await RedirectSafelyAsync(ReturnUrl, ReturnUrlHash); - } - if (result.IsLockedOut) - { - Logger.LogWarning(7, "User account locked out."); - Alerts.Warning(L["UserLockedOutMessage"]); - return Page(); - } - else - { - Alerts.Danger(L["TwoFactorAuthenticationInvaidUser"]);// TODO: ״̬Ľ - return Page(); - } - } - } - - public class VerifyCodeInputModel - { - /// - /// Ƿмס¼״̬ - /// - public bool RememberBrowser { get; set; } - /// - /// ͵֤ - /// - [Required] - public string VerifyCode { get; set; } - } -} diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/Properties/launchSettings.json b/aspnet-core/services/LY.MicroService.Applications.Single/Properties/launchSettings.json index 337677308..1e25c86dd 100644 --- a/aspnet-core/services/LY.MicroService.Applications.Single/Properties/launchSettings.json +++ b/aspnet-core/services/LY.MicroService.Applications.Single/Properties/launchSettings.json @@ -14,7 +14,7 @@ "launchBrowser": false, "applicationUrl": "http://0.0.0.0:30001", "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Production" + "ASPNETCORE_ENVIRONMENT": "Development" } }, "LY.MicroService.Applications.Single.Development": { diff --git a/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/AuthServerHttpApiHostModule.Configure.cs b/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/AuthServerHttpApiHostModule.Configure.cs index 295d86437..dc535d3a0 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/AuthServerHttpApiHostModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/AuthServerHttpApiHostModule.Configure.cs @@ -1,9 +1,9 @@ using DotNetCore.CAP; using LINGYUN.Abp.ExceptionHandling; using LINGYUN.Abp.ExceptionHandling.Emailing; -using LINGYUN.Abp.Gdpr.Localization; using LINGYUN.Abp.Identity.Session; using LINGYUN.Abp.Localization.CultureMap; +using LINGYUN.Abp.LocalizationManagement; using LINGYUN.Abp.OpenIddict.Permissions; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; @@ -40,12 +40,10 @@ using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement; using Volo.Abp.GlobalFeatures; using Volo.Abp.Http.Client; -using Volo.Abp.Identity.Localization; using Volo.Abp.Json; using Volo.Abp.Json.SystemTextJson; using Volo.Abp.Localization; using Volo.Abp.MultiTenancy; -using Volo.Abp.OpenIddict.Localization; using Volo.Abp.PermissionManagement; using Volo.Abp.Security.Claims; using Volo.Abp.Threading; @@ -436,11 +434,6 @@ public partial class AuthServerHttpApiHostModule { options.Languages.Add(new LanguageInfo("en", "en", "English")); options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); - - options.UsePersistences( - typeof(GdprResource), - typeof(IdentityResource), - typeof(AbpOpenIddictResource)); }); Configure(options => @@ -454,6 +447,11 @@ public partial class AuthServerHttpApiHostModule options.CulturesMaps.Add(zhHansCultureMapInfo); options.UiCulturesMaps.Add(zhHansCultureMapInfo); }); + + Configure(options => + { + options.SaveStaticLocalizationsToDatabase = true; + }); } private void ConfigureCors(IServiceCollection services, IConfiguration configuration) diff --git a/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.Configure.cs b/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.Configure.cs index 199d7f641..de373b90b 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.Configure.cs @@ -1,7 +1,6 @@ using DotNetCore.CAP; -using LINGYUN.Abp.Account.Web; -using LINGYUN.Abp.Account.Web.OpenIddict; using LINGYUN.Abp.Localization.CultureMap; +using LINGYUN.Abp.LocalizationManagement; using LINGYUN.Abp.OpenIddict.AspNetCore.Session; using LINGYUN.Abp.OpenIddict.LinkUser; using LINGYUN.Abp.OpenIddict.Portal; @@ -25,7 +24,6 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Hosting.Internal; using Microsoft.IdentityModel.Logging; using OpenTelemetry.Metrics; using OpenTelemetry.Resources; @@ -42,7 +40,6 @@ using Volo.Abp.Account.Localization; using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Auditing; using Volo.Abp.Caching; -using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement; using Volo.Abp.GlobalFeatures; using Volo.Abp.Json; @@ -370,8 +367,6 @@ public partial class AuthServerModule options.Resources .Get() .AddVirtualJson("/Localization/Resources"); - - options.UsePersistence(); }); Configure(options => @@ -385,6 +380,11 @@ public partial class AuthServerModule options.CulturesMaps.Add(zhHansCultureMapInfo); options.UiCulturesMaps.Add(zhHansCultureMapInfo); }); + + Configure(options => + { + options.SaveStaticLocalizationsToDatabase = true; + }); } private void ConfigureTiming(IConfiguration configuration) { diff --git a/aspnet-core/services/LY.MicroService.AuthServer/LY.MicroService.AuthServer.csproj b/aspnet-core/services/LY.MicroService.AuthServer/LY.MicroService.AuthServer.csproj index d9e175fb3..3ab2efbe9 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/LY.MicroService.AuthServer.csproj +++ b/aspnet-core/services/LY.MicroService.AuthServer/LY.MicroService.AuthServer.csproj @@ -89,4 +89,8 @@ + + + + diff --git a/aspnet-core/services/LY.MicroService.AuthServer/gulpfile.js b/aspnet-core/services/LY.MicroService.AuthServer/gulpfile.js deleted file mode 100644 index bec4d578f..000000000 --- a/aspnet-core/services/LY.MicroService.AuthServer/gulpfile.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; - -var gulp = require("gulp"), - path = require('path'), - copyResources = require('./node_modules/@abp/aspnetcore.mvc.ui/gulp/copy-resources.js'); - -exports.default = function(done){ - copyResources(path.resolve('./')); - done(); -}; \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.AuthServer/package.json b/aspnet-core/services/LY.MicroService.AuthServer/package.json index 638aba47c..a78a356c5 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/package.json +++ b/aspnet-core/services/LY.MicroService.AuthServer/package.json @@ -3,6 +3,7 @@ "name": "my-app-authserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.0.4" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.0.4", + "@abp/qrcode": "9.0.4" } } \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css index 7e4dfe1e8..ffdf0f023 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css +++ b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css @@ -1,5 +1,5 @@ /*! - * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */ @@ -7,15 +7,13 @@ font-family: var(--fa-style-family, "Font Awesome 6 Free"); font-weight: var(--fa-style, 900); } -.fa, -.fa-classic, -.fa-sharp, .fas, -.fa-solid, .far, -.fa-regular, .fab, -.fa-brands { +.fa-solid, +.fa-regular, +.fa-brands, +.fa { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: var(--fa-display, inline-block); @@ -24,15 +22,24 @@ line-height: 1; text-rendering: auto; } -.fas, +.fas::before, +.far::before, +.fab::before, +.fa-solid::before, +.fa-regular::before, +.fa-brands::before, +.fa::before { + content: var(--fa); } + .fa-classic, +.fas, .fa-solid, .far, .fa-regular { font-family: 'Font Awesome 6 Free'; } -.fab, -.fa-brands { +.fa-brands, +.fab { font-family: 'Font Awesome 6 Brands'; } .fa-1x { @@ -107,7 +114,7 @@ position: relative; } .fa-li { - left: calc(var(--fa-li-width, 2em) * -1); + left: calc(-1 * var(--fa-li-width, 2em)); position: absolute; text-align: center; width: var(--fa-li-width, 2em); @@ -129,118 +136,71 @@ margin-left: var(--fa-pull-margin, 0.3em); } .fa-beat { - -webkit-animation-name: fa-beat; - animation-name: fa-beat; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); - animation-timing-function: var(--fa-animation-timing, ease-in-out); } + animation-name: fa-beat; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } .fa-bounce { - -webkit-animation-name: fa-bounce; - animation-name: fa-bounce; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + animation-name: fa-bounce; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } .fa-fade { - -webkit-animation-name: fa-fade; - animation-name: fa-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + animation-name: fa-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } .fa-beat-fade { - -webkit-animation-name: fa-beat-fade; - animation-name: fa-beat-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + animation-name: fa-beat-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } .fa-flip { - -webkit-animation-name: fa-flip; - animation-name: fa-flip; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); - animation-timing-function: var(--fa-animation-timing, ease-in-out); } + animation-name: fa-flip; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } .fa-shake { - -webkit-animation-name: fa-shake; - animation-name: fa-shake; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, linear); - animation-timing-function: var(--fa-animation-timing, linear); } + animation-name: fa-shake; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); } .fa-spin { - -webkit-animation-name: fa-spin; - animation-name: fa-spin; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 2s); - animation-duration: var(--fa-animation-duration, 2s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, linear); - animation-timing-function: var(--fa-animation-timing, linear); } + animation-name: fa-spin; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 2s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); } .fa-spin-reverse { --fa-animation-direction: reverse; } .fa-pulse, .fa-spin-pulse { - -webkit-animation-name: fa-spin; - animation-name: fa-spin; - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); - animation-timing-function: var(--fa-animation-timing, steps(8)); } + animation-name: fa-spin; + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, steps(8)); } @media (prefers-reduced-motion: reduce) { .fa-beat, @@ -252,219 +212,97 @@ .fa-shake, .fa-spin, .fa-spin-pulse { - -webkit-animation-delay: -1ms; - animation-delay: -1ms; - -webkit-animation-duration: 1ms; - animation-duration: 1ms; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; - -webkit-transition-delay: 0s; - transition-delay: 0s; - -webkit-transition-duration: 0s; - transition-duration: 0s; } } - -@-webkit-keyframes fa-beat { - 0%, 90% { - -webkit-transform: scale(1); - transform: scale(1); } - 45% { - -webkit-transform: scale(var(--fa-beat-scale, 1.25)); - transform: scale(var(--fa-beat-scale, 1.25)); } } + animation-delay: -1ms; + animation-duration: 1ms; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; } } @keyframes fa-beat { 0%, 90% { - -webkit-transform: scale(1); - transform: scale(1); } + transform: scale(1); } 45% { - -webkit-transform: scale(var(--fa-beat-scale, 1.25)); - transform: scale(var(--fa-beat-scale, 1.25)); } } - -@-webkit-keyframes fa-bounce { - 0% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } - 10% { - -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } - 30% { - -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } - 50% { - -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } - 57% { - -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } - 64% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } - 100% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } } + transform: scale(var(--fa-beat-scale, 1.25)); } } @keyframes fa-bounce { 0% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } + transform: scale(1, 1) translateY(0); } 10% { - -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } 30% { - -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } 50% { - -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } 57% { - -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } 64% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } + transform: scale(1, 1) translateY(0); } 100% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } } - -@-webkit-keyframes fa-fade { - 50% { - opacity: var(--fa-fade-opacity, 0.4); } } + transform: scale(1, 1) translateY(0); } } @keyframes fa-fade { 50% { opacity: var(--fa-fade-opacity, 0.4); } } -@-webkit-keyframes fa-beat-fade { - 0%, 100% { - opacity: var(--fa-beat-fade-opacity, 0.4); - -webkit-transform: scale(1); - transform: scale(1); } - 50% { - opacity: 1; - -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); - transform: scale(var(--fa-beat-fade-scale, 1.125)); } } - @keyframes fa-beat-fade { 0%, 100% { opacity: var(--fa-beat-fade-opacity, 0.4); - -webkit-transform: scale(1); - transform: scale(1); } + transform: scale(1); } 50% { opacity: 1; - -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); - transform: scale(var(--fa-beat-fade-scale, 1.125)); } } - -@-webkit-keyframes fa-flip { - 50% { - -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } @keyframes fa-flip { 50% { - -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } - -@-webkit-keyframes fa-shake { - 0% { - -webkit-transform: rotate(-15deg); - transform: rotate(-15deg); } - 4% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); } - 8%, 24% { - -webkit-transform: rotate(-18deg); - transform: rotate(-18deg); } - 12%, 28% { - -webkit-transform: rotate(18deg); - transform: rotate(18deg); } - 16% { - -webkit-transform: rotate(-22deg); - transform: rotate(-22deg); } - 20% { - -webkit-transform: rotate(22deg); - transform: rotate(22deg); } - 32% { - -webkit-transform: rotate(-12deg); - transform: rotate(-12deg); } - 36% { - -webkit-transform: rotate(12deg); - transform: rotate(12deg); } - 40%, 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } } + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } @keyframes fa-shake { 0% { - -webkit-transform: rotate(-15deg); - transform: rotate(-15deg); } + transform: rotate(-15deg); } 4% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); } + transform: rotate(15deg); } 8%, 24% { - -webkit-transform: rotate(-18deg); - transform: rotate(-18deg); } + transform: rotate(-18deg); } 12%, 28% { - -webkit-transform: rotate(18deg); - transform: rotate(18deg); } + transform: rotate(18deg); } 16% { - -webkit-transform: rotate(-22deg); - transform: rotate(-22deg); } + transform: rotate(-22deg); } 20% { - -webkit-transform: rotate(22deg); - transform: rotate(22deg); } + transform: rotate(22deg); } 32% { - -webkit-transform: rotate(-12deg); - transform: rotate(-12deg); } + transform: rotate(-12deg); } 36% { - -webkit-transform: rotate(12deg); - transform: rotate(12deg); } + transform: rotate(12deg); } 40%, 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } } - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } + transform: rotate(0deg); } } @keyframes fa-spin { 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } + transform: rotate(0deg); } 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } + transform: rotate(360deg); } } .fa-rotate-90 { - -webkit-transform: rotate(90deg); - transform: rotate(90deg); } + transform: rotate(90deg); } .fa-rotate-180 { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); } + transform: rotate(180deg); } .fa-rotate-270 { - -webkit-transform: rotate(270deg); - transform: rotate(270deg); } + transform: rotate(270deg); } .fa-flip-horizontal { - -webkit-transform: scale(-1, 1); - transform: scale(-1, 1); } + transform: scale(-1, 1); } .fa-flip-vertical { - -webkit-transform: scale(1, -1); - transform: scale(1, -1); } + transform: scale(1, -1); } .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { - -webkit-transform: scale(-1, -1); - transform: scale(-1, -1); } + transform: scale(-1, -1); } .fa-rotate-by { - -webkit-transform: rotate(var(--fa-rotate-angle, 0)); - transform: rotate(var(--fa-rotate-angle, 0)); } + transform: rotate(var(--fa-rotate-angle, 0)); } .fa-stack { display: inline-block; @@ -494,5861 +332,5891 @@ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ -.fa-0::before { - content: "\30"; } +.fa-0 { + --fa: "\30"; } -.fa-1::before { - content: "\31"; } +.fa-1 { + --fa: "\31"; } -.fa-2::before { - content: "\32"; } +.fa-2 { + --fa: "\32"; } -.fa-3::before { - content: "\33"; } +.fa-3 { + --fa: "\33"; } -.fa-4::before { - content: "\34"; } +.fa-4 { + --fa: "\34"; } -.fa-5::before { - content: "\35"; } +.fa-5 { + --fa: "\35"; } -.fa-6::before { - content: "\36"; } +.fa-6 { + --fa: "\36"; } -.fa-7::before { - content: "\37"; } +.fa-7 { + --fa: "\37"; } -.fa-8::before { - content: "\38"; } +.fa-8 { + --fa: "\38"; } -.fa-9::before { - content: "\39"; } +.fa-9 { + --fa: "\39"; } -.fa-fill-drip::before { - content: "\f576"; } +.fa-fill-drip { + --fa: "\f576"; } -.fa-arrows-to-circle::before { - content: "\e4bd"; } +.fa-arrows-to-circle { + --fa: "\e4bd"; } -.fa-circle-chevron-right::before { - content: "\f138"; } +.fa-circle-chevron-right { + --fa: "\f138"; } -.fa-chevron-circle-right::before { - content: "\f138"; } +.fa-chevron-circle-right { + --fa: "\f138"; } -.fa-at::before { - content: "\40"; } +.fa-at { + --fa: "\40"; } -.fa-trash-can::before { - content: "\f2ed"; } +.fa-trash-can { + --fa: "\f2ed"; } -.fa-trash-alt::before { - content: "\f2ed"; } +.fa-trash-alt { + --fa: "\f2ed"; } -.fa-text-height::before { - content: "\f034"; } +.fa-text-height { + --fa: "\f034"; } -.fa-user-xmark::before { - content: "\f235"; } +.fa-user-xmark { + --fa: "\f235"; } -.fa-user-times::before { - content: "\f235"; } +.fa-user-times { + --fa: "\f235"; } -.fa-stethoscope::before { - content: "\f0f1"; } +.fa-stethoscope { + --fa: "\f0f1"; } -.fa-message::before { - content: "\f27a"; } +.fa-message { + --fa: "\f27a"; } -.fa-comment-alt::before { - content: "\f27a"; } +.fa-comment-alt { + --fa: "\f27a"; } -.fa-info::before { - content: "\f129"; } +.fa-info { + --fa: "\f129"; } -.fa-down-left-and-up-right-to-center::before { - content: "\f422"; } +.fa-down-left-and-up-right-to-center { + --fa: "\f422"; } -.fa-compress-alt::before { - content: "\f422"; } +.fa-compress-alt { + --fa: "\f422"; } -.fa-explosion::before { - content: "\e4e9"; } +.fa-explosion { + --fa: "\e4e9"; } -.fa-file-lines::before { - content: "\f15c"; } +.fa-file-lines { + --fa: "\f15c"; } -.fa-file-alt::before { - content: "\f15c"; } +.fa-file-alt { + --fa: "\f15c"; } -.fa-file-text::before { - content: "\f15c"; } +.fa-file-text { + --fa: "\f15c"; } -.fa-wave-square::before { - content: "\f83e"; } +.fa-wave-square { + --fa: "\f83e"; } -.fa-ring::before { - content: "\f70b"; } +.fa-ring { + --fa: "\f70b"; } -.fa-building-un::before { - content: "\e4d9"; } +.fa-building-un { + --fa: "\e4d9"; } -.fa-dice-three::before { - content: "\f527"; } +.fa-dice-three { + --fa: "\f527"; } -.fa-calendar-days::before { - content: "\f073"; } +.fa-calendar-days { + --fa: "\f073"; } -.fa-calendar-alt::before { - content: "\f073"; } +.fa-calendar-alt { + --fa: "\f073"; } -.fa-anchor-circle-check::before { - content: "\e4aa"; } +.fa-anchor-circle-check { + --fa: "\e4aa"; } -.fa-building-circle-arrow-right::before { - content: "\e4d1"; } +.fa-building-circle-arrow-right { + --fa: "\e4d1"; } -.fa-volleyball::before { - content: "\f45f"; } +.fa-volleyball { + --fa: "\f45f"; } -.fa-volleyball-ball::before { - content: "\f45f"; } +.fa-volleyball-ball { + --fa: "\f45f"; } -.fa-arrows-up-to-line::before { - content: "\e4c2"; } +.fa-arrows-up-to-line { + --fa: "\e4c2"; } -.fa-sort-down::before { - content: "\f0dd"; } +.fa-sort-down { + --fa: "\f0dd"; } -.fa-sort-desc::before { - content: "\f0dd"; } +.fa-sort-desc { + --fa: "\f0dd"; } -.fa-circle-minus::before { - content: "\f056"; } +.fa-circle-minus { + --fa: "\f056"; } -.fa-minus-circle::before { - content: "\f056"; } +.fa-minus-circle { + --fa: "\f056"; } -.fa-door-open::before { - content: "\f52b"; } +.fa-door-open { + --fa: "\f52b"; } -.fa-right-from-bracket::before { - content: "\f2f5"; } +.fa-right-from-bracket { + --fa: "\f2f5"; } -.fa-sign-out-alt::before { - content: "\f2f5"; } +.fa-sign-out-alt { + --fa: "\f2f5"; } -.fa-atom::before { - content: "\f5d2"; } +.fa-atom { + --fa: "\f5d2"; } -.fa-soap::before { - content: "\e06e"; } +.fa-soap { + --fa: "\e06e"; } -.fa-icons::before { - content: "\f86d"; } +.fa-icons { + --fa: "\f86d"; } -.fa-heart-music-camera-bolt::before { - content: "\f86d"; } +.fa-heart-music-camera-bolt { + --fa: "\f86d"; } -.fa-microphone-lines-slash::before { - content: "\f539"; } +.fa-microphone-lines-slash { + --fa: "\f539"; } -.fa-microphone-alt-slash::before { - content: "\f539"; } +.fa-microphone-alt-slash { + --fa: "\f539"; } -.fa-bridge-circle-check::before { - content: "\e4c9"; } +.fa-bridge-circle-check { + --fa: "\e4c9"; } -.fa-pump-medical::before { - content: "\e06a"; } +.fa-pump-medical { + --fa: "\e06a"; } -.fa-fingerprint::before { - content: "\f577"; } +.fa-fingerprint { + --fa: "\f577"; } -.fa-hand-point-right::before { - content: "\f0a4"; } +.fa-hand-point-right { + --fa: "\f0a4"; } -.fa-magnifying-glass-location::before { - content: "\f689"; } +.fa-magnifying-glass-location { + --fa: "\f689"; } -.fa-search-location::before { - content: "\f689"; } +.fa-search-location { + --fa: "\f689"; } -.fa-forward-step::before { - content: "\f051"; } +.fa-forward-step { + --fa: "\f051"; } -.fa-step-forward::before { - content: "\f051"; } +.fa-step-forward { + --fa: "\f051"; } -.fa-face-smile-beam::before { - content: "\f5b8"; } +.fa-face-smile-beam { + --fa: "\f5b8"; } -.fa-smile-beam::before { - content: "\f5b8"; } +.fa-smile-beam { + --fa: "\f5b8"; } -.fa-flag-checkered::before { - content: "\f11e"; } +.fa-flag-checkered { + --fa: "\f11e"; } -.fa-football::before { - content: "\f44e"; } +.fa-football { + --fa: "\f44e"; } -.fa-football-ball::before { - content: "\f44e"; } +.fa-football-ball { + --fa: "\f44e"; } -.fa-school-circle-exclamation::before { - content: "\e56c"; } +.fa-school-circle-exclamation { + --fa: "\e56c"; } -.fa-crop::before { - content: "\f125"; } +.fa-crop { + --fa: "\f125"; } -.fa-angles-down::before { - content: "\f103"; } +.fa-angles-down { + --fa: "\f103"; } -.fa-angle-double-down::before { - content: "\f103"; } +.fa-angle-double-down { + --fa: "\f103"; } -.fa-users-rectangle::before { - content: "\e594"; } +.fa-users-rectangle { + --fa: "\e594"; } -.fa-people-roof::before { - content: "\e537"; } +.fa-people-roof { + --fa: "\e537"; } -.fa-people-line::before { - content: "\e534"; } +.fa-people-line { + --fa: "\e534"; } -.fa-beer-mug-empty::before { - content: "\f0fc"; } +.fa-beer-mug-empty { + --fa: "\f0fc"; } -.fa-beer::before { - content: "\f0fc"; } +.fa-beer { + --fa: "\f0fc"; } -.fa-diagram-predecessor::before { - content: "\e477"; } +.fa-diagram-predecessor { + --fa: "\e477"; } -.fa-arrow-up-long::before { - content: "\f176"; } +.fa-arrow-up-long { + --fa: "\f176"; } -.fa-long-arrow-up::before { - content: "\f176"; } +.fa-long-arrow-up { + --fa: "\f176"; } -.fa-fire-flame-simple::before { - content: "\f46a"; } +.fa-fire-flame-simple { + --fa: "\f46a"; } -.fa-burn::before { - content: "\f46a"; } +.fa-burn { + --fa: "\f46a"; } -.fa-person::before { - content: "\f183"; } +.fa-person { + --fa: "\f183"; } -.fa-male::before { - content: "\f183"; } +.fa-male { + --fa: "\f183"; } -.fa-laptop::before { - content: "\f109"; } +.fa-laptop { + --fa: "\f109"; } -.fa-file-csv::before { - content: "\f6dd"; } +.fa-file-csv { + --fa: "\f6dd"; } -.fa-menorah::before { - content: "\f676"; } +.fa-menorah { + --fa: "\f676"; } -.fa-truck-plane::before { - content: "\e58f"; } +.fa-truck-plane { + --fa: "\e58f"; } -.fa-record-vinyl::before { - content: "\f8d9"; } +.fa-record-vinyl { + --fa: "\f8d9"; } -.fa-face-grin-stars::before { - content: "\f587"; } +.fa-face-grin-stars { + --fa: "\f587"; } -.fa-grin-stars::before { - content: "\f587"; } +.fa-grin-stars { + --fa: "\f587"; } -.fa-bong::before { - content: "\f55c"; } +.fa-bong { + --fa: "\f55c"; } -.fa-spaghetti-monster-flying::before { - content: "\f67b"; } +.fa-spaghetti-monster-flying { + --fa: "\f67b"; } -.fa-pastafarianism::before { - content: "\f67b"; } +.fa-pastafarianism { + --fa: "\f67b"; } -.fa-arrow-down-up-across-line::before { - content: "\e4af"; } +.fa-arrow-down-up-across-line { + --fa: "\e4af"; } -.fa-spoon::before { - content: "\f2e5"; } +.fa-spoon { + --fa: "\f2e5"; } -.fa-utensil-spoon::before { - content: "\f2e5"; } +.fa-utensil-spoon { + --fa: "\f2e5"; } -.fa-jar-wheat::before { - content: "\e517"; } +.fa-jar-wheat { + --fa: "\e517"; } -.fa-envelopes-bulk::before { - content: "\f674"; } +.fa-envelopes-bulk { + --fa: "\f674"; } -.fa-mail-bulk::before { - content: "\f674"; } +.fa-mail-bulk { + --fa: "\f674"; } -.fa-file-circle-exclamation::before { - content: "\e4eb"; } +.fa-file-circle-exclamation { + --fa: "\e4eb"; } -.fa-circle-h::before { - content: "\f47e"; } +.fa-circle-h { + --fa: "\f47e"; } -.fa-hospital-symbol::before { - content: "\f47e"; } +.fa-hospital-symbol { + --fa: "\f47e"; } -.fa-pager::before { - content: "\f815"; } +.fa-pager { + --fa: "\f815"; } -.fa-address-book::before { - content: "\f2b9"; } +.fa-address-book { + --fa: "\f2b9"; } -.fa-contact-book::before { - content: "\f2b9"; } +.fa-contact-book { + --fa: "\f2b9"; } -.fa-strikethrough::before { - content: "\f0cc"; } +.fa-strikethrough { + --fa: "\f0cc"; } -.fa-k::before { - content: "\4b"; } +.fa-k { + --fa: "\4b"; } -.fa-landmark-flag::before { - content: "\e51c"; } +.fa-landmark-flag { + --fa: "\e51c"; } -.fa-pencil::before { - content: "\f303"; } +.fa-pencil { + --fa: "\f303"; } -.fa-pencil-alt::before { - content: "\f303"; } +.fa-pencil-alt { + --fa: "\f303"; } -.fa-backward::before { - content: "\f04a"; } +.fa-backward { + --fa: "\f04a"; } -.fa-caret-right::before { - content: "\f0da"; } +.fa-caret-right { + --fa: "\f0da"; } -.fa-comments::before { - content: "\f086"; } +.fa-comments { + --fa: "\f086"; } -.fa-paste::before { - content: "\f0ea"; } +.fa-paste { + --fa: "\f0ea"; } -.fa-file-clipboard::before { - content: "\f0ea"; } +.fa-file-clipboard { + --fa: "\f0ea"; } -.fa-code-pull-request::before { - content: "\e13c"; } +.fa-code-pull-request { + --fa: "\e13c"; } -.fa-clipboard-list::before { - content: "\f46d"; } +.fa-clipboard-list { + --fa: "\f46d"; } -.fa-truck-ramp-box::before { - content: "\f4de"; } +.fa-truck-ramp-box { + --fa: "\f4de"; } -.fa-truck-loading::before { - content: "\f4de"; } +.fa-truck-loading { + --fa: "\f4de"; } -.fa-user-check::before { - content: "\f4fc"; } +.fa-user-check { + --fa: "\f4fc"; } -.fa-vial-virus::before { - content: "\e597"; } +.fa-vial-virus { + --fa: "\e597"; } -.fa-sheet-plastic::before { - content: "\e571"; } +.fa-sheet-plastic { + --fa: "\e571"; } -.fa-blog::before { - content: "\f781"; } +.fa-blog { + --fa: "\f781"; } -.fa-user-ninja::before { - content: "\f504"; } +.fa-user-ninja { + --fa: "\f504"; } -.fa-person-arrow-up-from-line::before { - content: "\e539"; } +.fa-person-arrow-up-from-line { + --fa: "\e539"; } -.fa-scroll-torah::before { - content: "\f6a0"; } +.fa-scroll-torah { + --fa: "\f6a0"; } -.fa-torah::before { - content: "\f6a0"; } +.fa-torah { + --fa: "\f6a0"; } -.fa-broom-ball::before { - content: "\f458"; } +.fa-broom-ball { + --fa: "\f458"; } -.fa-quidditch::before { - content: "\f458"; } +.fa-quidditch { + --fa: "\f458"; } -.fa-quidditch-broom-ball::before { - content: "\f458"; } +.fa-quidditch-broom-ball { + --fa: "\f458"; } -.fa-toggle-off::before { - content: "\f204"; } +.fa-toggle-off { + --fa: "\f204"; } -.fa-box-archive::before { - content: "\f187"; } +.fa-box-archive { + --fa: "\f187"; } -.fa-archive::before { - content: "\f187"; } +.fa-archive { + --fa: "\f187"; } -.fa-person-drowning::before { - content: "\e545"; } +.fa-person-drowning { + --fa: "\e545"; } -.fa-arrow-down-9-1::before { - content: "\f886"; } +.fa-arrow-down-9-1 { + --fa: "\f886"; } -.fa-sort-numeric-desc::before { - content: "\f886"; } +.fa-sort-numeric-desc { + --fa: "\f886"; } -.fa-sort-numeric-down-alt::before { - content: "\f886"; } +.fa-sort-numeric-down-alt { + --fa: "\f886"; } -.fa-face-grin-tongue-squint::before { - content: "\f58a"; } +.fa-face-grin-tongue-squint { + --fa: "\f58a"; } -.fa-grin-tongue-squint::before { - content: "\f58a"; } +.fa-grin-tongue-squint { + --fa: "\f58a"; } -.fa-spray-can::before { - content: "\f5bd"; } +.fa-spray-can { + --fa: "\f5bd"; } -.fa-truck-monster::before { - content: "\f63b"; } +.fa-truck-monster { + --fa: "\f63b"; } -.fa-w::before { - content: "\57"; } +.fa-w { + --fa: "\57"; } -.fa-earth-africa::before { - content: "\f57c"; } +.fa-earth-africa { + --fa: "\f57c"; } -.fa-globe-africa::before { - content: "\f57c"; } +.fa-globe-africa { + --fa: "\f57c"; } -.fa-rainbow::before { - content: "\f75b"; } +.fa-rainbow { + --fa: "\f75b"; } -.fa-circle-notch::before { - content: "\f1ce"; } +.fa-circle-notch { + --fa: "\f1ce"; } -.fa-tablet-screen-button::before { - content: "\f3fa"; } +.fa-tablet-screen-button { + --fa: "\f3fa"; } -.fa-tablet-alt::before { - content: "\f3fa"; } +.fa-tablet-alt { + --fa: "\f3fa"; } -.fa-paw::before { - content: "\f1b0"; } +.fa-paw { + --fa: "\f1b0"; } -.fa-cloud::before { - content: "\f0c2"; } +.fa-cloud { + --fa: "\f0c2"; } -.fa-trowel-bricks::before { - content: "\e58a"; } +.fa-trowel-bricks { + --fa: "\e58a"; } -.fa-face-flushed::before { - content: "\f579"; } +.fa-face-flushed { + --fa: "\f579"; } -.fa-flushed::before { - content: "\f579"; } +.fa-flushed { + --fa: "\f579"; } -.fa-hospital-user::before { - content: "\f80d"; } +.fa-hospital-user { + --fa: "\f80d"; } -.fa-tent-arrow-left-right::before { - content: "\e57f"; } +.fa-tent-arrow-left-right { + --fa: "\e57f"; } -.fa-gavel::before { - content: "\f0e3"; } +.fa-gavel { + --fa: "\f0e3"; } -.fa-legal::before { - content: "\f0e3"; } +.fa-legal { + --fa: "\f0e3"; } -.fa-binoculars::before { - content: "\f1e5"; } +.fa-binoculars { + --fa: "\f1e5"; } -.fa-microphone-slash::before { - content: "\f131"; } +.fa-microphone-slash { + --fa: "\f131"; } -.fa-box-tissue::before { - content: "\e05b"; } +.fa-box-tissue { + --fa: "\e05b"; } -.fa-motorcycle::before { - content: "\f21c"; } +.fa-motorcycle { + --fa: "\f21c"; } -.fa-bell-concierge::before { - content: "\f562"; } +.fa-bell-concierge { + --fa: "\f562"; } -.fa-concierge-bell::before { - content: "\f562"; } +.fa-concierge-bell { + --fa: "\f562"; } -.fa-pen-ruler::before { - content: "\f5ae"; } +.fa-pen-ruler { + --fa: "\f5ae"; } -.fa-pencil-ruler::before { - content: "\f5ae"; } +.fa-pencil-ruler { + --fa: "\f5ae"; } -.fa-people-arrows::before { - content: "\e068"; } +.fa-people-arrows { + --fa: "\e068"; } -.fa-people-arrows-left-right::before { - content: "\e068"; } +.fa-people-arrows-left-right { + --fa: "\e068"; } -.fa-mars-and-venus-burst::before { - content: "\e523"; } +.fa-mars-and-venus-burst { + --fa: "\e523"; } -.fa-square-caret-right::before { - content: "\f152"; } +.fa-square-caret-right { + --fa: "\f152"; } -.fa-caret-square-right::before { - content: "\f152"; } +.fa-caret-square-right { + --fa: "\f152"; } -.fa-scissors::before { - content: "\f0c4"; } +.fa-scissors { + --fa: "\f0c4"; } -.fa-cut::before { - content: "\f0c4"; } +.fa-cut { + --fa: "\f0c4"; } -.fa-sun-plant-wilt::before { - content: "\e57a"; } +.fa-sun-plant-wilt { + --fa: "\e57a"; } -.fa-toilets-portable::before { - content: "\e584"; } +.fa-toilets-portable { + --fa: "\e584"; } -.fa-hockey-puck::before { - content: "\f453"; } +.fa-hockey-puck { + --fa: "\f453"; } -.fa-table::before { - content: "\f0ce"; } +.fa-table { + --fa: "\f0ce"; } -.fa-magnifying-glass-arrow-right::before { - content: "\e521"; } +.fa-magnifying-glass-arrow-right { + --fa: "\e521"; } -.fa-tachograph-digital::before { - content: "\f566"; } +.fa-tachograph-digital { + --fa: "\f566"; } -.fa-digital-tachograph::before { - content: "\f566"; } +.fa-digital-tachograph { + --fa: "\f566"; } -.fa-users-slash::before { - content: "\e073"; } +.fa-users-slash { + --fa: "\e073"; } -.fa-clover::before { - content: "\e139"; } +.fa-clover { + --fa: "\e139"; } -.fa-reply::before { - content: "\f3e5"; } +.fa-reply { + --fa: "\f3e5"; } -.fa-mail-reply::before { - content: "\f3e5"; } +.fa-mail-reply { + --fa: "\f3e5"; } -.fa-star-and-crescent::before { - content: "\f699"; } +.fa-star-and-crescent { + --fa: "\f699"; } -.fa-house-fire::before { - content: "\e50c"; } +.fa-house-fire { + --fa: "\e50c"; } -.fa-square-minus::before { - content: "\f146"; } +.fa-square-minus { + --fa: "\f146"; } -.fa-minus-square::before { - content: "\f146"; } +.fa-minus-square { + --fa: "\f146"; } -.fa-helicopter::before { - content: "\f533"; } +.fa-helicopter { + --fa: "\f533"; } -.fa-compass::before { - content: "\f14e"; } +.fa-compass { + --fa: "\f14e"; } -.fa-square-caret-down::before { - content: "\f150"; } +.fa-square-caret-down { + --fa: "\f150"; } -.fa-caret-square-down::before { - content: "\f150"; } +.fa-caret-square-down { + --fa: "\f150"; } -.fa-file-circle-question::before { - content: "\e4ef"; } +.fa-file-circle-question { + --fa: "\e4ef"; } -.fa-laptop-code::before { - content: "\f5fc"; } +.fa-laptop-code { + --fa: "\f5fc"; } -.fa-swatchbook::before { - content: "\f5c3"; } +.fa-swatchbook { + --fa: "\f5c3"; } -.fa-prescription-bottle::before { - content: "\f485"; } +.fa-prescription-bottle { + --fa: "\f485"; } -.fa-bars::before { - content: "\f0c9"; } +.fa-bars { + --fa: "\f0c9"; } -.fa-navicon::before { - content: "\f0c9"; } +.fa-navicon { + --fa: "\f0c9"; } -.fa-people-group::before { - content: "\e533"; } +.fa-people-group { + --fa: "\e533"; } -.fa-hourglass-end::before { - content: "\f253"; } +.fa-hourglass-end { + --fa: "\f253"; } -.fa-hourglass-3::before { - content: "\f253"; } +.fa-hourglass-3 { + --fa: "\f253"; } -.fa-heart-crack::before { - content: "\f7a9"; } +.fa-heart-crack { + --fa: "\f7a9"; } -.fa-heart-broken::before { - content: "\f7a9"; } +.fa-heart-broken { + --fa: "\f7a9"; } -.fa-square-up-right::before { - content: "\f360"; } +.fa-square-up-right { + --fa: "\f360"; } -.fa-external-link-square-alt::before { - content: "\f360"; } +.fa-external-link-square-alt { + --fa: "\f360"; } -.fa-face-kiss-beam::before { - content: "\f597"; } +.fa-face-kiss-beam { + --fa: "\f597"; } -.fa-kiss-beam::before { - content: "\f597"; } +.fa-kiss-beam { + --fa: "\f597"; } -.fa-film::before { - content: "\f008"; } +.fa-film { + --fa: "\f008"; } -.fa-ruler-horizontal::before { - content: "\f547"; } +.fa-ruler-horizontal { + --fa: "\f547"; } -.fa-people-robbery::before { - content: "\e536"; } +.fa-people-robbery { + --fa: "\e536"; } -.fa-lightbulb::before { - content: "\f0eb"; } +.fa-lightbulb { + --fa: "\f0eb"; } -.fa-caret-left::before { - content: "\f0d9"; } +.fa-caret-left { + --fa: "\f0d9"; } -.fa-circle-exclamation::before { - content: "\f06a"; } +.fa-circle-exclamation { + --fa: "\f06a"; } -.fa-exclamation-circle::before { - content: "\f06a"; } +.fa-exclamation-circle { + --fa: "\f06a"; } -.fa-school-circle-xmark::before { - content: "\e56d"; } +.fa-school-circle-xmark { + --fa: "\e56d"; } -.fa-arrow-right-from-bracket::before { - content: "\f08b"; } +.fa-arrow-right-from-bracket { + --fa: "\f08b"; } -.fa-sign-out::before { - content: "\f08b"; } +.fa-sign-out { + --fa: "\f08b"; } -.fa-circle-chevron-down::before { - content: "\f13a"; } +.fa-circle-chevron-down { + --fa: "\f13a"; } -.fa-chevron-circle-down::before { - content: "\f13a"; } +.fa-chevron-circle-down { + --fa: "\f13a"; } -.fa-unlock-keyhole::before { - content: "\f13e"; } +.fa-unlock-keyhole { + --fa: "\f13e"; } -.fa-unlock-alt::before { - content: "\f13e"; } +.fa-unlock-alt { + --fa: "\f13e"; } -.fa-cloud-showers-heavy::before { - content: "\f740"; } +.fa-cloud-showers-heavy { + --fa: "\f740"; } -.fa-headphones-simple::before { - content: "\f58f"; } +.fa-headphones-simple { + --fa: "\f58f"; } -.fa-headphones-alt::before { - content: "\f58f"; } +.fa-headphones-alt { + --fa: "\f58f"; } -.fa-sitemap::before { - content: "\f0e8"; } +.fa-sitemap { + --fa: "\f0e8"; } -.fa-circle-dollar-to-slot::before { - content: "\f4b9"; } +.fa-circle-dollar-to-slot { + --fa: "\f4b9"; } -.fa-donate::before { - content: "\f4b9"; } +.fa-donate { + --fa: "\f4b9"; } -.fa-memory::before { - content: "\f538"; } +.fa-memory { + --fa: "\f538"; } -.fa-road-spikes::before { - content: "\e568"; } +.fa-road-spikes { + --fa: "\e568"; } -.fa-fire-burner::before { - content: "\e4f1"; } +.fa-fire-burner { + --fa: "\e4f1"; } -.fa-flag::before { - content: "\f024"; } +.fa-flag { + --fa: "\f024"; } -.fa-hanukiah::before { - content: "\f6e6"; } +.fa-hanukiah { + --fa: "\f6e6"; } -.fa-feather::before { - content: "\f52d"; } +.fa-feather { + --fa: "\f52d"; } -.fa-volume-low::before { - content: "\f027"; } +.fa-volume-low { + --fa: "\f027"; } -.fa-volume-down::before { - content: "\f027"; } +.fa-volume-down { + --fa: "\f027"; } -.fa-comment-slash::before { - content: "\f4b3"; } +.fa-comment-slash { + --fa: "\f4b3"; } -.fa-cloud-sun-rain::before { - content: "\f743"; } +.fa-cloud-sun-rain { + --fa: "\f743"; } -.fa-compress::before { - content: "\f066"; } +.fa-compress { + --fa: "\f066"; } -.fa-wheat-awn::before { - content: "\e2cd"; } +.fa-wheat-awn { + --fa: "\e2cd"; } -.fa-wheat-alt::before { - content: "\e2cd"; } +.fa-wheat-alt { + --fa: "\e2cd"; } -.fa-ankh::before { - content: "\f644"; } +.fa-ankh { + --fa: "\f644"; } -.fa-hands-holding-child::before { - content: "\e4fa"; } +.fa-hands-holding-child { + --fa: "\e4fa"; } -.fa-asterisk::before { - content: "\2a"; } +.fa-asterisk { + --fa: "\2a"; } -.fa-square-check::before { - content: "\f14a"; } +.fa-square-check { + --fa: "\f14a"; } -.fa-check-square::before { - content: "\f14a"; } +.fa-check-square { + --fa: "\f14a"; } -.fa-peseta-sign::before { - content: "\e221"; } +.fa-peseta-sign { + --fa: "\e221"; } -.fa-heading::before { - content: "\f1dc"; } +.fa-heading { + --fa: "\f1dc"; } -.fa-header::before { - content: "\f1dc"; } +.fa-header { + --fa: "\f1dc"; } -.fa-ghost::before { - content: "\f6e2"; } +.fa-ghost { + --fa: "\f6e2"; } -.fa-list::before { - content: "\f03a"; } +.fa-list { + --fa: "\f03a"; } -.fa-list-squares::before { - content: "\f03a"; } +.fa-list-squares { + --fa: "\f03a"; } -.fa-square-phone-flip::before { - content: "\f87b"; } +.fa-square-phone-flip { + --fa: "\f87b"; } -.fa-phone-square-alt::before { - content: "\f87b"; } +.fa-phone-square-alt { + --fa: "\f87b"; } -.fa-cart-plus::before { - content: "\f217"; } +.fa-cart-plus { + --fa: "\f217"; } -.fa-gamepad::before { - content: "\f11b"; } +.fa-gamepad { + --fa: "\f11b"; } -.fa-circle-dot::before { - content: "\f192"; } +.fa-circle-dot { + --fa: "\f192"; } -.fa-dot-circle::before { - content: "\f192"; } +.fa-dot-circle { + --fa: "\f192"; } -.fa-face-dizzy::before { - content: "\f567"; } +.fa-face-dizzy { + --fa: "\f567"; } -.fa-dizzy::before { - content: "\f567"; } +.fa-dizzy { + --fa: "\f567"; } -.fa-egg::before { - content: "\f7fb"; } +.fa-egg { + --fa: "\f7fb"; } -.fa-house-medical-circle-xmark::before { - content: "\e513"; } +.fa-house-medical-circle-xmark { + --fa: "\e513"; } -.fa-campground::before { - content: "\f6bb"; } +.fa-campground { + --fa: "\f6bb"; } -.fa-folder-plus::before { - content: "\f65e"; } +.fa-folder-plus { + --fa: "\f65e"; } -.fa-futbol::before { - content: "\f1e3"; } +.fa-futbol { + --fa: "\f1e3"; } -.fa-futbol-ball::before { - content: "\f1e3"; } +.fa-futbol-ball { + --fa: "\f1e3"; } -.fa-soccer-ball::before { - content: "\f1e3"; } +.fa-soccer-ball { + --fa: "\f1e3"; } -.fa-paintbrush::before { - content: "\f1fc"; } +.fa-paintbrush { + --fa: "\f1fc"; } -.fa-paint-brush::before { - content: "\f1fc"; } +.fa-paint-brush { + --fa: "\f1fc"; } -.fa-lock::before { - content: "\f023"; } +.fa-lock { + --fa: "\f023"; } -.fa-gas-pump::before { - content: "\f52f"; } +.fa-gas-pump { + --fa: "\f52f"; } -.fa-hot-tub-person::before { - content: "\f593"; } +.fa-hot-tub-person { + --fa: "\f593"; } -.fa-hot-tub::before { - content: "\f593"; } +.fa-hot-tub { + --fa: "\f593"; } -.fa-map-location::before { - content: "\f59f"; } +.fa-map-location { + --fa: "\f59f"; } -.fa-map-marked::before { - content: "\f59f"; } +.fa-map-marked { + --fa: "\f59f"; } -.fa-house-flood-water::before { - content: "\e50e"; } +.fa-house-flood-water { + --fa: "\e50e"; } -.fa-tree::before { - content: "\f1bb"; } +.fa-tree { + --fa: "\f1bb"; } -.fa-bridge-lock::before { - content: "\e4cc"; } +.fa-bridge-lock { + --fa: "\e4cc"; } -.fa-sack-dollar::before { - content: "\f81d"; } +.fa-sack-dollar { + --fa: "\f81d"; } -.fa-pen-to-square::before { - content: "\f044"; } +.fa-pen-to-square { + --fa: "\f044"; } -.fa-edit::before { - content: "\f044"; } +.fa-edit { + --fa: "\f044"; } -.fa-car-side::before { - content: "\f5e4"; } +.fa-car-side { + --fa: "\f5e4"; } -.fa-share-nodes::before { - content: "\f1e0"; } +.fa-share-nodes { + --fa: "\f1e0"; } -.fa-share-alt::before { - content: "\f1e0"; } +.fa-share-alt { + --fa: "\f1e0"; } -.fa-heart-circle-minus::before { - content: "\e4ff"; } +.fa-heart-circle-minus { + --fa: "\e4ff"; } -.fa-hourglass-half::before { - content: "\f252"; } +.fa-hourglass-half { + --fa: "\f252"; } -.fa-hourglass-2::before { - content: "\f252"; } +.fa-hourglass-2 { + --fa: "\f252"; } -.fa-microscope::before { - content: "\f610"; } +.fa-microscope { + --fa: "\f610"; } -.fa-sink::before { - content: "\e06d"; } +.fa-sink { + --fa: "\e06d"; } -.fa-bag-shopping::before { - content: "\f290"; } +.fa-bag-shopping { + --fa: "\f290"; } -.fa-shopping-bag::before { - content: "\f290"; } +.fa-shopping-bag { + --fa: "\f290"; } -.fa-arrow-down-z-a::before { - content: "\f881"; } +.fa-arrow-down-z-a { + --fa: "\f881"; } -.fa-sort-alpha-desc::before { - content: "\f881"; } +.fa-sort-alpha-desc { + --fa: "\f881"; } -.fa-sort-alpha-down-alt::before { - content: "\f881"; } +.fa-sort-alpha-down-alt { + --fa: "\f881"; } -.fa-mitten::before { - content: "\f7b5"; } +.fa-mitten { + --fa: "\f7b5"; } -.fa-person-rays::before { - content: "\e54d"; } +.fa-person-rays { + --fa: "\e54d"; } -.fa-users::before { - content: "\f0c0"; } +.fa-users { + --fa: "\f0c0"; } -.fa-eye-slash::before { - content: "\f070"; } +.fa-eye-slash { + --fa: "\f070"; } -.fa-flask-vial::before { - content: "\e4f3"; } +.fa-flask-vial { + --fa: "\e4f3"; } -.fa-hand::before { - content: "\f256"; } +.fa-hand { + --fa: "\f256"; } -.fa-hand-paper::before { - content: "\f256"; } +.fa-hand-paper { + --fa: "\f256"; } -.fa-om::before { - content: "\f679"; } +.fa-om { + --fa: "\f679"; } -.fa-worm::before { - content: "\e599"; } +.fa-worm { + --fa: "\e599"; } -.fa-house-circle-xmark::before { - content: "\e50b"; } +.fa-house-circle-xmark { + --fa: "\e50b"; } -.fa-plug::before { - content: "\f1e6"; } +.fa-plug { + --fa: "\f1e6"; } -.fa-chevron-up::before { - content: "\f077"; } +.fa-chevron-up { + --fa: "\f077"; } -.fa-hand-spock::before { - content: "\f259"; } +.fa-hand-spock { + --fa: "\f259"; } -.fa-stopwatch::before { - content: "\f2f2"; } +.fa-stopwatch { + --fa: "\f2f2"; } -.fa-face-kiss::before { - content: "\f596"; } +.fa-face-kiss { + --fa: "\f596"; } -.fa-kiss::before { - content: "\f596"; } +.fa-kiss { + --fa: "\f596"; } -.fa-bridge-circle-xmark::before { - content: "\e4cb"; } +.fa-bridge-circle-xmark { + --fa: "\e4cb"; } -.fa-face-grin-tongue::before { - content: "\f589"; } +.fa-face-grin-tongue { + --fa: "\f589"; } -.fa-grin-tongue::before { - content: "\f589"; } +.fa-grin-tongue { + --fa: "\f589"; } -.fa-chess-bishop::before { - content: "\f43a"; } +.fa-chess-bishop { + --fa: "\f43a"; } -.fa-face-grin-wink::before { - content: "\f58c"; } +.fa-face-grin-wink { + --fa: "\f58c"; } -.fa-grin-wink::before { - content: "\f58c"; } +.fa-grin-wink { + --fa: "\f58c"; } -.fa-ear-deaf::before { - content: "\f2a4"; } +.fa-ear-deaf { + --fa: "\f2a4"; } -.fa-deaf::before { - content: "\f2a4"; } +.fa-deaf { + --fa: "\f2a4"; } -.fa-deafness::before { - content: "\f2a4"; } +.fa-deafness { + --fa: "\f2a4"; } -.fa-hard-of-hearing::before { - content: "\f2a4"; } +.fa-hard-of-hearing { + --fa: "\f2a4"; } -.fa-road-circle-check::before { - content: "\e564"; } +.fa-road-circle-check { + --fa: "\e564"; } -.fa-dice-five::before { - content: "\f523"; } +.fa-dice-five { + --fa: "\f523"; } -.fa-square-rss::before { - content: "\f143"; } +.fa-square-rss { + --fa: "\f143"; } -.fa-rss-square::before { - content: "\f143"; } +.fa-rss-square { + --fa: "\f143"; } -.fa-land-mine-on::before { - content: "\e51b"; } +.fa-land-mine-on { + --fa: "\e51b"; } -.fa-i-cursor::before { - content: "\f246"; } +.fa-i-cursor { + --fa: "\f246"; } -.fa-stamp::before { - content: "\f5bf"; } +.fa-stamp { + --fa: "\f5bf"; } -.fa-stairs::before { - content: "\e289"; } +.fa-stairs { + --fa: "\e289"; } -.fa-i::before { - content: "\49"; } +.fa-i { + --fa: "\49"; } -.fa-hryvnia-sign::before { - content: "\f6f2"; } +.fa-hryvnia-sign { + --fa: "\f6f2"; } -.fa-hryvnia::before { - content: "\f6f2"; } +.fa-hryvnia { + --fa: "\f6f2"; } -.fa-pills::before { - content: "\f484"; } +.fa-pills { + --fa: "\f484"; } -.fa-face-grin-wide::before { - content: "\f581"; } +.fa-face-grin-wide { + --fa: "\f581"; } -.fa-grin-alt::before { - content: "\f581"; } +.fa-grin-alt { + --fa: "\f581"; } -.fa-tooth::before { - content: "\f5c9"; } +.fa-tooth { + --fa: "\f5c9"; } -.fa-v::before { - content: "\56"; } +.fa-v { + --fa: "\56"; } -.fa-bangladeshi-taka-sign::before { - content: "\e2e6"; } +.fa-bangladeshi-taka-sign { + --fa: "\e2e6"; } -.fa-bicycle::before { - content: "\f206"; } +.fa-bicycle { + --fa: "\f206"; } -.fa-staff-snake::before { - content: "\e579"; } +.fa-staff-snake { + --fa: "\e579"; } -.fa-rod-asclepius::before { - content: "\e579"; } +.fa-rod-asclepius { + --fa: "\e579"; } -.fa-rod-snake::before { - content: "\e579"; } +.fa-rod-snake { + --fa: "\e579"; } -.fa-staff-aesculapius::before { - content: "\e579"; } +.fa-staff-aesculapius { + --fa: "\e579"; } -.fa-head-side-cough-slash::before { - content: "\e062"; } +.fa-head-side-cough-slash { + --fa: "\e062"; } -.fa-truck-medical::before { - content: "\f0f9"; } +.fa-truck-medical { + --fa: "\f0f9"; } -.fa-ambulance::before { - content: "\f0f9"; } +.fa-ambulance { + --fa: "\f0f9"; } -.fa-wheat-awn-circle-exclamation::before { - content: "\e598"; } +.fa-wheat-awn-circle-exclamation { + --fa: "\e598"; } -.fa-snowman::before { - content: "\f7d0"; } +.fa-snowman { + --fa: "\f7d0"; } -.fa-mortar-pestle::before { - content: "\f5a7"; } +.fa-mortar-pestle { + --fa: "\f5a7"; } -.fa-road-barrier::before { - content: "\e562"; } +.fa-road-barrier { + --fa: "\e562"; } -.fa-school::before { - content: "\f549"; } +.fa-school { + --fa: "\f549"; } -.fa-igloo::before { - content: "\f7ae"; } +.fa-igloo { + --fa: "\f7ae"; } -.fa-joint::before { - content: "\f595"; } +.fa-joint { + --fa: "\f595"; } -.fa-angle-right::before { - content: "\f105"; } +.fa-angle-right { + --fa: "\f105"; } -.fa-horse::before { - content: "\f6f0"; } +.fa-horse { + --fa: "\f6f0"; } -.fa-q::before { - content: "\51"; } +.fa-q { + --fa: "\51"; } -.fa-g::before { - content: "\47"; } +.fa-g { + --fa: "\47"; } -.fa-notes-medical::before { - content: "\f481"; } +.fa-notes-medical { + --fa: "\f481"; } -.fa-temperature-half::before { - content: "\f2c9"; } +.fa-temperature-half { + --fa: "\f2c9"; } -.fa-temperature-2::before { - content: "\f2c9"; } +.fa-temperature-2 { + --fa: "\f2c9"; } -.fa-thermometer-2::before { - content: "\f2c9"; } +.fa-thermometer-2 { + --fa: "\f2c9"; } -.fa-thermometer-half::before { - content: "\f2c9"; } +.fa-thermometer-half { + --fa: "\f2c9"; } -.fa-dong-sign::before { - content: "\e169"; } +.fa-dong-sign { + --fa: "\e169"; } -.fa-capsules::before { - content: "\f46b"; } +.fa-capsules { + --fa: "\f46b"; } -.fa-poo-storm::before { - content: "\f75a"; } +.fa-poo-storm { + --fa: "\f75a"; } -.fa-poo-bolt::before { - content: "\f75a"; } +.fa-poo-bolt { + --fa: "\f75a"; } -.fa-face-frown-open::before { - content: "\f57a"; } +.fa-face-frown-open { + --fa: "\f57a"; } -.fa-frown-open::before { - content: "\f57a"; } +.fa-frown-open { + --fa: "\f57a"; } -.fa-hand-point-up::before { - content: "\f0a6"; } +.fa-hand-point-up { + --fa: "\f0a6"; } -.fa-money-bill::before { - content: "\f0d6"; } +.fa-money-bill { + --fa: "\f0d6"; } -.fa-bookmark::before { - content: "\f02e"; } +.fa-bookmark { + --fa: "\f02e"; } -.fa-align-justify::before { - content: "\f039"; } +.fa-align-justify { + --fa: "\f039"; } -.fa-umbrella-beach::before { - content: "\f5ca"; } +.fa-umbrella-beach { + --fa: "\f5ca"; } -.fa-helmet-un::before { - content: "\e503"; } +.fa-helmet-un { + --fa: "\e503"; } -.fa-bullseye::before { - content: "\f140"; } +.fa-bullseye { + --fa: "\f140"; } -.fa-bacon::before { - content: "\f7e5"; } +.fa-bacon { + --fa: "\f7e5"; } -.fa-hand-point-down::before { - content: "\f0a7"; } +.fa-hand-point-down { + --fa: "\f0a7"; } -.fa-arrow-up-from-bracket::before { - content: "\e09a"; } +.fa-arrow-up-from-bracket { + --fa: "\e09a"; } -.fa-folder::before { - content: "\f07b"; } +.fa-folder { + --fa: "\f07b"; } -.fa-folder-blank::before { - content: "\f07b"; } +.fa-folder-blank { + --fa: "\f07b"; } -.fa-file-waveform::before { - content: "\f478"; } +.fa-file-waveform { + --fa: "\f478"; } -.fa-file-medical-alt::before { - content: "\f478"; } +.fa-file-medical-alt { + --fa: "\f478"; } -.fa-radiation::before { - content: "\f7b9"; } +.fa-radiation { + --fa: "\f7b9"; } -.fa-chart-simple::before { - content: "\e473"; } +.fa-chart-simple { + --fa: "\e473"; } -.fa-mars-stroke::before { - content: "\f229"; } +.fa-mars-stroke { + --fa: "\f229"; } -.fa-vial::before { - content: "\f492"; } +.fa-vial { + --fa: "\f492"; } -.fa-gauge::before { - content: "\f624"; } +.fa-gauge { + --fa: "\f624"; } -.fa-dashboard::before { - content: "\f624"; } +.fa-dashboard { + --fa: "\f624"; } -.fa-gauge-med::before { - content: "\f624"; } +.fa-gauge-med { + --fa: "\f624"; } -.fa-tachometer-alt-average::before { - content: "\f624"; } +.fa-tachometer-alt-average { + --fa: "\f624"; } -.fa-wand-magic-sparkles::before { - content: "\e2ca"; } +.fa-wand-magic-sparkles { + --fa: "\e2ca"; } -.fa-magic-wand-sparkles::before { - content: "\e2ca"; } +.fa-magic-wand-sparkles { + --fa: "\e2ca"; } -.fa-e::before { - content: "\45"; } +.fa-e { + --fa: "\45"; } -.fa-pen-clip::before { - content: "\f305"; } +.fa-pen-clip { + --fa: "\f305"; } -.fa-pen-alt::before { - content: "\f305"; } +.fa-pen-alt { + --fa: "\f305"; } -.fa-bridge-circle-exclamation::before { - content: "\e4ca"; } +.fa-bridge-circle-exclamation { + --fa: "\e4ca"; } -.fa-user::before { - content: "\f007"; } +.fa-user { + --fa: "\f007"; } -.fa-school-circle-check::before { - content: "\e56b"; } +.fa-school-circle-check { + --fa: "\e56b"; } -.fa-dumpster::before { - content: "\f793"; } +.fa-dumpster { + --fa: "\f793"; } -.fa-van-shuttle::before { - content: "\f5b6"; } +.fa-van-shuttle { + --fa: "\f5b6"; } -.fa-shuttle-van::before { - content: "\f5b6"; } +.fa-shuttle-van { + --fa: "\f5b6"; } -.fa-building-user::before { - content: "\e4da"; } +.fa-building-user { + --fa: "\e4da"; } -.fa-square-caret-left::before { - content: "\f191"; } +.fa-square-caret-left { + --fa: "\f191"; } -.fa-caret-square-left::before { - content: "\f191"; } +.fa-caret-square-left { + --fa: "\f191"; } -.fa-highlighter::before { - content: "\f591"; } +.fa-highlighter { + --fa: "\f591"; } -.fa-key::before { - content: "\f084"; } +.fa-key { + --fa: "\f084"; } -.fa-bullhorn::before { - content: "\f0a1"; } +.fa-bullhorn { + --fa: "\f0a1"; } -.fa-globe::before { - content: "\f0ac"; } +.fa-globe { + --fa: "\f0ac"; } -.fa-synagogue::before { - content: "\f69b"; } +.fa-synagogue { + --fa: "\f69b"; } -.fa-person-half-dress::before { - content: "\e548"; } +.fa-person-half-dress { + --fa: "\e548"; } -.fa-road-bridge::before { - content: "\e563"; } +.fa-road-bridge { + --fa: "\e563"; } -.fa-location-arrow::before { - content: "\f124"; } +.fa-location-arrow { + --fa: "\f124"; } -.fa-c::before { - content: "\43"; } +.fa-c { + --fa: "\43"; } -.fa-tablet-button::before { - content: "\f10a"; } +.fa-tablet-button { + --fa: "\f10a"; } -.fa-building-lock::before { - content: "\e4d6"; } +.fa-building-lock { + --fa: "\e4d6"; } -.fa-pizza-slice::before { - content: "\f818"; } +.fa-pizza-slice { + --fa: "\f818"; } -.fa-money-bill-wave::before { - content: "\f53a"; } +.fa-money-bill-wave { + --fa: "\f53a"; } -.fa-chart-area::before { - content: "\f1fe"; } +.fa-chart-area { + --fa: "\f1fe"; } -.fa-area-chart::before { - content: "\f1fe"; } +.fa-area-chart { + --fa: "\f1fe"; } -.fa-house-flag::before { - content: "\e50d"; } +.fa-house-flag { + --fa: "\e50d"; } -.fa-person-circle-minus::before { - content: "\e540"; } +.fa-person-circle-minus { + --fa: "\e540"; } -.fa-ban::before { - content: "\f05e"; } +.fa-ban { + --fa: "\f05e"; } -.fa-cancel::before { - content: "\f05e"; } +.fa-cancel { + --fa: "\f05e"; } -.fa-camera-rotate::before { - content: "\e0d8"; } +.fa-camera-rotate { + --fa: "\e0d8"; } -.fa-spray-can-sparkles::before { - content: "\f5d0"; } +.fa-spray-can-sparkles { + --fa: "\f5d0"; } -.fa-air-freshener::before { - content: "\f5d0"; } +.fa-air-freshener { + --fa: "\f5d0"; } -.fa-star::before { - content: "\f005"; } +.fa-star { + --fa: "\f005"; } -.fa-repeat::before { - content: "\f363"; } +.fa-repeat { + --fa: "\f363"; } -.fa-cross::before { - content: "\f654"; } +.fa-cross { + --fa: "\f654"; } -.fa-box::before { - content: "\f466"; } +.fa-box { + --fa: "\f466"; } -.fa-venus-mars::before { - content: "\f228"; } +.fa-venus-mars { + --fa: "\f228"; } -.fa-arrow-pointer::before { - content: "\f245"; } +.fa-arrow-pointer { + --fa: "\f245"; } -.fa-mouse-pointer::before { - content: "\f245"; } +.fa-mouse-pointer { + --fa: "\f245"; } -.fa-maximize::before { - content: "\f31e"; } +.fa-maximize { + --fa: "\f31e"; } -.fa-expand-arrows-alt::before { - content: "\f31e"; } +.fa-expand-arrows-alt { + --fa: "\f31e"; } -.fa-charging-station::before { - content: "\f5e7"; } +.fa-charging-station { + --fa: "\f5e7"; } -.fa-shapes::before { - content: "\f61f"; } +.fa-shapes { + --fa: "\f61f"; } -.fa-triangle-circle-square::before { - content: "\f61f"; } +.fa-triangle-circle-square { + --fa: "\f61f"; } -.fa-shuffle::before { - content: "\f074"; } +.fa-shuffle { + --fa: "\f074"; } -.fa-random::before { - content: "\f074"; } +.fa-random { + --fa: "\f074"; } -.fa-person-running::before { - content: "\f70c"; } +.fa-person-running { + --fa: "\f70c"; } -.fa-running::before { - content: "\f70c"; } +.fa-running { + --fa: "\f70c"; } -.fa-mobile-retro::before { - content: "\e527"; } +.fa-mobile-retro { + --fa: "\e527"; } -.fa-grip-lines-vertical::before { - content: "\f7a5"; } +.fa-grip-lines-vertical { + --fa: "\f7a5"; } -.fa-spider::before { - content: "\f717"; } +.fa-spider { + --fa: "\f717"; } -.fa-hands-bound::before { - content: "\e4f9"; } +.fa-hands-bound { + --fa: "\e4f9"; } -.fa-file-invoice-dollar::before { - content: "\f571"; } +.fa-file-invoice-dollar { + --fa: "\f571"; } -.fa-plane-circle-exclamation::before { - content: "\e556"; } +.fa-plane-circle-exclamation { + --fa: "\e556"; } -.fa-x-ray::before { - content: "\f497"; } +.fa-x-ray { + --fa: "\f497"; } -.fa-spell-check::before { - content: "\f891"; } +.fa-spell-check { + --fa: "\f891"; } -.fa-slash::before { - content: "\f715"; } +.fa-slash { + --fa: "\f715"; } -.fa-computer-mouse::before { - content: "\f8cc"; } +.fa-computer-mouse { + --fa: "\f8cc"; } -.fa-mouse::before { - content: "\f8cc"; } +.fa-mouse { + --fa: "\f8cc"; } -.fa-arrow-right-to-bracket::before { - content: "\f090"; } +.fa-arrow-right-to-bracket { + --fa: "\f090"; } -.fa-sign-in::before { - content: "\f090"; } +.fa-sign-in { + --fa: "\f090"; } -.fa-shop-slash::before { - content: "\e070"; } +.fa-shop-slash { + --fa: "\e070"; } -.fa-store-alt-slash::before { - content: "\e070"; } +.fa-store-alt-slash { + --fa: "\e070"; } -.fa-server::before { - content: "\f233"; } +.fa-server { + --fa: "\f233"; } -.fa-virus-covid-slash::before { - content: "\e4a9"; } +.fa-virus-covid-slash { + --fa: "\e4a9"; } -.fa-shop-lock::before { - content: "\e4a5"; } +.fa-shop-lock { + --fa: "\e4a5"; } -.fa-hourglass-start::before { - content: "\f251"; } +.fa-hourglass-start { + --fa: "\f251"; } -.fa-hourglass-1::before { - content: "\f251"; } +.fa-hourglass-1 { + --fa: "\f251"; } -.fa-blender-phone::before { - content: "\f6b6"; } +.fa-blender-phone { + --fa: "\f6b6"; } -.fa-building-wheat::before { - content: "\e4db"; } +.fa-building-wheat { + --fa: "\e4db"; } -.fa-person-breastfeeding::before { - content: "\e53a"; } +.fa-person-breastfeeding { + --fa: "\e53a"; } -.fa-right-to-bracket::before { - content: "\f2f6"; } +.fa-right-to-bracket { + --fa: "\f2f6"; } -.fa-sign-in-alt::before { - content: "\f2f6"; } +.fa-sign-in-alt { + --fa: "\f2f6"; } -.fa-venus::before { - content: "\f221"; } +.fa-venus { + --fa: "\f221"; } -.fa-passport::before { - content: "\f5ab"; } +.fa-passport { + --fa: "\f5ab"; } -.fa-heart-pulse::before { - content: "\f21e"; } +.fa-thumbtack-slash { + --fa: "\e68f"; } -.fa-heartbeat::before { - content: "\f21e"; } +.fa-thumb-tack-slash { + --fa: "\e68f"; } -.fa-people-carry-box::before { - content: "\f4ce"; } +.fa-heart-pulse { + --fa: "\f21e"; } -.fa-people-carry::before { - content: "\f4ce"; } +.fa-heartbeat { + --fa: "\f21e"; } -.fa-temperature-high::before { - content: "\f769"; } +.fa-people-carry-box { + --fa: "\f4ce"; } -.fa-microchip::before { - content: "\f2db"; } +.fa-people-carry { + --fa: "\f4ce"; } -.fa-crown::before { - content: "\f521"; } +.fa-temperature-high { + --fa: "\f769"; } -.fa-weight-hanging::before { - content: "\f5cd"; } +.fa-microchip { + --fa: "\f2db"; } -.fa-xmarks-lines::before { - content: "\e59a"; } +.fa-crown { + --fa: "\f521"; } -.fa-file-prescription::before { - content: "\f572"; } +.fa-weight-hanging { + --fa: "\f5cd"; } -.fa-weight-scale::before { - content: "\f496"; } +.fa-xmarks-lines { + --fa: "\e59a"; } -.fa-weight::before { - content: "\f496"; } +.fa-file-prescription { + --fa: "\f572"; } -.fa-user-group::before { - content: "\f500"; } +.fa-weight-scale { + --fa: "\f496"; } -.fa-user-friends::before { - content: "\f500"; } +.fa-weight { + --fa: "\f496"; } -.fa-arrow-up-a-z::before { - content: "\f15e"; } +.fa-user-group { + --fa: "\f500"; } -.fa-sort-alpha-up::before { - content: "\f15e"; } +.fa-user-friends { + --fa: "\f500"; } -.fa-chess-knight::before { - content: "\f441"; } +.fa-arrow-up-a-z { + --fa: "\f15e"; } -.fa-face-laugh-squint::before { - content: "\f59b"; } +.fa-sort-alpha-up { + --fa: "\f15e"; } -.fa-laugh-squint::before { - content: "\f59b"; } +.fa-chess-knight { + --fa: "\f441"; } -.fa-wheelchair::before { - content: "\f193"; } +.fa-face-laugh-squint { + --fa: "\f59b"; } -.fa-circle-arrow-up::before { - content: "\f0aa"; } +.fa-laugh-squint { + --fa: "\f59b"; } -.fa-arrow-circle-up::before { - content: "\f0aa"; } +.fa-wheelchair { + --fa: "\f193"; } -.fa-toggle-on::before { - content: "\f205"; } +.fa-circle-arrow-up { + --fa: "\f0aa"; } -.fa-person-walking::before { - content: "\f554"; } +.fa-arrow-circle-up { + --fa: "\f0aa"; } -.fa-walking::before { - content: "\f554"; } +.fa-toggle-on { + --fa: "\f205"; } -.fa-l::before { - content: "\4c"; } +.fa-person-walking { + --fa: "\f554"; } -.fa-fire::before { - content: "\f06d"; } +.fa-walking { + --fa: "\f554"; } -.fa-bed-pulse::before { - content: "\f487"; } +.fa-l { + --fa: "\4c"; } -.fa-procedures::before { - content: "\f487"; } +.fa-fire { + --fa: "\f06d"; } -.fa-shuttle-space::before { - content: "\f197"; } +.fa-bed-pulse { + --fa: "\f487"; } -.fa-space-shuttle::before { - content: "\f197"; } +.fa-procedures { + --fa: "\f487"; } -.fa-face-laugh::before { - content: "\f599"; } +.fa-shuttle-space { + --fa: "\f197"; } -.fa-laugh::before { - content: "\f599"; } +.fa-space-shuttle { + --fa: "\f197"; } -.fa-folder-open::before { - content: "\f07c"; } +.fa-face-laugh { + --fa: "\f599"; } -.fa-heart-circle-plus::before { - content: "\e500"; } +.fa-laugh { + --fa: "\f599"; } -.fa-code-fork::before { - content: "\e13b"; } +.fa-folder-open { + --fa: "\f07c"; } -.fa-city::before { - content: "\f64f"; } +.fa-heart-circle-plus { + --fa: "\e500"; } -.fa-microphone-lines::before { - content: "\f3c9"; } +.fa-code-fork { + --fa: "\e13b"; } -.fa-microphone-alt::before { - content: "\f3c9"; } +.fa-city { + --fa: "\f64f"; } -.fa-pepper-hot::before { - content: "\f816"; } +.fa-microphone-lines { + --fa: "\f3c9"; } -.fa-unlock::before { - content: "\f09c"; } +.fa-microphone-alt { + --fa: "\f3c9"; } -.fa-colon-sign::before { - content: "\e140"; } +.fa-pepper-hot { + --fa: "\f816"; } -.fa-headset::before { - content: "\f590"; } +.fa-unlock { + --fa: "\f09c"; } -.fa-store-slash::before { - content: "\e071"; } +.fa-colon-sign { + --fa: "\e140"; } -.fa-road-circle-xmark::before { - content: "\e566"; } +.fa-headset { + --fa: "\f590"; } -.fa-user-minus::before { - content: "\f503"; } +.fa-store-slash { + --fa: "\e071"; } -.fa-mars-stroke-up::before { - content: "\f22a"; } +.fa-road-circle-xmark { + --fa: "\e566"; } -.fa-mars-stroke-v::before { - content: "\f22a"; } +.fa-user-minus { + --fa: "\f503"; } -.fa-champagne-glasses::before { - content: "\f79f"; } +.fa-mars-stroke-up { + --fa: "\f22a"; } -.fa-glass-cheers::before { - content: "\f79f"; } +.fa-mars-stroke-v { + --fa: "\f22a"; } -.fa-clipboard::before { - content: "\f328"; } +.fa-champagne-glasses { + --fa: "\f79f"; } -.fa-house-circle-exclamation::before { - content: "\e50a"; } +.fa-glass-cheers { + --fa: "\f79f"; } -.fa-file-arrow-up::before { - content: "\f574"; } +.fa-clipboard { + --fa: "\f328"; } -.fa-file-upload::before { - content: "\f574"; } +.fa-house-circle-exclamation { + --fa: "\e50a"; } -.fa-wifi::before { - content: "\f1eb"; } +.fa-file-arrow-up { + --fa: "\f574"; } -.fa-wifi-3::before { - content: "\f1eb"; } +.fa-file-upload { + --fa: "\f574"; } -.fa-wifi-strong::before { - content: "\f1eb"; } +.fa-wifi { + --fa: "\f1eb"; } -.fa-bath::before { - content: "\f2cd"; } +.fa-wifi-3 { + --fa: "\f1eb"; } -.fa-bathtub::before { - content: "\f2cd"; } +.fa-wifi-strong { + --fa: "\f1eb"; } -.fa-underline::before { - content: "\f0cd"; } +.fa-bath { + --fa: "\f2cd"; } -.fa-user-pen::before { - content: "\f4ff"; } +.fa-bathtub { + --fa: "\f2cd"; } -.fa-user-edit::before { - content: "\f4ff"; } +.fa-underline { + --fa: "\f0cd"; } -.fa-signature::before { - content: "\f5b7"; } +.fa-user-pen { + --fa: "\f4ff"; } -.fa-stroopwafel::before { - content: "\f551"; } +.fa-user-edit { + --fa: "\f4ff"; } -.fa-bold::before { - content: "\f032"; } +.fa-signature { + --fa: "\f5b7"; } -.fa-anchor-lock::before { - content: "\e4ad"; } +.fa-stroopwafel { + --fa: "\f551"; } -.fa-building-ngo::before { - content: "\e4d7"; } +.fa-bold { + --fa: "\f032"; } -.fa-manat-sign::before { - content: "\e1d5"; } +.fa-anchor-lock { + --fa: "\e4ad"; } -.fa-not-equal::before { - content: "\f53e"; } +.fa-building-ngo { + --fa: "\e4d7"; } -.fa-border-top-left::before { - content: "\f853"; } +.fa-manat-sign { + --fa: "\e1d5"; } -.fa-border-style::before { - content: "\f853"; } +.fa-not-equal { + --fa: "\f53e"; } -.fa-map-location-dot::before { - content: "\f5a0"; } +.fa-border-top-left { + --fa: "\f853"; } -.fa-map-marked-alt::before { - content: "\f5a0"; } +.fa-border-style { + --fa: "\f853"; } -.fa-jedi::before { - content: "\f669"; } +.fa-map-location-dot { + --fa: "\f5a0"; } -.fa-square-poll-vertical::before { - content: "\f681"; } +.fa-map-marked-alt { + --fa: "\f5a0"; } -.fa-poll::before { - content: "\f681"; } +.fa-jedi { + --fa: "\f669"; } -.fa-mug-hot::before { - content: "\f7b6"; } +.fa-square-poll-vertical { + --fa: "\f681"; } -.fa-car-battery::before { - content: "\f5df"; } +.fa-poll { + --fa: "\f681"; } -.fa-battery-car::before { - content: "\f5df"; } +.fa-mug-hot { + --fa: "\f7b6"; } -.fa-gift::before { - content: "\f06b"; } +.fa-car-battery { + --fa: "\f5df"; } -.fa-dice-two::before { - content: "\f528"; } +.fa-battery-car { + --fa: "\f5df"; } -.fa-chess-queen::before { - content: "\f445"; } +.fa-gift { + --fa: "\f06b"; } -.fa-glasses::before { - content: "\f530"; } +.fa-dice-two { + --fa: "\f528"; } -.fa-chess-board::before { - content: "\f43c"; } +.fa-chess-queen { + --fa: "\f445"; } -.fa-building-circle-check::before { - content: "\e4d2"; } +.fa-glasses { + --fa: "\f530"; } -.fa-person-chalkboard::before { - content: "\e53d"; } +.fa-chess-board { + --fa: "\f43c"; } -.fa-mars-stroke-right::before { - content: "\f22b"; } +.fa-building-circle-check { + --fa: "\e4d2"; } -.fa-mars-stroke-h::before { - content: "\f22b"; } +.fa-person-chalkboard { + --fa: "\e53d"; } -.fa-hand-back-fist::before { - content: "\f255"; } +.fa-mars-stroke-right { + --fa: "\f22b"; } -.fa-hand-rock::before { - content: "\f255"; } +.fa-mars-stroke-h { + --fa: "\f22b"; } -.fa-square-caret-up::before { - content: "\f151"; } +.fa-hand-back-fist { + --fa: "\f255"; } -.fa-caret-square-up::before { - content: "\f151"; } +.fa-hand-rock { + --fa: "\f255"; } -.fa-cloud-showers-water::before { - content: "\e4e4"; } +.fa-square-caret-up { + --fa: "\f151"; } -.fa-chart-bar::before { - content: "\f080"; } +.fa-caret-square-up { + --fa: "\f151"; } -.fa-bar-chart::before { - content: "\f080"; } +.fa-cloud-showers-water { + --fa: "\e4e4"; } -.fa-hands-bubbles::before { - content: "\e05e"; } +.fa-chart-bar { + --fa: "\f080"; } -.fa-hands-wash::before { - content: "\e05e"; } +.fa-bar-chart { + --fa: "\f080"; } -.fa-less-than-equal::before { - content: "\f537"; } +.fa-hands-bubbles { + --fa: "\e05e"; } -.fa-train::before { - content: "\f238"; } +.fa-hands-wash { + --fa: "\e05e"; } -.fa-eye-low-vision::before { - content: "\f2a8"; } +.fa-less-than-equal { + --fa: "\f537"; } -.fa-low-vision::before { - content: "\f2a8"; } +.fa-train { + --fa: "\f238"; } -.fa-crow::before { - content: "\f520"; } +.fa-eye-low-vision { + --fa: "\f2a8"; } -.fa-sailboat::before { - content: "\e445"; } +.fa-low-vision { + --fa: "\f2a8"; } -.fa-window-restore::before { - content: "\f2d2"; } +.fa-crow { + --fa: "\f520"; } -.fa-square-plus::before { - content: "\f0fe"; } +.fa-sailboat { + --fa: "\e445"; } -.fa-plus-square::before { - content: "\f0fe"; } +.fa-window-restore { + --fa: "\f2d2"; } -.fa-torii-gate::before { - content: "\f6a1"; } +.fa-square-plus { + --fa: "\f0fe"; } -.fa-frog::before { - content: "\f52e"; } +.fa-plus-square { + --fa: "\f0fe"; } -.fa-bucket::before { - content: "\e4cf"; } +.fa-torii-gate { + --fa: "\f6a1"; } -.fa-image::before { - content: "\f03e"; } +.fa-frog { + --fa: "\f52e"; } -.fa-microphone::before { - content: "\f130"; } +.fa-bucket { + --fa: "\e4cf"; } -.fa-cow::before { - content: "\f6c8"; } +.fa-image { + --fa: "\f03e"; } -.fa-caret-up::before { - content: "\f0d8"; } +.fa-microphone { + --fa: "\f130"; } -.fa-screwdriver::before { - content: "\f54a"; } +.fa-cow { + --fa: "\f6c8"; } -.fa-folder-closed::before { - content: "\e185"; } +.fa-caret-up { + --fa: "\f0d8"; } -.fa-house-tsunami::before { - content: "\e515"; } +.fa-screwdriver { + --fa: "\f54a"; } -.fa-square-nfi::before { - content: "\e576"; } +.fa-folder-closed { + --fa: "\e185"; } -.fa-arrow-up-from-ground-water::before { - content: "\e4b5"; } +.fa-house-tsunami { + --fa: "\e515"; } -.fa-martini-glass::before { - content: "\f57b"; } +.fa-square-nfi { + --fa: "\e576"; } -.fa-glass-martini-alt::before { - content: "\f57b"; } +.fa-arrow-up-from-ground-water { + --fa: "\e4b5"; } -.fa-rotate-left::before { - content: "\f2ea"; } +.fa-martini-glass { + --fa: "\f57b"; } -.fa-rotate-back::before { - content: "\f2ea"; } +.fa-glass-martini-alt { + --fa: "\f57b"; } -.fa-rotate-backward::before { - content: "\f2ea"; } +.fa-square-binary { + --fa: "\e69b"; } -.fa-undo-alt::before { - content: "\f2ea"; } +.fa-rotate-left { + --fa: "\f2ea"; } -.fa-table-columns::before { - content: "\f0db"; } +.fa-rotate-back { + --fa: "\f2ea"; } -.fa-columns::before { - content: "\f0db"; } +.fa-rotate-backward { + --fa: "\f2ea"; } -.fa-lemon::before { - content: "\f094"; } +.fa-undo-alt { + --fa: "\f2ea"; } -.fa-head-side-mask::before { - content: "\e063"; } +.fa-table-columns { + --fa: "\f0db"; } -.fa-handshake::before { - content: "\f2b5"; } +.fa-columns { + --fa: "\f0db"; } -.fa-gem::before { - content: "\f3a5"; } +.fa-lemon { + --fa: "\f094"; } -.fa-dolly::before { - content: "\f472"; } +.fa-head-side-mask { + --fa: "\e063"; } -.fa-dolly-box::before { - content: "\f472"; } +.fa-handshake { + --fa: "\f2b5"; } -.fa-smoking::before { - content: "\f48d"; } +.fa-gem { + --fa: "\f3a5"; } -.fa-minimize::before { - content: "\f78c"; } +.fa-dolly { + --fa: "\f472"; } -.fa-compress-arrows-alt::before { - content: "\f78c"; } +.fa-dolly-box { + --fa: "\f472"; } -.fa-monument::before { - content: "\f5a6"; } +.fa-smoking { + --fa: "\f48d"; } -.fa-snowplow::before { - content: "\f7d2"; } +.fa-minimize { + --fa: "\f78c"; } -.fa-angles-right::before { - content: "\f101"; } +.fa-compress-arrows-alt { + --fa: "\f78c"; } -.fa-angle-double-right::before { - content: "\f101"; } +.fa-monument { + --fa: "\f5a6"; } -.fa-cannabis::before { - content: "\f55f"; } +.fa-snowplow { + --fa: "\f7d2"; } -.fa-circle-play::before { - content: "\f144"; } +.fa-angles-right { + --fa: "\f101"; } -.fa-play-circle::before { - content: "\f144"; } +.fa-angle-double-right { + --fa: "\f101"; } -.fa-tablets::before { - content: "\f490"; } +.fa-cannabis { + --fa: "\f55f"; } -.fa-ethernet::before { - content: "\f796"; } +.fa-circle-play { + --fa: "\f144"; } -.fa-euro-sign::before { - content: "\f153"; } +.fa-play-circle { + --fa: "\f144"; } -.fa-eur::before { - content: "\f153"; } +.fa-tablets { + --fa: "\f490"; } -.fa-euro::before { - content: "\f153"; } +.fa-ethernet { + --fa: "\f796"; } -.fa-chair::before { - content: "\f6c0"; } +.fa-euro-sign { + --fa: "\f153"; } -.fa-circle-check::before { - content: "\f058"; } +.fa-eur { + --fa: "\f153"; } -.fa-check-circle::before { - content: "\f058"; } +.fa-euro { + --fa: "\f153"; } -.fa-circle-stop::before { - content: "\f28d"; } +.fa-chair { + --fa: "\f6c0"; } -.fa-stop-circle::before { - content: "\f28d"; } +.fa-circle-check { + --fa: "\f058"; } -.fa-compass-drafting::before { - content: "\f568"; } +.fa-check-circle { + --fa: "\f058"; } -.fa-drafting-compass::before { - content: "\f568"; } +.fa-circle-stop { + --fa: "\f28d"; } -.fa-plate-wheat::before { - content: "\e55a"; } +.fa-stop-circle { + --fa: "\f28d"; } -.fa-icicles::before { - content: "\f7ad"; } +.fa-compass-drafting { + --fa: "\f568"; } -.fa-person-shelter::before { - content: "\e54f"; } +.fa-drafting-compass { + --fa: "\f568"; } -.fa-neuter::before { - content: "\f22c"; } +.fa-plate-wheat { + --fa: "\e55a"; } -.fa-id-badge::before { - content: "\f2c1"; } +.fa-icicles { + --fa: "\f7ad"; } -.fa-marker::before { - content: "\f5a1"; } +.fa-person-shelter { + --fa: "\e54f"; } -.fa-face-laugh-beam::before { - content: "\f59a"; } +.fa-neuter { + --fa: "\f22c"; } -.fa-laugh-beam::before { - content: "\f59a"; } +.fa-id-badge { + --fa: "\f2c1"; } -.fa-helicopter-symbol::before { - content: "\e502"; } +.fa-marker { + --fa: "\f5a1"; } -.fa-universal-access::before { - content: "\f29a"; } +.fa-face-laugh-beam { + --fa: "\f59a"; } -.fa-circle-chevron-up::before { - content: "\f139"; } +.fa-laugh-beam { + --fa: "\f59a"; } -.fa-chevron-circle-up::before { - content: "\f139"; } +.fa-helicopter-symbol { + --fa: "\e502"; } -.fa-lari-sign::before { - content: "\e1c8"; } +.fa-universal-access { + --fa: "\f29a"; } -.fa-volcano::before { - content: "\f770"; } +.fa-circle-chevron-up { + --fa: "\f139"; } -.fa-person-walking-dashed-line-arrow-right::before { - content: "\e553"; } +.fa-chevron-circle-up { + --fa: "\f139"; } -.fa-sterling-sign::before { - content: "\f154"; } +.fa-lari-sign { + --fa: "\e1c8"; } -.fa-gbp::before { - content: "\f154"; } +.fa-volcano { + --fa: "\f770"; } -.fa-pound-sign::before { - content: "\f154"; } +.fa-person-walking-dashed-line-arrow-right { + --fa: "\e553"; } -.fa-viruses::before { - content: "\e076"; } +.fa-sterling-sign { + --fa: "\f154"; } -.fa-square-person-confined::before { - content: "\e577"; } +.fa-gbp { + --fa: "\f154"; } -.fa-user-tie::before { - content: "\f508"; } +.fa-pound-sign { + --fa: "\f154"; } -.fa-arrow-down-long::before { - content: "\f175"; } +.fa-viruses { + --fa: "\e076"; } -.fa-long-arrow-down::before { - content: "\f175"; } +.fa-square-person-confined { + --fa: "\e577"; } -.fa-tent-arrow-down-to-line::before { - content: "\e57e"; } +.fa-user-tie { + --fa: "\f508"; } -.fa-certificate::before { - content: "\f0a3"; } +.fa-arrow-down-long { + --fa: "\f175"; } -.fa-reply-all::before { - content: "\f122"; } +.fa-long-arrow-down { + --fa: "\f175"; } -.fa-mail-reply-all::before { - content: "\f122"; } +.fa-tent-arrow-down-to-line { + --fa: "\e57e"; } -.fa-suitcase::before { - content: "\f0f2"; } +.fa-certificate { + --fa: "\f0a3"; } -.fa-person-skating::before { - content: "\f7c5"; } +.fa-reply-all { + --fa: "\f122"; } -.fa-skating::before { - content: "\f7c5"; } +.fa-mail-reply-all { + --fa: "\f122"; } -.fa-filter-circle-dollar::before { - content: "\f662"; } +.fa-suitcase { + --fa: "\f0f2"; } -.fa-funnel-dollar::before { - content: "\f662"; } +.fa-person-skating { + --fa: "\f7c5"; } -.fa-camera-retro::before { - content: "\f083"; } +.fa-skating { + --fa: "\f7c5"; } -.fa-circle-arrow-down::before { - content: "\f0ab"; } +.fa-filter-circle-dollar { + --fa: "\f662"; } -.fa-arrow-circle-down::before { - content: "\f0ab"; } +.fa-funnel-dollar { + --fa: "\f662"; } -.fa-file-import::before { - content: "\f56f"; } +.fa-camera-retro { + --fa: "\f083"; } -.fa-arrow-right-to-file::before { - content: "\f56f"; } +.fa-circle-arrow-down { + --fa: "\f0ab"; } -.fa-square-arrow-up-right::before { - content: "\f14c"; } +.fa-arrow-circle-down { + --fa: "\f0ab"; } -.fa-external-link-square::before { - content: "\f14c"; } +.fa-file-import { + --fa: "\f56f"; } -.fa-box-open::before { - content: "\f49e"; } +.fa-arrow-right-to-file { + --fa: "\f56f"; } -.fa-scroll::before { - content: "\f70e"; } +.fa-square-arrow-up-right { + --fa: "\f14c"; } -.fa-spa::before { - content: "\f5bb"; } +.fa-external-link-square { + --fa: "\f14c"; } -.fa-location-pin-lock::before { - content: "\e51f"; } +.fa-box-open { + --fa: "\f49e"; } -.fa-pause::before { - content: "\f04c"; } +.fa-scroll { + --fa: "\f70e"; } -.fa-hill-avalanche::before { - content: "\e507"; } +.fa-spa { + --fa: "\f5bb"; } -.fa-temperature-empty::before { - content: "\f2cb"; } +.fa-location-pin-lock { + --fa: "\e51f"; } -.fa-temperature-0::before { - content: "\f2cb"; } +.fa-pause { + --fa: "\f04c"; } -.fa-thermometer-0::before { - content: "\f2cb"; } +.fa-hill-avalanche { + --fa: "\e507"; } -.fa-thermometer-empty::before { - content: "\f2cb"; } +.fa-temperature-empty { + --fa: "\f2cb"; } -.fa-bomb::before { - content: "\f1e2"; } +.fa-temperature-0 { + --fa: "\f2cb"; } -.fa-registered::before { - content: "\f25d"; } +.fa-thermometer-0 { + --fa: "\f2cb"; } -.fa-address-card::before { - content: "\f2bb"; } +.fa-thermometer-empty { + --fa: "\f2cb"; } -.fa-contact-card::before { - content: "\f2bb"; } +.fa-bomb { + --fa: "\f1e2"; } -.fa-vcard::before { - content: "\f2bb"; } +.fa-registered { + --fa: "\f25d"; } -.fa-scale-unbalanced-flip::before { - content: "\f516"; } +.fa-address-card { + --fa: "\f2bb"; } -.fa-balance-scale-right::before { - content: "\f516"; } +.fa-contact-card { + --fa: "\f2bb"; } -.fa-subscript::before { - content: "\f12c"; } +.fa-vcard { + --fa: "\f2bb"; } -.fa-diamond-turn-right::before { - content: "\f5eb"; } +.fa-scale-unbalanced-flip { + --fa: "\f516"; } -.fa-directions::before { - content: "\f5eb"; } +.fa-balance-scale-right { + --fa: "\f516"; } -.fa-burst::before { - content: "\e4dc"; } +.fa-subscript { + --fa: "\f12c"; } -.fa-house-laptop::before { - content: "\e066"; } +.fa-diamond-turn-right { + --fa: "\f5eb"; } -.fa-laptop-house::before { - content: "\e066"; } +.fa-directions { + --fa: "\f5eb"; } -.fa-face-tired::before { - content: "\f5c8"; } +.fa-burst { + --fa: "\e4dc"; } -.fa-tired::before { - content: "\f5c8"; } +.fa-house-laptop { + --fa: "\e066"; } -.fa-money-bills::before { - content: "\e1f3"; } +.fa-laptop-house { + --fa: "\e066"; } -.fa-smog::before { - content: "\f75f"; } +.fa-face-tired { + --fa: "\f5c8"; } -.fa-crutch::before { - content: "\f7f7"; } +.fa-tired { + --fa: "\f5c8"; } -.fa-cloud-arrow-up::before { - content: "\f0ee"; } +.fa-money-bills { + --fa: "\e1f3"; } -.fa-cloud-upload::before { - content: "\f0ee"; } +.fa-smog { + --fa: "\f75f"; } -.fa-cloud-upload-alt::before { - content: "\f0ee"; } +.fa-crutch { + --fa: "\f7f7"; } -.fa-palette::before { - content: "\f53f"; } +.fa-cloud-arrow-up { + --fa: "\f0ee"; } -.fa-arrows-turn-right::before { - content: "\e4c0"; } +.fa-cloud-upload { + --fa: "\f0ee"; } -.fa-vest::before { - content: "\e085"; } +.fa-cloud-upload-alt { + --fa: "\f0ee"; } -.fa-ferry::before { - content: "\e4ea"; } +.fa-palette { + --fa: "\f53f"; } -.fa-arrows-down-to-people::before { - content: "\e4b9"; } +.fa-arrows-turn-right { + --fa: "\e4c0"; } -.fa-seedling::before { - content: "\f4d8"; } +.fa-vest { + --fa: "\e085"; } -.fa-sprout::before { - content: "\f4d8"; } +.fa-ferry { + --fa: "\e4ea"; } -.fa-left-right::before { - content: "\f337"; } +.fa-arrows-down-to-people { + --fa: "\e4b9"; } -.fa-arrows-alt-h::before { - content: "\f337"; } +.fa-seedling { + --fa: "\f4d8"; } -.fa-boxes-packing::before { - content: "\e4c7"; } +.fa-sprout { + --fa: "\f4d8"; } -.fa-circle-arrow-left::before { - content: "\f0a8"; } +.fa-left-right { + --fa: "\f337"; } -.fa-arrow-circle-left::before { - content: "\f0a8"; } +.fa-arrows-alt-h { + --fa: "\f337"; } -.fa-group-arrows-rotate::before { - content: "\e4f6"; } +.fa-boxes-packing { + --fa: "\e4c7"; } -.fa-bowl-food::before { - content: "\e4c6"; } +.fa-circle-arrow-left { + --fa: "\f0a8"; } -.fa-candy-cane::before { - content: "\f786"; } +.fa-arrow-circle-left { + --fa: "\f0a8"; } -.fa-arrow-down-wide-short::before { - content: "\f160"; } +.fa-group-arrows-rotate { + --fa: "\e4f6"; } -.fa-sort-amount-asc::before { - content: "\f160"; } +.fa-bowl-food { + --fa: "\e4c6"; } -.fa-sort-amount-down::before { - content: "\f160"; } +.fa-candy-cane { + --fa: "\f786"; } -.fa-cloud-bolt::before { - content: "\f76c"; } +.fa-arrow-down-wide-short { + --fa: "\f160"; } -.fa-thunderstorm::before { - content: "\f76c"; } +.fa-sort-amount-asc { + --fa: "\f160"; } -.fa-text-slash::before { - content: "\f87d"; } +.fa-sort-amount-down { + --fa: "\f160"; } -.fa-remove-format::before { - content: "\f87d"; } +.fa-cloud-bolt { + --fa: "\f76c"; } -.fa-face-smile-wink::before { - content: "\f4da"; } +.fa-thunderstorm { + --fa: "\f76c"; } -.fa-smile-wink::before { - content: "\f4da"; } +.fa-text-slash { + --fa: "\f87d"; } -.fa-file-word::before { - content: "\f1c2"; } +.fa-remove-format { + --fa: "\f87d"; } -.fa-file-powerpoint::before { - content: "\f1c4"; } +.fa-face-smile-wink { + --fa: "\f4da"; } -.fa-arrows-left-right::before { - content: "\f07e"; } +.fa-smile-wink { + --fa: "\f4da"; } -.fa-arrows-h::before { - content: "\f07e"; } +.fa-file-word { + --fa: "\f1c2"; } -.fa-house-lock::before { - content: "\e510"; } +.fa-file-powerpoint { + --fa: "\f1c4"; } -.fa-cloud-arrow-down::before { - content: "\f0ed"; } +.fa-arrows-left-right { + --fa: "\f07e"; } -.fa-cloud-download::before { - content: "\f0ed"; } +.fa-arrows-h { + --fa: "\f07e"; } -.fa-cloud-download-alt::before { - content: "\f0ed"; } +.fa-house-lock { + --fa: "\e510"; } -.fa-children::before { - content: "\e4e1"; } +.fa-cloud-arrow-down { + --fa: "\f0ed"; } -.fa-chalkboard::before { - content: "\f51b"; } +.fa-cloud-download { + --fa: "\f0ed"; } -.fa-blackboard::before { - content: "\f51b"; } +.fa-cloud-download-alt { + --fa: "\f0ed"; } -.fa-user-large-slash::before { - content: "\f4fa"; } +.fa-children { + --fa: "\e4e1"; } -.fa-user-alt-slash::before { - content: "\f4fa"; } +.fa-chalkboard { + --fa: "\f51b"; } -.fa-envelope-open::before { - content: "\f2b6"; } +.fa-blackboard { + --fa: "\f51b"; } -.fa-handshake-simple-slash::before { - content: "\e05f"; } +.fa-user-large-slash { + --fa: "\f4fa"; } -.fa-handshake-alt-slash::before { - content: "\e05f"; } +.fa-user-alt-slash { + --fa: "\f4fa"; } -.fa-mattress-pillow::before { - content: "\e525"; } +.fa-envelope-open { + --fa: "\f2b6"; } -.fa-guarani-sign::before { - content: "\e19a"; } +.fa-handshake-simple-slash { + --fa: "\e05f"; } -.fa-arrows-rotate::before { - content: "\f021"; } +.fa-handshake-alt-slash { + --fa: "\e05f"; } -.fa-refresh::before { - content: "\f021"; } +.fa-mattress-pillow { + --fa: "\e525"; } -.fa-sync::before { - content: "\f021"; } +.fa-guarani-sign { + --fa: "\e19a"; } -.fa-fire-extinguisher::before { - content: "\f134"; } +.fa-arrows-rotate { + --fa: "\f021"; } -.fa-cruzeiro-sign::before { - content: "\e152"; } +.fa-refresh { + --fa: "\f021"; } -.fa-greater-than-equal::before { - content: "\f532"; } +.fa-sync { + --fa: "\f021"; } -.fa-shield-halved::before { - content: "\f3ed"; } +.fa-fire-extinguisher { + --fa: "\f134"; } -.fa-shield-alt::before { - content: "\f3ed"; } +.fa-cruzeiro-sign { + --fa: "\e152"; } -.fa-book-atlas::before { - content: "\f558"; } +.fa-greater-than-equal { + --fa: "\f532"; } -.fa-atlas::before { - content: "\f558"; } +.fa-shield-halved { + --fa: "\f3ed"; } -.fa-virus::before { - content: "\e074"; } +.fa-shield-alt { + --fa: "\f3ed"; } -.fa-envelope-circle-check::before { - content: "\e4e8"; } +.fa-book-atlas { + --fa: "\f558"; } -.fa-layer-group::before { - content: "\f5fd"; } +.fa-atlas { + --fa: "\f558"; } -.fa-arrows-to-dot::before { - content: "\e4be"; } +.fa-virus { + --fa: "\e074"; } -.fa-archway::before { - content: "\f557"; } +.fa-envelope-circle-check { + --fa: "\e4e8"; } -.fa-heart-circle-check::before { - content: "\e4fd"; } +.fa-layer-group { + --fa: "\f5fd"; } -.fa-house-chimney-crack::before { - content: "\f6f1"; } +.fa-arrows-to-dot { + --fa: "\e4be"; } -.fa-house-damage::before { - content: "\f6f1"; } +.fa-archway { + --fa: "\f557"; } -.fa-file-zipper::before { - content: "\f1c6"; } +.fa-heart-circle-check { + --fa: "\e4fd"; } -.fa-file-archive::before { - content: "\f1c6"; } +.fa-house-chimney-crack { + --fa: "\f6f1"; } -.fa-square::before { - content: "\f0c8"; } +.fa-house-damage { + --fa: "\f6f1"; } -.fa-martini-glass-empty::before { - content: "\f000"; } +.fa-file-zipper { + --fa: "\f1c6"; } -.fa-glass-martini::before { - content: "\f000"; } +.fa-file-archive { + --fa: "\f1c6"; } -.fa-couch::before { - content: "\f4b8"; } +.fa-square { + --fa: "\f0c8"; } -.fa-cedi-sign::before { - content: "\e0df"; } +.fa-martini-glass-empty { + --fa: "\f000"; } -.fa-italic::before { - content: "\f033"; } +.fa-glass-martini { + --fa: "\f000"; } -.fa-table-cells-column-lock::before { - content: "\e678"; } +.fa-couch { + --fa: "\f4b8"; } -.fa-church::before { - content: "\f51d"; } +.fa-cedi-sign { + --fa: "\e0df"; } -.fa-comments-dollar::before { - content: "\f653"; } +.fa-italic { + --fa: "\f033"; } -.fa-democrat::before { - content: "\f747"; } +.fa-table-cells-column-lock { + --fa: "\e678"; } -.fa-z::before { - content: "\5a"; } +.fa-church { + --fa: "\f51d"; } -.fa-person-skiing::before { - content: "\f7c9"; } +.fa-comments-dollar { + --fa: "\f653"; } -.fa-skiing::before { - content: "\f7c9"; } +.fa-democrat { + --fa: "\f747"; } -.fa-road-lock::before { - content: "\e567"; } +.fa-z { + --fa: "\5a"; } -.fa-a::before { - content: "\41"; } +.fa-person-skiing { + --fa: "\f7c9"; } -.fa-temperature-arrow-down::before { - content: "\e03f"; } +.fa-skiing { + --fa: "\f7c9"; } -.fa-temperature-down::before { - content: "\e03f"; } +.fa-road-lock { + --fa: "\e567"; } -.fa-feather-pointed::before { - content: "\f56b"; } +.fa-a { + --fa: "\41"; } -.fa-feather-alt::before { - content: "\f56b"; } +.fa-temperature-arrow-down { + --fa: "\e03f"; } -.fa-p::before { - content: "\50"; } +.fa-temperature-down { + --fa: "\e03f"; } -.fa-snowflake::before { - content: "\f2dc"; } +.fa-feather-pointed { + --fa: "\f56b"; } -.fa-newspaper::before { - content: "\f1ea"; } +.fa-feather-alt { + --fa: "\f56b"; } -.fa-rectangle-ad::before { - content: "\f641"; } +.fa-p { + --fa: "\50"; } -.fa-ad::before { - content: "\f641"; } +.fa-snowflake { + --fa: "\f2dc"; } -.fa-circle-arrow-right::before { - content: "\f0a9"; } +.fa-newspaper { + --fa: "\f1ea"; } -.fa-arrow-circle-right::before { - content: "\f0a9"; } +.fa-rectangle-ad { + --fa: "\f641"; } -.fa-filter-circle-xmark::before { - content: "\e17b"; } +.fa-ad { + --fa: "\f641"; } -.fa-locust::before { - content: "\e520"; } +.fa-circle-arrow-right { + --fa: "\f0a9"; } -.fa-sort::before { - content: "\f0dc"; } +.fa-arrow-circle-right { + --fa: "\f0a9"; } -.fa-unsorted::before { - content: "\f0dc"; } +.fa-filter-circle-xmark { + --fa: "\e17b"; } -.fa-list-ol::before { - content: "\f0cb"; } +.fa-locust { + --fa: "\e520"; } -.fa-list-1-2::before { - content: "\f0cb"; } +.fa-sort { + --fa: "\f0dc"; } -.fa-list-numeric::before { - content: "\f0cb"; } +.fa-unsorted { + --fa: "\f0dc"; } -.fa-person-dress-burst::before { - content: "\e544"; } +.fa-list-ol { + --fa: "\f0cb"; } -.fa-money-check-dollar::before { - content: "\f53d"; } +.fa-list-1-2 { + --fa: "\f0cb"; } -.fa-money-check-alt::before { - content: "\f53d"; } +.fa-list-numeric { + --fa: "\f0cb"; } -.fa-vector-square::before { - content: "\f5cb"; } +.fa-person-dress-burst { + --fa: "\e544"; } -.fa-bread-slice::before { - content: "\f7ec"; } +.fa-money-check-dollar { + --fa: "\f53d"; } -.fa-language::before { - content: "\f1ab"; } +.fa-money-check-alt { + --fa: "\f53d"; } -.fa-face-kiss-wink-heart::before { - content: "\f598"; } +.fa-vector-square { + --fa: "\f5cb"; } -.fa-kiss-wink-heart::before { - content: "\f598"; } +.fa-bread-slice { + --fa: "\f7ec"; } -.fa-filter::before { - content: "\f0b0"; } +.fa-language { + --fa: "\f1ab"; } -.fa-question::before { - content: "\3f"; } +.fa-face-kiss-wink-heart { + --fa: "\f598"; } -.fa-file-signature::before { - content: "\f573"; } +.fa-kiss-wink-heart { + --fa: "\f598"; } -.fa-up-down-left-right::before { - content: "\f0b2"; } +.fa-filter { + --fa: "\f0b0"; } -.fa-arrows-alt::before { - content: "\f0b2"; } +.fa-question { + --fa: "\3f"; } -.fa-house-chimney-user::before { - content: "\e065"; } +.fa-file-signature { + --fa: "\f573"; } -.fa-hand-holding-heart::before { - content: "\f4be"; } +.fa-up-down-left-right { + --fa: "\f0b2"; } -.fa-puzzle-piece::before { - content: "\f12e"; } +.fa-arrows-alt { + --fa: "\f0b2"; } -.fa-money-check::before { - content: "\f53c"; } +.fa-house-chimney-user { + --fa: "\e065"; } -.fa-star-half-stroke::before { - content: "\f5c0"; } +.fa-hand-holding-heart { + --fa: "\f4be"; } -.fa-star-half-alt::before { - content: "\f5c0"; } +.fa-puzzle-piece { + --fa: "\f12e"; } -.fa-code::before { - content: "\f121"; } +.fa-money-check { + --fa: "\f53c"; } -.fa-whiskey-glass::before { - content: "\f7a0"; } +.fa-star-half-stroke { + --fa: "\f5c0"; } -.fa-glass-whiskey::before { - content: "\f7a0"; } +.fa-star-half-alt { + --fa: "\f5c0"; } -.fa-building-circle-exclamation::before { - content: "\e4d3"; } +.fa-code { + --fa: "\f121"; } -.fa-magnifying-glass-chart::before { - content: "\e522"; } +.fa-whiskey-glass { + --fa: "\f7a0"; } -.fa-arrow-up-right-from-square::before { - content: "\f08e"; } +.fa-glass-whiskey { + --fa: "\f7a0"; } -.fa-external-link::before { - content: "\f08e"; } +.fa-building-circle-exclamation { + --fa: "\e4d3"; } -.fa-cubes-stacked::before { - content: "\e4e6"; } +.fa-magnifying-glass-chart { + --fa: "\e522"; } -.fa-won-sign::before { - content: "\f159"; } +.fa-arrow-up-right-from-square { + --fa: "\f08e"; } -.fa-krw::before { - content: "\f159"; } +.fa-external-link { + --fa: "\f08e"; } -.fa-won::before { - content: "\f159"; } +.fa-cubes-stacked { + --fa: "\e4e6"; } -.fa-virus-covid::before { - content: "\e4a8"; } +.fa-won-sign { + --fa: "\f159"; } -.fa-austral-sign::before { - content: "\e0a9"; } +.fa-krw { + --fa: "\f159"; } -.fa-f::before { - content: "\46"; } +.fa-won { + --fa: "\f159"; } -.fa-leaf::before { - content: "\f06c"; } +.fa-virus-covid { + --fa: "\e4a8"; } -.fa-road::before { - content: "\f018"; } +.fa-austral-sign { + --fa: "\e0a9"; } -.fa-taxi::before { - content: "\f1ba"; } +.fa-f { + --fa: "\46"; } -.fa-cab::before { - content: "\f1ba"; } +.fa-leaf { + --fa: "\f06c"; } -.fa-person-circle-plus::before { - content: "\e541"; } +.fa-road { + --fa: "\f018"; } -.fa-chart-pie::before { - content: "\f200"; } +.fa-taxi { + --fa: "\f1ba"; } -.fa-pie-chart::before { - content: "\f200"; } +.fa-cab { + --fa: "\f1ba"; } -.fa-bolt-lightning::before { - content: "\e0b7"; } +.fa-person-circle-plus { + --fa: "\e541"; } -.fa-sack-xmark::before { - content: "\e56a"; } +.fa-chart-pie { + --fa: "\f200"; } -.fa-file-excel::before { - content: "\f1c3"; } +.fa-pie-chart { + --fa: "\f200"; } -.fa-file-contract::before { - content: "\f56c"; } +.fa-bolt-lightning { + --fa: "\e0b7"; } -.fa-fish-fins::before { - content: "\e4f2"; } +.fa-sack-xmark { + --fa: "\e56a"; } -.fa-building-flag::before { - content: "\e4d5"; } +.fa-file-excel { + --fa: "\f1c3"; } -.fa-face-grin-beam::before { - content: "\f582"; } +.fa-file-contract { + --fa: "\f56c"; } -.fa-grin-beam::before { - content: "\f582"; } +.fa-fish-fins { + --fa: "\e4f2"; } -.fa-object-ungroup::before { - content: "\f248"; } +.fa-building-flag { + --fa: "\e4d5"; } -.fa-poop::before { - content: "\f619"; } +.fa-face-grin-beam { + --fa: "\f582"; } -.fa-location-pin::before { - content: "\f041"; } +.fa-grin-beam { + --fa: "\f582"; } -.fa-map-marker::before { - content: "\f041"; } +.fa-object-ungroup { + --fa: "\f248"; } -.fa-kaaba::before { - content: "\f66b"; } +.fa-poop { + --fa: "\f619"; } -.fa-toilet-paper::before { - content: "\f71e"; } +.fa-location-pin { + --fa: "\f041"; } -.fa-helmet-safety::before { - content: "\f807"; } +.fa-map-marker { + --fa: "\f041"; } -.fa-hard-hat::before { - content: "\f807"; } +.fa-kaaba { + --fa: "\f66b"; } -.fa-hat-hard::before { - content: "\f807"; } +.fa-toilet-paper { + --fa: "\f71e"; } -.fa-eject::before { - content: "\f052"; } +.fa-helmet-safety { + --fa: "\f807"; } -.fa-circle-right::before { - content: "\f35a"; } +.fa-hard-hat { + --fa: "\f807"; } -.fa-arrow-alt-circle-right::before { - content: "\f35a"; } +.fa-hat-hard { + --fa: "\f807"; } -.fa-plane-circle-check::before { - content: "\e555"; } +.fa-eject { + --fa: "\f052"; } -.fa-face-rolling-eyes::before { - content: "\f5a5"; } +.fa-circle-right { + --fa: "\f35a"; } -.fa-meh-rolling-eyes::before { - content: "\f5a5"; } +.fa-arrow-alt-circle-right { + --fa: "\f35a"; } -.fa-object-group::before { - content: "\f247"; } +.fa-plane-circle-check { + --fa: "\e555"; } -.fa-chart-line::before { - content: "\f201"; } +.fa-face-rolling-eyes { + --fa: "\f5a5"; } -.fa-line-chart::before { - content: "\f201"; } +.fa-meh-rolling-eyes { + --fa: "\f5a5"; } -.fa-mask-ventilator::before { - content: "\e524"; } +.fa-object-group { + --fa: "\f247"; } -.fa-arrow-right::before { - content: "\f061"; } +.fa-chart-line { + --fa: "\f201"; } -.fa-signs-post::before { - content: "\f277"; } +.fa-line-chart { + --fa: "\f201"; } -.fa-map-signs::before { - content: "\f277"; } +.fa-mask-ventilator { + --fa: "\e524"; } -.fa-cash-register::before { - content: "\f788"; } +.fa-arrow-right { + --fa: "\f061"; } -.fa-person-circle-question::before { - content: "\e542"; } +.fa-signs-post { + --fa: "\f277"; } -.fa-h::before { - content: "\48"; } +.fa-map-signs { + --fa: "\f277"; } -.fa-tarp::before { - content: "\e57b"; } +.fa-cash-register { + --fa: "\f788"; } -.fa-screwdriver-wrench::before { - content: "\f7d9"; } +.fa-person-circle-question { + --fa: "\e542"; } -.fa-tools::before { - content: "\f7d9"; } +.fa-h { + --fa: "\48"; } -.fa-arrows-to-eye::before { - content: "\e4bf"; } +.fa-tarp { + --fa: "\e57b"; } -.fa-plug-circle-bolt::before { - content: "\e55b"; } +.fa-screwdriver-wrench { + --fa: "\f7d9"; } -.fa-heart::before { - content: "\f004"; } +.fa-tools { + --fa: "\f7d9"; } -.fa-mars-and-venus::before { - content: "\f224"; } +.fa-arrows-to-eye { + --fa: "\e4bf"; } -.fa-house-user::before { - content: "\e1b0"; } +.fa-plug-circle-bolt { + --fa: "\e55b"; } -.fa-home-user::before { - content: "\e1b0"; } +.fa-heart { + --fa: "\f004"; } -.fa-dumpster-fire::before { - content: "\f794"; } +.fa-mars-and-venus { + --fa: "\f224"; } -.fa-house-crack::before { - content: "\e3b1"; } +.fa-house-user { + --fa: "\e1b0"; } -.fa-martini-glass-citrus::before { - content: "\f561"; } +.fa-home-user { + --fa: "\e1b0"; } -.fa-cocktail::before { - content: "\f561"; } +.fa-dumpster-fire { + --fa: "\f794"; } -.fa-face-surprise::before { - content: "\f5c2"; } +.fa-house-crack { + --fa: "\e3b1"; } -.fa-surprise::before { - content: "\f5c2"; } +.fa-martini-glass-citrus { + --fa: "\f561"; } -.fa-bottle-water::before { - content: "\e4c5"; } +.fa-cocktail { + --fa: "\f561"; } -.fa-circle-pause::before { - content: "\f28b"; } +.fa-face-surprise { + --fa: "\f5c2"; } -.fa-pause-circle::before { - content: "\f28b"; } +.fa-surprise { + --fa: "\f5c2"; } -.fa-toilet-paper-slash::before { - content: "\e072"; } +.fa-bottle-water { + --fa: "\e4c5"; } -.fa-apple-whole::before { - content: "\f5d1"; } +.fa-circle-pause { + --fa: "\f28b"; } -.fa-apple-alt::before { - content: "\f5d1"; } +.fa-pause-circle { + --fa: "\f28b"; } -.fa-kitchen-set::before { - content: "\e51a"; } +.fa-toilet-paper-slash { + --fa: "\e072"; } -.fa-r::before { - content: "\52"; } +.fa-apple-whole { + --fa: "\f5d1"; } -.fa-temperature-quarter::before { - content: "\f2ca"; } +.fa-apple-alt { + --fa: "\f5d1"; } -.fa-temperature-1::before { - content: "\f2ca"; } +.fa-kitchen-set { + --fa: "\e51a"; } -.fa-thermometer-1::before { - content: "\f2ca"; } +.fa-r { + --fa: "\52"; } -.fa-thermometer-quarter::before { - content: "\f2ca"; } +.fa-temperature-quarter { + --fa: "\f2ca"; } -.fa-cube::before { - content: "\f1b2"; } +.fa-temperature-1 { + --fa: "\f2ca"; } -.fa-bitcoin-sign::before { - content: "\e0b4"; } +.fa-thermometer-1 { + --fa: "\f2ca"; } -.fa-shield-dog::before { - content: "\e573"; } +.fa-thermometer-quarter { + --fa: "\f2ca"; } -.fa-solar-panel::before { - content: "\f5ba"; } +.fa-cube { + --fa: "\f1b2"; } -.fa-lock-open::before { - content: "\f3c1"; } +.fa-bitcoin-sign { + --fa: "\e0b4"; } -.fa-elevator::before { - content: "\e16d"; } +.fa-shield-dog { + --fa: "\e573"; } -.fa-money-bill-transfer::before { - content: "\e528"; } +.fa-solar-panel { + --fa: "\f5ba"; } -.fa-money-bill-trend-up::before { - content: "\e529"; } +.fa-lock-open { + --fa: "\f3c1"; } -.fa-house-flood-water-circle-arrow-right::before { - content: "\e50f"; } +.fa-elevator { + --fa: "\e16d"; } -.fa-square-poll-horizontal::before { - content: "\f682"; } +.fa-money-bill-transfer { + --fa: "\e528"; } -.fa-poll-h::before { - content: "\f682"; } +.fa-money-bill-trend-up { + --fa: "\e529"; } -.fa-circle::before { - content: "\f111"; } +.fa-house-flood-water-circle-arrow-right { + --fa: "\e50f"; } -.fa-backward-fast::before { - content: "\f049"; } +.fa-square-poll-horizontal { + --fa: "\f682"; } -.fa-fast-backward::before { - content: "\f049"; } +.fa-poll-h { + --fa: "\f682"; } -.fa-recycle::before { - content: "\f1b8"; } +.fa-circle { + --fa: "\f111"; } -.fa-user-astronaut::before { - content: "\f4fb"; } +.fa-backward-fast { + --fa: "\f049"; } -.fa-plane-slash::before { - content: "\e069"; } +.fa-fast-backward { + --fa: "\f049"; } -.fa-trademark::before { - content: "\f25c"; } +.fa-recycle { + --fa: "\f1b8"; } -.fa-basketball::before { - content: "\f434"; } +.fa-user-astronaut { + --fa: "\f4fb"; } -.fa-basketball-ball::before { - content: "\f434"; } +.fa-plane-slash { + --fa: "\e069"; } -.fa-satellite-dish::before { - content: "\f7c0"; } +.fa-trademark { + --fa: "\f25c"; } -.fa-circle-up::before { - content: "\f35b"; } +.fa-basketball { + --fa: "\f434"; } -.fa-arrow-alt-circle-up::before { - content: "\f35b"; } +.fa-basketball-ball { + --fa: "\f434"; } -.fa-mobile-screen-button::before { - content: "\f3cd"; } +.fa-satellite-dish { + --fa: "\f7c0"; } -.fa-mobile-alt::before { - content: "\f3cd"; } +.fa-circle-up { + --fa: "\f35b"; } -.fa-volume-high::before { - content: "\f028"; } +.fa-arrow-alt-circle-up { + --fa: "\f35b"; } -.fa-volume-up::before { - content: "\f028"; } +.fa-mobile-screen-button { + --fa: "\f3cd"; } -.fa-users-rays::before { - content: "\e593"; } +.fa-mobile-alt { + --fa: "\f3cd"; } -.fa-wallet::before { - content: "\f555"; } +.fa-volume-high { + --fa: "\f028"; } -.fa-clipboard-check::before { - content: "\f46c"; } +.fa-volume-up { + --fa: "\f028"; } -.fa-file-audio::before { - content: "\f1c7"; } +.fa-users-rays { + --fa: "\e593"; } -.fa-burger::before { - content: "\f805"; } +.fa-wallet { + --fa: "\f555"; } -.fa-hamburger::before { - content: "\f805"; } +.fa-clipboard-check { + --fa: "\f46c"; } -.fa-wrench::before { - content: "\f0ad"; } +.fa-file-audio { + --fa: "\f1c7"; } -.fa-bugs::before { - content: "\e4d0"; } +.fa-burger { + --fa: "\f805"; } -.fa-rupee-sign::before { - content: "\f156"; } +.fa-hamburger { + --fa: "\f805"; } -.fa-rupee::before { - content: "\f156"; } +.fa-wrench { + --fa: "\f0ad"; } -.fa-file-image::before { - content: "\f1c5"; } +.fa-bugs { + --fa: "\e4d0"; } -.fa-circle-question::before { - content: "\f059"; } +.fa-rupee-sign { + --fa: "\f156"; } -.fa-question-circle::before { - content: "\f059"; } +.fa-rupee { + --fa: "\f156"; } -.fa-plane-departure::before { - content: "\f5b0"; } +.fa-file-image { + --fa: "\f1c5"; } -.fa-handshake-slash::before { - content: "\e060"; } +.fa-circle-question { + --fa: "\f059"; } -.fa-book-bookmark::before { - content: "\e0bb"; } +.fa-question-circle { + --fa: "\f059"; } -.fa-code-branch::before { - content: "\f126"; } +.fa-plane-departure { + --fa: "\f5b0"; } -.fa-hat-cowboy::before { - content: "\f8c0"; } +.fa-handshake-slash { + --fa: "\e060"; } -.fa-bridge::before { - content: "\e4c8"; } +.fa-book-bookmark { + --fa: "\e0bb"; } -.fa-phone-flip::before { - content: "\f879"; } +.fa-code-branch { + --fa: "\f126"; } -.fa-phone-alt::before { - content: "\f879"; } +.fa-hat-cowboy { + --fa: "\f8c0"; } -.fa-truck-front::before { - content: "\e2b7"; } +.fa-bridge { + --fa: "\e4c8"; } -.fa-cat::before { - content: "\f6be"; } +.fa-phone-flip { + --fa: "\f879"; } -.fa-anchor-circle-exclamation::before { - content: "\e4ab"; } +.fa-phone-alt { + --fa: "\f879"; } -.fa-truck-field::before { - content: "\e58d"; } +.fa-truck-front { + --fa: "\e2b7"; } -.fa-route::before { - content: "\f4d7"; } +.fa-cat { + --fa: "\f6be"; } -.fa-clipboard-question::before { - content: "\e4e3"; } +.fa-anchor-circle-exclamation { + --fa: "\e4ab"; } -.fa-panorama::before { - content: "\e209"; } +.fa-truck-field { + --fa: "\e58d"; } -.fa-comment-medical::before { - content: "\f7f5"; } +.fa-route { + --fa: "\f4d7"; } -.fa-teeth-open::before { - content: "\f62f"; } +.fa-clipboard-question { + --fa: "\e4e3"; } -.fa-file-circle-minus::before { - content: "\e4ed"; } +.fa-panorama { + --fa: "\e209"; } -.fa-tags::before { - content: "\f02c"; } +.fa-comment-medical { + --fa: "\f7f5"; } -.fa-wine-glass::before { - content: "\f4e3"; } +.fa-teeth-open { + --fa: "\f62f"; } -.fa-forward-fast::before { - content: "\f050"; } +.fa-file-circle-minus { + --fa: "\e4ed"; } -.fa-fast-forward::before { - content: "\f050"; } +.fa-tags { + --fa: "\f02c"; } -.fa-face-meh-blank::before { - content: "\f5a4"; } +.fa-wine-glass { + --fa: "\f4e3"; } -.fa-meh-blank::before { - content: "\f5a4"; } +.fa-forward-fast { + --fa: "\f050"; } -.fa-square-parking::before { - content: "\f540"; } +.fa-fast-forward { + --fa: "\f050"; } -.fa-parking::before { - content: "\f540"; } +.fa-face-meh-blank { + --fa: "\f5a4"; } -.fa-house-signal::before { - content: "\e012"; } +.fa-meh-blank { + --fa: "\f5a4"; } -.fa-bars-progress::before { - content: "\f828"; } +.fa-square-parking { + --fa: "\f540"; } -.fa-tasks-alt::before { - content: "\f828"; } +.fa-parking { + --fa: "\f540"; } -.fa-faucet-drip::before { - content: "\e006"; } +.fa-house-signal { + --fa: "\e012"; } -.fa-cart-flatbed::before { - content: "\f474"; } +.fa-bars-progress { + --fa: "\f828"; } -.fa-dolly-flatbed::before { - content: "\f474"; } +.fa-tasks-alt { + --fa: "\f828"; } -.fa-ban-smoking::before { - content: "\f54d"; } +.fa-faucet-drip { + --fa: "\e006"; } -.fa-smoking-ban::before { - content: "\f54d"; } +.fa-cart-flatbed { + --fa: "\f474"; } -.fa-terminal::before { - content: "\f120"; } +.fa-dolly-flatbed { + --fa: "\f474"; } -.fa-mobile-button::before { - content: "\f10b"; } +.fa-ban-smoking { + --fa: "\f54d"; } -.fa-house-medical-flag::before { - content: "\e514"; } +.fa-smoking-ban { + --fa: "\f54d"; } -.fa-basket-shopping::before { - content: "\f291"; } +.fa-terminal { + --fa: "\f120"; } -.fa-shopping-basket::before { - content: "\f291"; } +.fa-mobile-button { + --fa: "\f10b"; } -.fa-tape::before { - content: "\f4db"; } +.fa-house-medical-flag { + --fa: "\e514"; } -.fa-bus-simple::before { - content: "\f55e"; } +.fa-basket-shopping { + --fa: "\f291"; } -.fa-bus-alt::before { - content: "\f55e"; } +.fa-shopping-basket { + --fa: "\f291"; } -.fa-eye::before { - content: "\f06e"; } +.fa-tape { + --fa: "\f4db"; } -.fa-face-sad-cry::before { - content: "\f5b3"; } +.fa-bus-simple { + --fa: "\f55e"; } -.fa-sad-cry::before { - content: "\f5b3"; } +.fa-bus-alt { + --fa: "\f55e"; } -.fa-audio-description::before { - content: "\f29e"; } +.fa-eye { + --fa: "\f06e"; } -.fa-person-military-to-person::before { - content: "\e54c"; } +.fa-face-sad-cry { + --fa: "\f5b3"; } -.fa-file-shield::before { - content: "\e4f0"; } +.fa-sad-cry { + --fa: "\f5b3"; } -.fa-user-slash::before { - content: "\f506"; } +.fa-audio-description { + --fa: "\f29e"; } -.fa-pen::before { - content: "\f304"; } +.fa-person-military-to-person { + --fa: "\e54c"; } -.fa-tower-observation::before { - content: "\e586"; } +.fa-file-shield { + --fa: "\e4f0"; } -.fa-file-code::before { - content: "\f1c9"; } +.fa-user-slash { + --fa: "\f506"; } -.fa-signal::before { - content: "\f012"; } +.fa-pen { + --fa: "\f304"; } -.fa-signal-5::before { - content: "\f012"; } +.fa-tower-observation { + --fa: "\e586"; } -.fa-signal-perfect::before { - content: "\f012"; } +.fa-file-code { + --fa: "\f1c9"; } -.fa-bus::before { - content: "\f207"; } +.fa-signal { + --fa: "\f012"; } -.fa-heart-circle-xmark::before { - content: "\e501"; } +.fa-signal-5 { + --fa: "\f012"; } -.fa-house-chimney::before { - content: "\e3af"; } +.fa-signal-perfect { + --fa: "\f012"; } -.fa-home-lg::before { - content: "\e3af"; } +.fa-bus { + --fa: "\f207"; } -.fa-window-maximize::before { - content: "\f2d0"; } +.fa-heart-circle-xmark { + --fa: "\e501"; } -.fa-face-frown::before { - content: "\f119"; } +.fa-house-chimney { + --fa: "\e3af"; } -.fa-frown::before { - content: "\f119"; } +.fa-home-lg { + --fa: "\e3af"; } -.fa-prescription::before { - content: "\f5b1"; } +.fa-window-maximize { + --fa: "\f2d0"; } -.fa-shop::before { - content: "\f54f"; } +.fa-face-frown { + --fa: "\f119"; } -.fa-store-alt::before { - content: "\f54f"; } +.fa-frown { + --fa: "\f119"; } -.fa-floppy-disk::before { - content: "\f0c7"; } +.fa-prescription { + --fa: "\f5b1"; } -.fa-save::before { - content: "\f0c7"; } +.fa-shop { + --fa: "\f54f"; } -.fa-vihara::before { - content: "\f6a7"; } +.fa-store-alt { + --fa: "\f54f"; } -.fa-scale-unbalanced::before { - content: "\f515"; } +.fa-floppy-disk { + --fa: "\f0c7"; } -.fa-balance-scale-left::before { - content: "\f515"; } +.fa-save { + --fa: "\f0c7"; } -.fa-sort-up::before { - content: "\f0de"; } +.fa-vihara { + --fa: "\f6a7"; } -.fa-sort-asc::before { - content: "\f0de"; } +.fa-scale-unbalanced { + --fa: "\f515"; } -.fa-comment-dots::before { - content: "\f4ad"; } +.fa-balance-scale-left { + --fa: "\f515"; } -.fa-commenting::before { - content: "\f4ad"; } +.fa-sort-up { + --fa: "\f0de"; } -.fa-plant-wilt::before { - content: "\e5aa"; } +.fa-sort-asc { + --fa: "\f0de"; } -.fa-diamond::before { - content: "\f219"; } +.fa-comment-dots { + --fa: "\f4ad"; } -.fa-face-grin-squint::before { - content: "\f585"; } +.fa-commenting { + --fa: "\f4ad"; } -.fa-grin-squint::before { - content: "\f585"; } +.fa-plant-wilt { + --fa: "\e5aa"; } -.fa-hand-holding-dollar::before { - content: "\f4c0"; } +.fa-diamond { + --fa: "\f219"; } -.fa-hand-holding-usd::before { - content: "\f4c0"; } +.fa-face-grin-squint { + --fa: "\f585"; } -.fa-bacterium::before { - content: "\e05a"; } +.fa-grin-squint { + --fa: "\f585"; } -.fa-hand-pointer::before { - content: "\f25a"; } +.fa-hand-holding-dollar { + --fa: "\f4c0"; } -.fa-drum-steelpan::before { - content: "\f56a"; } +.fa-hand-holding-usd { + --fa: "\f4c0"; } -.fa-hand-scissors::before { - content: "\f257"; } +.fa-chart-diagram { + --fa: "\e695"; } -.fa-hands-praying::before { - content: "\f684"; } +.fa-bacterium { + --fa: "\e05a"; } -.fa-praying-hands::before { - content: "\f684"; } +.fa-hand-pointer { + --fa: "\f25a"; } -.fa-arrow-rotate-right::before { - content: "\f01e"; } +.fa-drum-steelpan { + --fa: "\f56a"; } -.fa-arrow-right-rotate::before { - content: "\f01e"; } +.fa-hand-scissors { + --fa: "\f257"; } -.fa-arrow-rotate-forward::before { - content: "\f01e"; } +.fa-hands-praying { + --fa: "\f684"; } -.fa-redo::before { - content: "\f01e"; } +.fa-praying-hands { + --fa: "\f684"; } -.fa-biohazard::before { - content: "\f780"; } +.fa-arrow-rotate-right { + --fa: "\f01e"; } -.fa-location-crosshairs::before { - content: "\f601"; } +.fa-arrow-right-rotate { + --fa: "\f01e"; } -.fa-location::before { - content: "\f601"; } +.fa-arrow-rotate-forward { + --fa: "\f01e"; } -.fa-mars-double::before { - content: "\f227"; } +.fa-redo { + --fa: "\f01e"; } -.fa-child-dress::before { - content: "\e59c"; } +.fa-biohazard { + --fa: "\f780"; } -.fa-users-between-lines::before { - content: "\e591"; } +.fa-location-crosshairs { + --fa: "\f601"; } -.fa-lungs-virus::before { - content: "\e067"; } +.fa-location { + --fa: "\f601"; } -.fa-face-grin-tears::before { - content: "\f588"; } +.fa-mars-double { + --fa: "\f227"; } -.fa-grin-tears::before { - content: "\f588"; } +.fa-child-dress { + --fa: "\e59c"; } -.fa-phone::before { - content: "\f095"; } +.fa-users-between-lines { + --fa: "\e591"; } -.fa-calendar-xmark::before { - content: "\f273"; } +.fa-lungs-virus { + --fa: "\e067"; } -.fa-calendar-times::before { - content: "\f273"; } +.fa-face-grin-tears { + --fa: "\f588"; } -.fa-child-reaching::before { - content: "\e59d"; } +.fa-grin-tears { + --fa: "\f588"; } -.fa-head-side-virus::before { - content: "\e064"; } +.fa-phone { + --fa: "\f095"; } -.fa-user-gear::before { - content: "\f4fe"; } +.fa-calendar-xmark { + --fa: "\f273"; } -.fa-user-cog::before { - content: "\f4fe"; } +.fa-calendar-times { + --fa: "\f273"; } -.fa-arrow-up-1-9::before { - content: "\f163"; } +.fa-child-reaching { + --fa: "\e59d"; } -.fa-sort-numeric-up::before { - content: "\f163"; } +.fa-head-side-virus { + --fa: "\e064"; } -.fa-door-closed::before { - content: "\f52a"; } +.fa-user-gear { + --fa: "\f4fe"; } -.fa-shield-virus::before { - content: "\e06c"; } +.fa-user-cog { + --fa: "\f4fe"; } -.fa-dice-six::before { - content: "\f526"; } +.fa-arrow-up-1-9 { + --fa: "\f163"; } -.fa-mosquito-net::before { - content: "\e52c"; } +.fa-sort-numeric-up { + --fa: "\f163"; } -.fa-bridge-water::before { - content: "\e4ce"; } +.fa-door-closed { + --fa: "\f52a"; } -.fa-person-booth::before { - content: "\f756"; } +.fa-shield-virus { + --fa: "\e06c"; } -.fa-text-width::before { - content: "\f035"; } +.fa-dice-six { + --fa: "\f526"; } -.fa-hat-wizard::before { - content: "\f6e8"; } +.fa-mosquito-net { + --fa: "\e52c"; } -.fa-pen-fancy::before { - content: "\f5ac"; } +.fa-file-fragment { + --fa: "\e697"; } -.fa-person-digging::before { - content: "\f85e"; } +.fa-bridge-water { + --fa: "\e4ce"; } -.fa-digging::before { - content: "\f85e"; } +.fa-person-booth { + --fa: "\f756"; } -.fa-trash::before { - content: "\f1f8"; } +.fa-text-width { + --fa: "\f035"; } -.fa-gauge-simple::before { - content: "\f629"; } +.fa-hat-wizard { + --fa: "\f6e8"; } -.fa-gauge-simple-med::before { - content: "\f629"; } +.fa-pen-fancy { + --fa: "\f5ac"; } -.fa-tachometer-average::before { - content: "\f629"; } +.fa-person-digging { + --fa: "\f85e"; } -.fa-book-medical::before { - content: "\f7e6"; } +.fa-digging { + --fa: "\f85e"; } -.fa-poo::before { - content: "\f2fe"; } +.fa-trash { + --fa: "\f1f8"; } -.fa-quote-right::before { - content: "\f10e"; } +.fa-gauge-simple { + --fa: "\f629"; } -.fa-quote-right-alt::before { - content: "\f10e"; } +.fa-gauge-simple-med { + --fa: "\f629"; } -.fa-shirt::before { - content: "\f553"; } +.fa-tachometer-average { + --fa: "\f629"; } -.fa-t-shirt::before { - content: "\f553"; } +.fa-book-medical { + --fa: "\f7e6"; } -.fa-tshirt::before { - content: "\f553"; } +.fa-poo { + --fa: "\f2fe"; } -.fa-cubes::before { - content: "\f1b3"; } +.fa-quote-right { + --fa: "\f10e"; } -.fa-divide::before { - content: "\f529"; } +.fa-quote-right-alt { + --fa: "\f10e"; } -.fa-tenge-sign::before { - content: "\f7d7"; } +.fa-shirt { + --fa: "\f553"; } -.fa-tenge::before { - content: "\f7d7"; } +.fa-t-shirt { + --fa: "\f553"; } -.fa-headphones::before { - content: "\f025"; } +.fa-tshirt { + --fa: "\f553"; } -.fa-hands-holding::before { - content: "\f4c2"; } +.fa-cubes { + --fa: "\f1b3"; } -.fa-hands-clapping::before { - content: "\e1a8"; } +.fa-divide { + --fa: "\f529"; } -.fa-republican::before { - content: "\f75e"; } +.fa-tenge-sign { + --fa: "\f7d7"; } -.fa-arrow-left::before { - content: "\f060"; } +.fa-tenge { + --fa: "\f7d7"; } -.fa-person-circle-xmark::before { - content: "\e543"; } +.fa-headphones { + --fa: "\f025"; } -.fa-ruler::before { - content: "\f545"; } +.fa-hands-holding { + --fa: "\f4c2"; } -.fa-align-left::before { - content: "\f036"; } +.fa-hands-clapping { + --fa: "\e1a8"; } -.fa-dice-d6::before { - content: "\f6d1"; } +.fa-republican { + --fa: "\f75e"; } -.fa-restroom::before { - content: "\f7bd"; } +.fa-arrow-left { + --fa: "\f060"; } -.fa-j::before { - content: "\4a"; } +.fa-person-circle-xmark { + --fa: "\e543"; } -.fa-users-viewfinder::before { - content: "\e595"; } +.fa-ruler { + --fa: "\f545"; } -.fa-file-video::before { - content: "\f1c8"; } +.fa-align-left { + --fa: "\f036"; } -.fa-up-right-from-square::before { - content: "\f35d"; } +.fa-dice-d6 { + --fa: "\f6d1"; } -.fa-external-link-alt::before { - content: "\f35d"; } +.fa-restroom { + --fa: "\f7bd"; } -.fa-table-cells::before { - content: "\f00a"; } +.fa-j { + --fa: "\4a"; } -.fa-th::before { - content: "\f00a"; } +.fa-users-viewfinder { + --fa: "\e595"; } -.fa-file-pdf::before { - content: "\f1c1"; } +.fa-file-video { + --fa: "\f1c8"; } -.fa-book-bible::before { - content: "\f647"; } +.fa-up-right-from-square { + --fa: "\f35d"; } -.fa-bible::before { - content: "\f647"; } +.fa-external-link-alt { + --fa: "\f35d"; } -.fa-o::before { - content: "\4f"; } +.fa-table-cells { + --fa: "\f00a"; } -.fa-suitcase-medical::before { - content: "\f0fa"; } +.fa-th { + --fa: "\f00a"; } -.fa-medkit::before { - content: "\f0fa"; } +.fa-file-pdf { + --fa: "\f1c1"; } -.fa-user-secret::before { - content: "\f21b"; } +.fa-book-bible { + --fa: "\f647"; } -.fa-otter::before { - content: "\f700"; } +.fa-bible { + --fa: "\f647"; } -.fa-person-dress::before { - content: "\f182"; } +.fa-o { + --fa: "\4f"; } -.fa-female::before { - content: "\f182"; } +.fa-suitcase-medical { + --fa: "\f0fa"; } -.fa-comment-dollar::before { - content: "\f651"; } +.fa-medkit { + --fa: "\f0fa"; } -.fa-business-time::before { - content: "\f64a"; } +.fa-user-secret { + --fa: "\f21b"; } -.fa-briefcase-clock::before { - content: "\f64a"; } +.fa-otter { + --fa: "\f700"; } -.fa-table-cells-large::before { - content: "\f009"; } +.fa-person-dress { + --fa: "\f182"; } -.fa-th-large::before { - content: "\f009"; } +.fa-female { + --fa: "\f182"; } -.fa-book-tanakh::before { - content: "\f827"; } +.fa-comment-dollar { + --fa: "\f651"; } -.fa-tanakh::before { - content: "\f827"; } +.fa-business-time { + --fa: "\f64a"; } -.fa-phone-volume::before { - content: "\f2a0"; } +.fa-briefcase-clock { + --fa: "\f64a"; } -.fa-volume-control-phone::before { - content: "\f2a0"; } +.fa-table-cells-large { + --fa: "\f009"; } -.fa-hat-cowboy-side::before { - content: "\f8c1"; } +.fa-th-large { + --fa: "\f009"; } -.fa-clipboard-user::before { - content: "\f7f3"; } +.fa-book-tanakh { + --fa: "\f827"; } -.fa-child::before { - content: "\f1ae"; } +.fa-tanakh { + --fa: "\f827"; } -.fa-lira-sign::before { - content: "\f195"; } +.fa-phone-volume { + --fa: "\f2a0"; } -.fa-satellite::before { - content: "\f7bf"; } +.fa-volume-control-phone { + --fa: "\f2a0"; } -.fa-plane-lock::before { - content: "\e558"; } +.fa-hat-cowboy-side { + --fa: "\f8c1"; } -.fa-tag::before { - content: "\f02b"; } +.fa-clipboard-user { + --fa: "\f7f3"; } -.fa-comment::before { - content: "\f075"; } +.fa-child { + --fa: "\f1ae"; } -.fa-cake-candles::before { - content: "\f1fd"; } +.fa-lira-sign { + --fa: "\f195"; } -.fa-birthday-cake::before { - content: "\f1fd"; } +.fa-satellite { + --fa: "\f7bf"; } -.fa-cake::before { - content: "\f1fd"; } +.fa-plane-lock { + --fa: "\e558"; } -.fa-envelope::before { - content: "\f0e0"; } +.fa-tag { + --fa: "\f02b"; } -.fa-angles-up::before { - content: "\f102"; } +.fa-comment { + --fa: "\f075"; } -.fa-angle-double-up::before { - content: "\f102"; } +.fa-cake-candles { + --fa: "\f1fd"; } -.fa-paperclip::before { - content: "\f0c6"; } +.fa-birthday-cake { + --fa: "\f1fd"; } -.fa-arrow-right-to-city::before { - content: "\e4b3"; } +.fa-cake { + --fa: "\f1fd"; } -.fa-ribbon::before { - content: "\f4d6"; } +.fa-envelope { + --fa: "\f0e0"; } -.fa-lungs::before { - content: "\f604"; } +.fa-angles-up { + --fa: "\f102"; } -.fa-arrow-up-9-1::before { - content: "\f887"; } +.fa-angle-double-up { + --fa: "\f102"; } -.fa-sort-numeric-up-alt::before { - content: "\f887"; } +.fa-paperclip { + --fa: "\f0c6"; } -.fa-litecoin-sign::before { - content: "\e1d3"; } +.fa-arrow-right-to-city { + --fa: "\e4b3"; } -.fa-border-none::before { - content: "\f850"; } +.fa-ribbon { + --fa: "\f4d6"; } -.fa-circle-nodes::before { - content: "\e4e2"; } +.fa-lungs { + --fa: "\f604"; } -.fa-parachute-box::before { - content: "\f4cd"; } +.fa-arrow-up-9-1 { + --fa: "\f887"; } -.fa-indent::before { - content: "\f03c"; } +.fa-sort-numeric-up-alt { + --fa: "\f887"; } -.fa-truck-field-un::before { - content: "\e58e"; } +.fa-litecoin-sign { + --fa: "\e1d3"; } -.fa-hourglass::before { - content: "\f254"; } +.fa-border-none { + --fa: "\f850"; } -.fa-hourglass-empty::before { - content: "\f254"; } +.fa-circle-nodes { + --fa: "\e4e2"; } -.fa-mountain::before { - content: "\f6fc"; } +.fa-parachute-box { + --fa: "\f4cd"; } -.fa-user-doctor::before { - content: "\f0f0"; } +.fa-indent { + --fa: "\f03c"; } -.fa-user-md::before { - content: "\f0f0"; } +.fa-truck-field-un { + --fa: "\e58e"; } -.fa-circle-info::before { - content: "\f05a"; } +.fa-hourglass { + --fa: "\f254"; } -.fa-info-circle::before { - content: "\f05a"; } +.fa-hourglass-empty { + --fa: "\f254"; } -.fa-cloud-meatball::before { - content: "\f73b"; } +.fa-mountain { + --fa: "\f6fc"; } -.fa-camera::before { - content: "\f030"; } +.fa-user-doctor { + --fa: "\f0f0"; } -.fa-camera-alt::before { - content: "\f030"; } +.fa-user-md { + --fa: "\f0f0"; } -.fa-square-virus::before { - content: "\e578"; } +.fa-circle-info { + --fa: "\f05a"; } -.fa-meteor::before { - content: "\f753"; } +.fa-info-circle { + --fa: "\f05a"; } -.fa-car-on::before { - content: "\e4dd"; } +.fa-cloud-meatball { + --fa: "\f73b"; } -.fa-sleigh::before { - content: "\f7cc"; } +.fa-camera { + --fa: "\f030"; } -.fa-arrow-down-1-9::before { - content: "\f162"; } +.fa-camera-alt { + --fa: "\f030"; } -.fa-sort-numeric-asc::before { - content: "\f162"; } +.fa-square-virus { + --fa: "\e578"; } -.fa-sort-numeric-down::before { - content: "\f162"; } +.fa-meteor { + --fa: "\f753"; } -.fa-hand-holding-droplet::before { - content: "\f4c1"; } +.fa-car-on { + --fa: "\e4dd"; } -.fa-hand-holding-water::before { - content: "\f4c1"; } +.fa-sleigh { + --fa: "\f7cc"; } -.fa-water::before { - content: "\f773"; } +.fa-arrow-down-1-9 { + --fa: "\f162"; } -.fa-calendar-check::before { - content: "\f274"; } +.fa-sort-numeric-asc { + --fa: "\f162"; } -.fa-braille::before { - content: "\f2a1"; } +.fa-sort-numeric-down { + --fa: "\f162"; } -.fa-prescription-bottle-medical::before { - content: "\f486"; } +.fa-hand-holding-droplet { + --fa: "\f4c1"; } -.fa-prescription-bottle-alt::before { - content: "\f486"; } +.fa-hand-holding-water { + --fa: "\f4c1"; } -.fa-landmark::before { - content: "\f66f"; } +.fa-water { + --fa: "\f773"; } -.fa-truck::before { - content: "\f0d1"; } +.fa-calendar-check { + --fa: "\f274"; } -.fa-crosshairs::before { - content: "\f05b"; } +.fa-braille { + --fa: "\f2a1"; } -.fa-person-cane::before { - content: "\e53c"; } +.fa-prescription-bottle-medical { + --fa: "\f486"; } -.fa-tent::before { - content: "\e57d"; } +.fa-prescription-bottle-alt { + --fa: "\f486"; } -.fa-vest-patches::before { - content: "\e086"; } +.fa-landmark { + --fa: "\f66f"; } -.fa-check-double::before { - content: "\f560"; } +.fa-truck { + --fa: "\f0d1"; } -.fa-arrow-down-a-z::before { - content: "\f15d"; } +.fa-crosshairs { + --fa: "\f05b"; } -.fa-sort-alpha-asc::before { - content: "\f15d"; } +.fa-person-cane { + --fa: "\e53c"; } -.fa-sort-alpha-down::before { - content: "\f15d"; } +.fa-tent { + --fa: "\e57d"; } -.fa-money-bill-wheat::before { - content: "\e52a"; } +.fa-vest-patches { + --fa: "\e086"; } -.fa-cookie::before { - content: "\f563"; } +.fa-check-double { + --fa: "\f560"; } -.fa-arrow-rotate-left::before { - content: "\f0e2"; } +.fa-arrow-down-a-z { + --fa: "\f15d"; } -.fa-arrow-left-rotate::before { - content: "\f0e2"; } +.fa-sort-alpha-asc { + --fa: "\f15d"; } -.fa-arrow-rotate-back::before { - content: "\f0e2"; } +.fa-sort-alpha-down { + --fa: "\f15d"; } -.fa-arrow-rotate-backward::before { - content: "\f0e2"; } +.fa-money-bill-wheat { + --fa: "\e52a"; } -.fa-undo::before { - content: "\f0e2"; } +.fa-cookie { + --fa: "\f563"; } -.fa-hard-drive::before { - content: "\f0a0"; } +.fa-arrow-rotate-left { + --fa: "\f0e2"; } -.fa-hdd::before { - content: "\f0a0"; } +.fa-arrow-left-rotate { + --fa: "\f0e2"; } -.fa-face-grin-squint-tears::before { - content: "\f586"; } +.fa-arrow-rotate-back { + --fa: "\f0e2"; } -.fa-grin-squint-tears::before { - content: "\f586"; } +.fa-arrow-rotate-backward { + --fa: "\f0e2"; } -.fa-dumbbell::before { - content: "\f44b"; } +.fa-undo { + --fa: "\f0e2"; } -.fa-rectangle-list::before { - content: "\f022"; } +.fa-hard-drive { + --fa: "\f0a0"; } -.fa-list-alt::before { - content: "\f022"; } +.fa-hdd { + --fa: "\f0a0"; } -.fa-tarp-droplet::before { - content: "\e57c"; } +.fa-face-grin-squint-tears { + --fa: "\f586"; } -.fa-house-medical-circle-check::before { - content: "\e511"; } +.fa-grin-squint-tears { + --fa: "\f586"; } -.fa-person-skiing-nordic::before { - content: "\f7ca"; } +.fa-dumbbell { + --fa: "\f44b"; } -.fa-skiing-nordic::before { - content: "\f7ca"; } +.fa-rectangle-list { + --fa: "\f022"; } -.fa-calendar-plus::before { - content: "\f271"; } +.fa-list-alt { + --fa: "\f022"; } -.fa-plane-arrival::before { - content: "\f5af"; } +.fa-tarp-droplet { + --fa: "\e57c"; } -.fa-circle-left::before { - content: "\f359"; } +.fa-house-medical-circle-check { + --fa: "\e511"; } -.fa-arrow-alt-circle-left::before { - content: "\f359"; } +.fa-person-skiing-nordic { + --fa: "\f7ca"; } -.fa-train-subway::before { - content: "\f239"; } +.fa-skiing-nordic { + --fa: "\f7ca"; } -.fa-subway::before { - content: "\f239"; } +.fa-calendar-plus { + --fa: "\f271"; } -.fa-chart-gantt::before { - content: "\e0e4"; } +.fa-plane-arrival { + --fa: "\f5af"; } -.fa-indian-rupee-sign::before { - content: "\e1bc"; } +.fa-circle-left { + --fa: "\f359"; } -.fa-indian-rupee::before { - content: "\e1bc"; } +.fa-arrow-alt-circle-left { + --fa: "\f359"; } -.fa-inr::before { - content: "\e1bc"; } +.fa-train-subway { + --fa: "\f239"; } -.fa-crop-simple::before { - content: "\f565"; } +.fa-subway { + --fa: "\f239"; } -.fa-crop-alt::before { - content: "\f565"; } +.fa-chart-gantt { + --fa: "\e0e4"; } -.fa-money-bill-1::before { - content: "\f3d1"; } +.fa-indian-rupee-sign { + --fa: "\e1bc"; } -.fa-money-bill-alt::before { - content: "\f3d1"; } +.fa-indian-rupee { + --fa: "\e1bc"; } -.fa-left-long::before { - content: "\f30a"; } +.fa-inr { + --fa: "\e1bc"; } -.fa-long-arrow-alt-left::before { - content: "\f30a"; } +.fa-crop-simple { + --fa: "\f565"; } -.fa-dna::before { - content: "\f471"; } +.fa-crop-alt { + --fa: "\f565"; } -.fa-virus-slash::before { - content: "\e075"; } +.fa-money-bill-1 { + --fa: "\f3d1"; } -.fa-minus::before { - content: "\f068"; } +.fa-money-bill-alt { + --fa: "\f3d1"; } -.fa-subtract::before { - content: "\f068"; } +.fa-left-long { + --fa: "\f30a"; } -.fa-chess::before { - content: "\f439"; } +.fa-long-arrow-alt-left { + --fa: "\f30a"; } -.fa-arrow-left-long::before { - content: "\f177"; } +.fa-dna { + --fa: "\f471"; } -.fa-long-arrow-left::before { - content: "\f177"; } +.fa-virus-slash { + --fa: "\e075"; } -.fa-plug-circle-check::before { - content: "\e55c"; } +.fa-minus { + --fa: "\f068"; } -.fa-street-view::before { - content: "\f21d"; } +.fa-subtract { + --fa: "\f068"; } -.fa-franc-sign::before { - content: "\e18f"; } +.fa-chess { + --fa: "\f439"; } -.fa-volume-off::before { - content: "\f026"; } +.fa-arrow-left-long { + --fa: "\f177"; } -.fa-hands-asl-interpreting::before { - content: "\f2a3"; } +.fa-long-arrow-left { + --fa: "\f177"; } -.fa-american-sign-language-interpreting::before { - content: "\f2a3"; } +.fa-plug-circle-check { + --fa: "\e55c"; } -.fa-asl-interpreting::before { - content: "\f2a3"; } +.fa-street-view { + --fa: "\f21d"; } -.fa-hands-american-sign-language-interpreting::before { - content: "\f2a3"; } +.fa-franc-sign { + --fa: "\e18f"; } -.fa-gear::before { - content: "\f013"; } +.fa-volume-off { + --fa: "\f026"; } -.fa-cog::before { - content: "\f013"; } +.fa-hands-asl-interpreting { + --fa: "\f2a3"; } -.fa-droplet-slash::before { - content: "\f5c7"; } +.fa-american-sign-language-interpreting { + --fa: "\f2a3"; } -.fa-tint-slash::before { - content: "\f5c7"; } +.fa-asl-interpreting { + --fa: "\f2a3"; } -.fa-mosque::before { - content: "\f678"; } +.fa-hands-american-sign-language-interpreting { + --fa: "\f2a3"; } -.fa-mosquito::before { - content: "\e52b"; } +.fa-gear { + --fa: "\f013"; } -.fa-star-of-david::before { - content: "\f69a"; } +.fa-cog { + --fa: "\f013"; } -.fa-person-military-rifle::before { - content: "\e54b"; } +.fa-droplet-slash { + --fa: "\f5c7"; } -.fa-cart-shopping::before { - content: "\f07a"; } +.fa-tint-slash { + --fa: "\f5c7"; } -.fa-shopping-cart::before { - content: "\f07a"; } +.fa-mosque { + --fa: "\f678"; } -.fa-vials::before { - content: "\f493"; } +.fa-mosquito { + --fa: "\e52b"; } -.fa-plug-circle-plus::before { - content: "\e55f"; } +.fa-star-of-david { + --fa: "\f69a"; } -.fa-place-of-worship::before { - content: "\f67f"; } +.fa-person-military-rifle { + --fa: "\e54b"; } -.fa-grip-vertical::before { - content: "\f58e"; } +.fa-cart-shopping { + --fa: "\f07a"; } -.fa-arrow-turn-up::before { - content: "\f148"; } +.fa-shopping-cart { + --fa: "\f07a"; } -.fa-level-up::before { - content: "\f148"; } +.fa-vials { + --fa: "\f493"; } -.fa-u::before { - content: "\55"; } +.fa-plug-circle-plus { + --fa: "\e55f"; } -.fa-square-root-variable::before { - content: "\f698"; } +.fa-place-of-worship { + --fa: "\f67f"; } -.fa-square-root-alt::before { - content: "\f698"; } +.fa-grip-vertical { + --fa: "\f58e"; } -.fa-clock::before { - content: "\f017"; } +.fa-hexagon-nodes { + --fa: "\e699"; } -.fa-clock-four::before { - content: "\f017"; } +.fa-arrow-turn-up { + --fa: "\f148"; } -.fa-backward-step::before { - content: "\f048"; } +.fa-level-up { + --fa: "\f148"; } -.fa-step-backward::before { - content: "\f048"; } +.fa-u { + --fa: "\55"; } -.fa-pallet::before { - content: "\f482"; } +.fa-square-root-variable { + --fa: "\f698"; } -.fa-faucet::before { - content: "\e005"; } +.fa-square-root-alt { + --fa: "\f698"; } -.fa-baseball-bat-ball::before { - content: "\f432"; } +.fa-clock { + --fa: "\f017"; } -.fa-s::before { - content: "\53"; } +.fa-clock-four { + --fa: "\f017"; } -.fa-timeline::before { - content: "\e29c"; } +.fa-backward-step { + --fa: "\f048"; } -.fa-keyboard::before { - content: "\f11c"; } +.fa-step-backward { + --fa: "\f048"; } -.fa-caret-down::before { - content: "\f0d7"; } +.fa-pallet { + --fa: "\f482"; } -.fa-house-chimney-medical::before { - content: "\f7f2"; } +.fa-faucet { + --fa: "\e005"; } -.fa-clinic-medical::before { - content: "\f7f2"; } +.fa-baseball-bat-ball { + --fa: "\f432"; } -.fa-temperature-three-quarters::before { - content: "\f2c8"; } +.fa-s { + --fa: "\53"; } -.fa-temperature-3::before { - content: "\f2c8"; } +.fa-timeline { + --fa: "\e29c"; } -.fa-thermometer-3::before { - content: "\f2c8"; } +.fa-keyboard { + --fa: "\f11c"; } -.fa-thermometer-three-quarters::before { - content: "\f2c8"; } +.fa-caret-down { + --fa: "\f0d7"; } -.fa-mobile-screen::before { - content: "\f3cf"; } +.fa-house-chimney-medical { + --fa: "\f7f2"; } -.fa-mobile-android-alt::before { - content: "\f3cf"; } +.fa-clinic-medical { + --fa: "\f7f2"; } -.fa-plane-up::before { - content: "\e22d"; } +.fa-temperature-three-quarters { + --fa: "\f2c8"; } -.fa-piggy-bank::before { - content: "\f4d3"; } +.fa-temperature-3 { + --fa: "\f2c8"; } -.fa-battery-half::before { - content: "\f242"; } +.fa-thermometer-3 { + --fa: "\f2c8"; } -.fa-battery-3::before { - content: "\f242"; } +.fa-thermometer-three-quarters { + --fa: "\f2c8"; } -.fa-mountain-city::before { - content: "\e52e"; } +.fa-mobile-screen { + --fa: "\f3cf"; } -.fa-coins::before { - content: "\f51e"; } +.fa-mobile-android-alt { + --fa: "\f3cf"; } -.fa-khanda::before { - content: "\f66d"; } +.fa-plane-up { + --fa: "\e22d"; } -.fa-sliders::before { - content: "\f1de"; } +.fa-piggy-bank { + --fa: "\f4d3"; } -.fa-sliders-h::before { - content: "\f1de"; } +.fa-battery-half { + --fa: "\f242"; } -.fa-folder-tree::before { - content: "\f802"; } +.fa-battery-3 { + --fa: "\f242"; } -.fa-network-wired::before { - content: "\f6ff"; } +.fa-mountain-city { + --fa: "\e52e"; } -.fa-map-pin::before { - content: "\f276"; } +.fa-coins { + --fa: "\f51e"; } -.fa-hamsa::before { - content: "\f665"; } +.fa-khanda { + --fa: "\f66d"; } -.fa-cent-sign::before { - content: "\e3f5"; } +.fa-sliders { + --fa: "\f1de"; } -.fa-flask::before { - content: "\f0c3"; } +.fa-sliders-h { + --fa: "\f1de"; } -.fa-person-pregnant::before { - content: "\e31e"; } +.fa-folder-tree { + --fa: "\f802"; } -.fa-wand-sparkles::before { - content: "\f72b"; } +.fa-network-wired { + --fa: "\f6ff"; } -.fa-ellipsis-vertical::before { - content: "\f142"; } +.fa-map-pin { + --fa: "\f276"; } -.fa-ellipsis-v::before { - content: "\f142"; } +.fa-hamsa { + --fa: "\f665"; } -.fa-ticket::before { - content: "\f145"; } +.fa-cent-sign { + --fa: "\e3f5"; } -.fa-power-off::before { - content: "\f011"; } +.fa-flask { + --fa: "\f0c3"; } -.fa-right-long::before { - content: "\f30b"; } +.fa-person-pregnant { + --fa: "\e31e"; } -.fa-long-arrow-alt-right::before { - content: "\f30b"; } +.fa-wand-sparkles { + --fa: "\f72b"; } -.fa-flag-usa::before { - content: "\f74d"; } +.fa-ellipsis-vertical { + --fa: "\f142"; } -.fa-laptop-file::before { - content: "\e51d"; } +.fa-ellipsis-v { + --fa: "\f142"; } -.fa-tty::before { - content: "\f1e4"; } +.fa-ticket { + --fa: "\f145"; } -.fa-teletype::before { - content: "\f1e4"; } +.fa-power-off { + --fa: "\f011"; } -.fa-diagram-next::before { - content: "\e476"; } +.fa-right-long { + --fa: "\f30b"; } -.fa-person-rifle::before { - content: "\e54e"; } +.fa-long-arrow-alt-right { + --fa: "\f30b"; } -.fa-house-medical-circle-exclamation::before { - content: "\e512"; } +.fa-flag-usa { + --fa: "\f74d"; } -.fa-closed-captioning::before { - content: "\f20a"; } +.fa-laptop-file { + --fa: "\e51d"; } -.fa-person-hiking::before { - content: "\f6ec"; } +.fa-tty { + --fa: "\f1e4"; } -.fa-hiking::before { - content: "\f6ec"; } +.fa-teletype { + --fa: "\f1e4"; } -.fa-venus-double::before { - content: "\f226"; } +.fa-diagram-next { + --fa: "\e476"; } -.fa-images::before { - content: "\f302"; } +.fa-person-rifle { + --fa: "\e54e"; } -.fa-calculator::before { - content: "\f1ec"; } +.fa-house-medical-circle-exclamation { + --fa: "\e512"; } -.fa-people-pulling::before { - content: "\e535"; } +.fa-closed-captioning { + --fa: "\f20a"; } -.fa-n::before { - content: "\4e"; } +.fa-person-hiking { + --fa: "\f6ec"; } -.fa-cable-car::before { - content: "\f7da"; } +.fa-hiking { + --fa: "\f6ec"; } -.fa-tram::before { - content: "\f7da"; } +.fa-venus-double { + --fa: "\f226"; } -.fa-cloud-rain::before { - content: "\f73d"; } +.fa-images { + --fa: "\f302"; } -.fa-building-circle-xmark::before { - content: "\e4d4"; } +.fa-calculator { + --fa: "\f1ec"; } -.fa-ship::before { - content: "\f21a"; } +.fa-people-pulling { + --fa: "\e535"; } -.fa-arrows-down-to-line::before { - content: "\e4b8"; } +.fa-n { + --fa: "\4e"; } -.fa-download::before { - content: "\f019"; } +.fa-cable-car { + --fa: "\f7da"; } -.fa-face-grin::before { - content: "\f580"; } +.fa-tram { + --fa: "\f7da"; } -.fa-grin::before { - content: "\f580"; } +.fa-cloud-rain { + --fa: "\f73d"; } -.fa-delete-left::before { - content: "\f55a"; } +.fa-building-circle-xmark { + --fa: "\e4d4"; } -.fa-backspace::before { - content: "\f55a"; } +.fa-ship { + --fa: "\f21a"; } -.fa-eye-dropper::before { - content: "\f1fb"; } +.fa-arrows-down-to-line { + --fa: "\e4b8"; } -.fa-eye-dropper-empty::before { - content: "\f1fb"; } +.fa-download { + --fa: "\f019"; } -.fa-eyedropper::before { - content: "\f1fb"; } +.fa-face-grin { + --fa: "\f580"; } -.fa-file-circle-check::before { - content: "\e5a0"; } +.fa-grin { + --fa: "\f580"; } -.fa-forward::before { - content: "\f04e"; } +.fa-delete-left { + --fa: "\f55a"; } -.fa-mobile::before { - content: "\f3ce"; } +.fa-backspace { + --fa: "\f55a"; } -.fa-mobile-android::before { - content: "\f3ce"; } +.fa-eye-dropper { + --fa: "\f1fb"; } -.fa-mobile-phone::before { - content: "\f3ce"; } +.fa-eye-dropper-empty { + --fa: "\f1fb"; } -.fa-face-meh::before { - content: "\f11a"; } +.fa-eyedropper { + --fa: "\f1fb"; } -.fa-meh::before { - content: "\f11a"; } +.fa-file-circle-check { + --fa: "\e5a0"; } -.fa-align-center::before { - content: "\f037"; } +.fa-forward { + --fa: "\f04e"; } -.fa-book-skull::before { - content: "\f6b7"; } +.fa-mobile { + --fa: "\f3ce"; } -.fa-book-dead::before { - content: "\f6b7"; } +.fa-mobile-android { + --fa: "\f3ce"; } -.fa-id-card::before { - content: "\f2c2"; } +.fa-mobile-phone { + --fa: "\f3ce"; } -.fa-drivers-license::before { - content: "\f2c2"; } +.fa-face-meh { + --fa: "\f11a"; } -.fa-outdent::before { - content: "\f03b"; } +.fa-meh { + --fa: "\f11a"; } -.fa-dedent::before { - content: "\f03b"; } +.fa-align-center { + --fa: "\f037"; } -.fa-heart-circle-exclamation::before { - content: "\e4fe"; } +.fa-book-skull { + --fa: "\f6b7"; } -.fa-house::before { - content: "\f015"; } +.fa-book-dead { + --fa: "\f6b7"; } -.fa-home::before { - content: "\f015"; } +.fa-id-card { + --fa: "\f2c2"; } -.fa-home-alt::before { - content: "\f015"; } +.fa-drivers-license { + --fa: "\f2c2"; } -.fa-home-lg-alt::before { - content: "\f015"; } +.fa-outdent { + --fa: "\f03b"; } -.fa-calendar-week::before { - content: "\f784"; } +.fa-dedent { + --fa: "\f03b"; } -.fa-laptop-medical::before { - content: "\f812"; } +.fa-heart-circle-exclamation { + --fa: "\e4fe"; } -.fa-b::before { - content: "\42"; } +.fa-house { + --fa: "\f015"; } -.fa-file-medical::before { - content: "\f477"; } +.fa-home { + --fa: "\f015"; } -.fa-dice-one::before { - content: "\f525"; } +.fa-home-alt { + --fa: "\f015"; } -.fa-kiwi-bird::before { - content: "\f535"; } +.fa-home-lg-alt { + --fa: "\f015"; } -.fa-arrow-right-arrow-left::before { - content: "\f0ec"; } +.fa-calendar-week { + --fa: "\f784"; } -.fa-exchange::before { - content: "\f0ec"; } +.fa-laptop-medical { + --fa: "\f812"; } -.fa-rotate-right::before { - content: "\f2f9"; } +.fa-b { + --fa: "\42"; } -.fa-redo-alt::before { - content: "\f2f9"; } +.fa-file-medical { + --fa: "\f477"; } -.fa-rotate-forward::before { - content: "\f2f9"; } +.fa-dice-one { + --fa: "\f525"; } -.fa-utensils::before { - content: "\f2e7"; } +.fa-kiwi-bird { + --fa: "\f535"; } -.fa-cutlery::before { - content: "\f2e7"; } +.fa-arrow-right-arrow-left { + --fa: "\f0ec"; } -.fa-arrow-up-wide-short::before { - content: "\f161"; } +.fa-exchange { + --fa: "\f0ec"; } -.fa-sort-amount-up::before { - content: "\f161"; } +.fa-rotate-right { + --fa: "\f2f9"; } -.fa-mill-sign::before { - content: "\e1ed"; } +.fa-redo-alt { + --fa: "\f2f9"; } -.fa-bowl-rice::before { - content: "\e2eb"; } +.fa-rotate-forward { + --fa: "\f2f9"; } -.fa-skull::before { - content: "\f54c"; } +.fa-utensils { + --fa: "\f2e7"; } -.fa-tower-broadcast::before { - content: "\f519"; } +.fa-cutlery { + --fa: "\f2e7"; } -.fa-broadcast-tower::before { - content: "\f519"; } +.fa-arrow-up-wide-short { + --fa: "\f161"; } -.fa-truck-pickup::before { - content: "\f63c"; } +.fa-sort-amount-up { + --fa: "\f161"; } -.fa-up-long::before { - content: "\f30c"; } +.fa-mill-sign { + --fa: "\e1ed"; } -.fa-long-arrow-alt-up::before { - content: "\f30c"; } +.fa-bowl-rice { + --fa: "\e2eb"; } -.fa-stop::before { - content: "\f04d"; } +.fa-skull { + --fa: "\f54c"; } -.fa-code-merge::before { - content: "\f387"; } +.fa-tower-broadcast { + --fa: "\f519"; } -.fa-upload::before { - content: "\f093"; } +.fa-broadcast-tower { + --fa: "\f519"; } -.fa-hurricane::before { - content: "\f751"; } +.fa-truck-pickup { + --fa: "\f63c"; } -.fa-mound::before { - content: "\e52d"; } +.fa-up-long { + --fa: "\f30c"; } -.fa-toilet-portable::before { - content: "\e583"; } +.fa-long-arrow-alt-up { + --fa: "\f30c"; } -.fa-compact-disc::before { - content: "\f51f"; } +.fa-stop { + --fa: "\f04d"; } -.fa-file-arrow-down::before { - content: "\f56d"; } +.fa-code-merge { + --fa: "\f387"; } -.fa-file-download::before { - content: "\f56d"; } +.fa-upload { + --fa: "\f093"; } -.fa-caravan::before { - content: "\f8ff"; } +.fa-hurricane { + --fa: "\f751"; } -.fa-shield-cat::before { - content: "\e572"; } +.fa-mound { + --fa: "\e52d"; } -.fa-bolt::before { - content: "\f0e7"; } +.fa-toilet-portable { + --fa: "\e583"; } -.fa-zap::before { - content: "\f0e7"; } +.fa-compact-disc { + --fa: "\f51f"; } -.fa-glass-water::before { - content: "\e4f4"; } +.fa-file-arrow-down { + --fa: "\f56d"; } -.fa-oil-well::before { - content: "\e532"; } +.fa-file-download { + --fa: "\f56d"; } -.fa-vault::before { - content: "\e2c5"; } +.fa-caravan { + --fa: "\f8ff"; } -.fa-mars::before { - content: "\f222"; } +.fa-shield-cat { + --fa: "\e572"; } -.fa-toilet::before { - content: "\f7d8"; } +.fa-bolt { + --fa: "\f0e7"; } -.fa-plane-circle-xmark::before { - content: "\e557"; } +.fa-zap { + --fa: "\f0e7"; } -.fa-yen-sign::before { - content: "\f157"; } +.fa-glass-water { + --fa: "\e4f4"; } -.fa-cny::before { - content: "\f157"; } +.fa-oil-well { + --fa: "\e532"; } -.fa-jpy::before { - content: "\f157"; } +.fa-vault { + --fa: "\e2c5"; } -.fa-rmb::before { - content: "\f157"; } +.fa-mars { + --fa: "\f222"; } -.fa-yen::before { - content: "\f157"; } +.fa-toilet { + --fa: "\f7d8"; } -.fa-ruble-sign::before { - content: "\f158"; } +.fa-plane-circle-xmark { + --fa: "\e557"; } -.fa-rouble::before { - content: "\f158"; } +.fa-yen-sign { + --fa: "\f157"; } -.fa-rub::before { - content: "\f158"; } +.fa-cny { + --fa: "\f157"; } -.fa-ruble::before { - content: "\f158"; } +.fa-jpy { + --fa: "\f157"; } -.fa-sun::before { - content: "\f185"; } +.fa-rmb { + --fa: "\f157"; } -.fa-guitar::before { - content: "\f7a6"; } +.fa-yen { + --fa: "\f157"; } -.fa-face-laugh-wink::before { - content: "\f59c"; } +.fa-ruble-sign { + --fa: "\f158"; } -.fa-laugh-wink::before { - content: "\f59c"; } +.fa-rouble { + --fa: "\f158"; } -.fa-horse-head::before { - content: "\f7ab"; } +.fa-rub { + --fa: "\f158"; } -.fa-bore-hole::before { - content: "\e4c3"; } +.fa-ruble { + --fa: "\f158"; } -.fa-industry::before { - content: "\f275"; } +.fa-sun { + --fa: "\f185"; } -.fa-circle-down::before { - content: "\f358"; } +.fa-guitar { + --fa: "\f7a6"; } -.fa-arrow-alt-circle-down::before { - content: "\f358"; } +.fa-face-laugh-wink { + --fa: "\f59c"; } -.fa-arrows-turn-to-dots::before { - content: "\e4c1"; } +.fa-laugh-wink { + --fa: "\f59c"; } -.fa-florin-sign::before { - content: "\e184"; } +.fa-horse-head { + --fa: "\f7ab"; } -.fa-arrow-down-short-wide::before { - content: "\f884"; } +.fa-bore-hole { + --fa: "\e4c3"; } -.fa-sort-amount-desc::before { - content: "\f884"; } +.fa-industry { + --fa: "\f275"; } -.fa-sort-amount-down-alt::before { - content: "\f884"; } +.fa-circle-down { + --fa: "\f358"; } -.fa-less-than::before { - content: "\3c"; } +.fa-arrow-alt-circle-down { + --fa: "\f358"; } -.fa-angle-down::before { - content: "\f107"; } +.fa-arrows-turn-to-dots { + --fa: "\e4c1"; } -.fa-car-tunnel::before { - content: "\e4de"; } +.fa-florin-sign { + --fa: "\e184"; } -.fa-head-side-cough::before { - content: "\e061"; } +.fa-arrow-down-short-wide { + --fa: "\f884"; } -.fa-grip-lines::before { - content: "\f7a4"; } +.fa-sort-amount-desc { + --fa: "\f884"; } -.fa-thumbs-down::before { - content: "\f165"; } +.fa-sort-amount-down-alt { + --fa: "\f884"; } -.fa-user-lock::before { - content: "\f502"; } +.fa-less-than { + --fa: "\3c"; } -.fa-arrow-right-long::before { - content: "\f178"; } +.fa-angle-down { + --fa: "\f107"; } -.fa-long-arrow-right::before { - content: "\f178"; } +.fa-car-tunnel { + --fa: "\e4de"; } -.fa-anchor-circle-xmark::before { - content: "\e4ac"; } +.fa-head-side-cough { + --fa: "\e061"; } -.fa-ellipsis::before { - content: "\f141"; } +.fa-grip-lines { + --fa: "\f7a4"; } -.fa-ellipsis-h::before { - content: "\f141"; } +.fa-thumbs-down { + --fa: "\f165"; } -.fa-chess-pawn::before { - content: "\f443"; } +.fa-user-lock { + --fa: "\f502"; } -.fa-kit-medical::before { - content: "\f479"; } +.fa-arrow-right-long { + --fa: "\f178"; } -.fa-first-aid::before { - content: "\f479"; } +.fa-long-arrow-right { + --fa: "\f178"; } -.fa-person-through-window::before { - content: "\e5a9"; } +.fa-anchor-circle-xmark { + --fa: "\e4ac"; } -.fa-toolbox::before { - content: "\f552"; } +.fa-ellipsis { + --fa: "\f141"; } -.fa-hands-holding-circle::before { - content: "\e4fb"; } +.fa-ellipsis-h { + --fa: "\f141"; } -.fa-bug::before { - content: "\f188"; } +.fa-chess-pawn { + --fa: "\f443"; } -.fa-credit-card::before { - content: "\f09d"; } +.fa-kit-medical { + --fa: "\f479"; } -.fa-credit-card-alt::before { - content: "\f09d"; } +.fa-first-aid { + --fa: "\f479"; } -.fa-car::before { - content: "\f1b9"; } +.fa-person-through-window { + --fa: "\e5a9"; } -.fa-automobile::before { - content: "\f1b9"; } +.fa-toolbox { + --fa: "\f552"; } -.fa-hand-holding-hand::before { - content: "\e4f7"; } +.fa-hands-holding-circle { + --fa: "\e4fb"; } -.fa-book-open-reader::before { - content: "\f5da"; } +.fa-bug { + --fa: "\f188"; } -.fa-book-reader::before { - content: "\f5da"; } +.fa-credit-card { + --fa: "\f09d"; } -.fa-mountain-sun::before { - content: "\e52f"; } +.fa-credit-card-alt { + --fa: "\f09d"; } -.fa-arrows-left-right-to-line::before { - content: "\e4ba"; } +.fa-car { + --fa: "\f1b9"; } -.fa-dice-d20::before { - content: "\f6cf"; } +.fa-automobile { + --fa: "\f1b9"; } -.fa-truck-droplet::before { - content: "\e58c"; } +.fa-hand-holding-hand { + --fa: "\e4f7"; } -.fa-file-circle-xmark::before { - content: "\e5a1"; } +.fa-book-open-reader { + --fa: "\f5da"; } -.fa-temperature-arrow-up::before { - content: "\e040"; } +.fa-book-reader { + --fa: "\f5da"; } -.fa-temperature-up::before { - content: "\e040"; } +.fa-mountain-sun { + --fa: "\e52f"; } -.fa-medal::before { - content: "\f5a2"; } +.fa-arrows-left-right-to-line { + --fa: "\e4ba"; } -.fa-bed::before { - content: "\f236"; } +.fa-dice-d20 { + --fa: "\f6cf"; } -.fa-square-h::before { - content: "\f0fd"; } +.fa-truck-droplet { + --fa: "\e58c"; } -.fa-h-square::before { - content: "\f0fd"; } +.fa-file-circle-xmark { + --fa: "\e5a1"; } -.fa-podcast::before { - content: "\f2ce"; } +.fa-temperature-arrow-up { + --fa: "\e040"; } -.fa-temperature-full::before { - content: "\f2c7"; } +.fa-temperature-up { + --fa: "\e040"; } -.fa-temperature-4::before { - content: "\f2c7"; } +.fa-medal { + --fa: "\f5a2"; } -.fa-thermometer-4::before { - content: "\f2c7"; } +.fa-bed { + --fa: "\f236"; } -.fa-thermometer-full::before { - content: "\f2c7"; } +.fa-square-h { + --fa: "\f0fd"; } -.fa-bell::before { - content: "\f0f3"; } +.fa-h-square { + --fa: "\f0fd"; } -.fa-superscript::before { - content: "\f12b"; } +.fa-podcast { + --fa: "\f2ce"; } -.fa-plug-circle-xmark::before { - content: "\e560"; } +.fa-temperature-full { + --fa: "\f2c7"; } -.fa-star-of-life::before { - content: "\f621"; } +.fa-temperature-4 { + --fa: "\f2c7"; } -.fa-phone-slash::before { - content: "\f3dd"; } +.fa-thermometer-4 { + --fa: "\f2c7"; } -.fa-paint-roller::before { - content: "\f5aa"; } +.fa-thermometer-full { + --fa: "\f2c7"; } -.fa-handshake-angle::before { - content: "\f4c4"; } +.fa-bell { + --fa: "\f0f3"; } -.fa-hands-helping::before { - content: "\f4c4"; } +.fa-superscript { + --fa: "\f12b"; } -.fa-location-dot::before { - content: "\f3c5"; } +.fa-plug-circle-xmark { + --fa: "\e560"; } -.fa-map-marker-alt::before { - content: "\f3c5"; } +.fa-star-of-life { + --fa: "\f621"; } -.fa-file::before { - content: "\f15b"; } +.fa-phone-slash { + --fa: "\f3dd"; } -.fa-greater-than::before { - content: "\3e"; } +.fa-paint-roller { + --fa: "\f5aa"; } -.fa-person-swimming::before { - content: "\f5c4"; } +.fa-handshake-angle { + --fa: "\f4c4"; } -.fa-swimmer::before { - content: "\f5c4"; } +.fa-hands-helping { + --fa: "\f4c4"; } -.fa-arrow-down::before { - content: "\f063"; } +.fa-location-dot { + --fa: "\f3c5"; } -.fa-droplet::before { - content: "\f043"; } +.fa-map-marker-alt { + --fa: "\f3c5"; } -.fa-tint::before { - content: "\f043"; } +.fa-file { + --fa: "\f15b"; } -.fa-eraser::before { - content: "\f12d"; } +.fa-greater-than { + --fa: "\3e"; } -.fa-earth-americas::before { - content: "\f57d"; } +.fa-person-swimming { + --fa: "\f5c4"; } -.fa-earth::before { - content: "\f57d"; } +.fa-swimmer { + --fa: "\f5c4"; } -.fa-earth-america::before { - content: "\f57d"; } +.fa-arrow-down { + --fa: "\f063"; } -.fa-globe-americas::before { - content: "\f57d"; } +.fa-droplet { + --fa: "\f043"; } -.fa-person-burst::before { - content: "\e53b"; } +.fa-tint { + --fa: "\f043"; } -.fa-dove::before { - content: "\f4ba"; } +.fa-eraser { + --fa: "\f12d"; } -.fa-battery-empty::before { - content: "\f244"; } +.fa-earth-americas { + --fa: "\f57d"; } -.fa-battery-0::before { - content: "\f244"; } +.fa-earth { + --fa: "\f57d"; } -.fa-socks::before { - content: "\f696"; } +.fa-earth-america { + --fa: "\f57d"; } -.fa-inbox::before { - content: "\f01c"; } +.fa-globe-americas { + --fa: "\f57d"; } -.fa-section::before { - content: "\e447"; } +.fa-person-burst { + --fa: "\e53b"; } -.fa-gauge-high::before { - content: "\f625"; } +.fa-dove { + --fa: "\f4ba"; } -.fa-tachometer-alt::before { - content: "\f625"; } +.fa-battery-empty { + --fa: "\f244"; } -.fa-tachometer-alt-fast::before { - content: "\f625"; } +.fa-battery-0 { + --fa: "\f244"; } -.fa-envelope-open-text::before { - content: "\f658"; } +.fa-socks { + --fa: "\f696"; } -.fa-hospital::before { - content: "\f0f8"; } +.fa-inbox { + --fa: "\f01c"; } -.fa-hospital-alt::before { - content: "\f0f8"; } +.fa-section { + --fa: "\e447"; } -.fa-hospital-wide::before { - content: "\f0f8"; } +.fa-gauge-high { + --fa: "\f625"; } -.fa-wine-bottle::before { - content: "\f72f"; } +.fa-tachometer-alt { + --fa: "\f625"; } -.fa-chess-rook::before { - content: "\f447"; } +.fa-tachometer-alt-fast { + --fa: "\f625"; } -.fa-bars-staggered::before { - content: "\f550"; } +.fa-envelope-open-text { + --fa: "\f658"; } -.fa-reorder::before { - content: "\f550"; } +.fa-hospital { + --fa: "\f0f8"; } -.fa-stream::before { - content: "\f550"; } +.fa-hospital-alt { + --fa: "\f0f8"; } -.fa-dharmachakra::before { - content: "\f655"; } +.fa-hospital-wide { + --fa: "\f0f8"; } -.fa-hotdog::before { - content: "\f80f"; } +.fa-wine-bottle { + --fa: "\f72f"; } -.fa-person-walking-with-cane::before { - content: "\f29d"; } +.fa-chess-rook { + --fa: "\f447"; } -.fa-blind::before { - content: "\f29d"; } +.fa-bars-staggered { + --fa: "\f550"; } -.fa-drum::before { - content: "\f569"; } +.fa-reorder { + --fa: "\f550"; } -.fa-ice-cream::before { - content: "\f810"; } +.fa-stream { + --fa: "\f550"; } -.fa-heart-circle-bolt::before { - content: "\e4fc"; } +.fa-dharmachakra { + --fa: "\f655"; } -.fa-fax::before { - content: "\f1ac"; } +.fa-hotdog { + --fa: "\f80f"; } -.fa-paragraph::before { - content: "\f1dd"; } +.fa-person-walking-with-cane { + --fa: "\f29d"; } -.fa-check-to-slot::before { - content: "\f772"; } +.fa-blind { + --fa: "\f29d"; } -.fa-vote-yea::before { - content: "\f772"; } +.fa-drum { + --fa: "\f569"; } -.fa-star-half::before { - content: "\f089"; } +.fa-ice-cream { + --fa: "\f810"; } -.fa-boxes-stacked::before { - content: "\f468"; } +.fa-heart-circle-bolt { + --fa: "\e4fc"; } -.fa-boxes::before { - content: "\f468"; } +.fa-fax { + --fa: "\f1ac"; } -.fa-boxes-alt::before { - content: "\f468"; } +.fa-paragraph { + --fa: "\f1dd"; } -.fa-link::before { - content: "\f0c1"; } +.fa-check-to-slot { + --fa: "\f772"; } -.fa-chain::before { - content: "\f0c1"; } +.fa-vote-yea { + --fa: "\f772"; } -.fa-ear-listen::before { - content: "\f2a2"; } +.fa-star-half { + --fa: "\f089"; } -.fa-assistive-listening-systems::before { - content: "\f2a2"; } +.fa-boxes-stacked { + --fa: "\f468"; } -.fa-tree-city::before { - content: "\e587"; } +.fa-boxes { + --fa: "\f468"; } -.fa-play::before { - content: "\f04b"; } +.fa-boxes-alt { + --fa: "\f468"; } -.fa-font::before { - content: "\f031"; } +.fa-link { + --fa: "\f0c1"; } -.fa-table-cells-row-lock::before { - content: "\e67a"; } +.fa-chain { + --fa: "\f0c1"; } -.fa-rupiah-sign::before { - content: "\e23d"; } +.fa-ear-listen { + --fa: "\f2a2"; } -.fa-magnifying-glass::before { - content: "\f002"; } +.fa-assistive-listening-systems { + --fa: "\f2a2"; } -.fa-search::before { - content: "\f002"; } +.fa-tree-city { + --fa: "\e587"; } -.fa-table-tennis-paddle-ball::before { - content: "\f45d"; } +.fa-play { + --fa: "\f04b"; } -.fa-ping-pong-paddle-ball::before { - content: "\f45d"; } +.fa-font { + --fa: "\f031"; } -.fa-table-tennis::before { - content: "\f45d"; } +.fa-table-cells-row-lock { + --fa: "\e67a"; } -.fa-person-dots-from-line::before { - content: "\f470"; } +.fa-rupiah-sign { + --fa: "\e23d"; } -.fa-diagnoses::before { - content: "\f470"; } +.fa-magnifying-glass { + --fa: "\f002"; } -.fa-trash-can-arrow-up::before { - content: "\f82a"; } +.fa-search { + --fa: "\f002"; } -.fa-trash-restore-alt::before { - content: "\f82a"; } +.fa-table-tennis-paddle-ball { + --fa: "\f45d"; } -.fa-naira-sign::before { - content: "\e1f6"; } +.fa-ping-pong-paddle-ball { + --fa: "\f45d"; } -.fa-cart-arrow-down::before { - content: "\f218"; } +.fa-table-tennis { + --fa: "\f45d"; } -.fa-walkie-talkie::before { - content: "\f8ef"; } +.fa-person-dots-from-line { + --fa: "\f470"; } -.fa-file-pen::before { - content: "\f31c"; } +.fa-diagnoses { + --fa: "\f470"; } -.fa-file-edit::before { - content: "\f31c"; } +.fa-trash-can-arrow-up { + --fa: "\f82a"; } -.fa-receipt::before { - content: "\f543"; } +.fa-trash-restore-alt { + --fa: "\f82a"; } -.fa-square-pen::before { - content: "\f14b"; } +.fa-naira-sign { + --fa: "\e1f6"; } -.fa-pen-square::before { - content: "\f14b"; } +.fa-cart-arrow-down { + --fa: "\f218"; } -.fa-pencil-square::before { - content: "\f14b"; } +.fa-walkie-talkie { + --fa: "\f8ef"; } -.fa-suitcase-rolling::before { - content: "\f5c1"; } +.fa-file-pen { + --fa: "\f31c"; } -.fa-person-circle-exclamation::before { - content: "\e53f"; } +.fa-file-edit { + --fa: "\f31c"; } -.fa-chevron-down::before { - content: "\f078"; } +.fa-receipt { + --fa: "\f543"; } -.fa-battery-full::before { - content: "\f240"; } +.fa-square-pen { + --fa: "\f14b"; } -.fa-battery::before { - content: "\f240"; } +.fa-pen-square { + --fa: "\f14b"; } -.fa-battery-5::before { - content: "\f240"; } +.fa-pencil-square { + --fa: "\f14b"; } -.fa-skull-crossbones::before { - content: "\f714"; } +.fa-suitcase-rolling { + --fa: "\f5c1"; } -.fa-code-compare::before { - content: "\e13a"; } +.fa-person-circle-exclamation { + --fa: "\e53f"; } -.fa-list-ul::before { - content: "\f0ca"; } +.fa-chevron-down { + --fa: "\f078"; } -.fa-list-dots::before { - content: "\f0ca"; } +.fa-battery-full { + --fa: "\f240"; } -.fa-school-lock::before { - content: "\e56f"; } +.fa-battery { + --fa: "\f240"; } -.fa-tower-cell::before { - content: "\e585"; } +.fa-battery-5 { + --fa: "\f240"; } -.fa-down-long::before { - content: "\f309"; } +.fa-skull-crossbones { + --fa: "\f714"; } -.fa-long-arrow-alt-down::before { - content: "\f309"; } +.fa-code-compare { + --fa: "\e13a"; } -.fa-ranking-star::before { - content: "\e561"; } +.fa-list-ul { + --fa: "\f0ca"; } -.fa-chess-king::before { - content: "\f43f"; } +.fa-list-dots { + --fa: "\f0ca"; } -.fa-person-harassing::before { - content: "\e549"; } +.fa-school-lock { + --fa: "\e56f"; } -.fa-brazilian-real-sign::before { - content: "\e46c"; } +.fa-tower-cell { + --fa: "\e585"; } -.fa-landmark-dome::before { - content: "\f752"; } +.fa-down-long { + --fa: "\f309"; } -.fa-landmark-alt::before { - content: "\f752"; } +.fa-long-arrow-alt-down { + --fa: "\f309"; } -.fa-arrow-up::before { - content: "\f062"; } +.fa-ranking-star { + --fa: "\e561"; } -.fa-tv::before { - content: "\f26c"; } +.fa-chess-king { + --fa: "\f43f"; } -.fa-television::before { - content: "\f26c"; } +.fa-person-harassing { + --fa: "\e549"; } -.fa-tv-alt::before { - content: "\f26c"; } +.fa-brazilian-real-sign { + --fa: "\e46c"; } -.fa-shrimp::before { - content: "\e448"; } +.fa-landmark-dome { + --fa: "\f752"; } -.fa-list-check::before { - content: "\f0ae"; } +.fa-landmark-alt { + --fa: "\f752"; } -.fa-tasks::before { - content: "\f0ae"; } +.fa-arrow-up { + --fa: "\f062"; } -.fa-jug-detergent::before { - content: "\e519"; } +.fa-tv { + --fa: "\f26c"; } -.fa-circle-user::before { - content: "\f2bd"; } +.fa-television { + --fa: "\f26c"; } -.fa-user-circle::before { - content: "\f2bd"; } +.fa-tv-alt { + --fa: "\f26c"; } -.fa-user-shield::before { - content: "\f505"; } +.fa-shrimp { + --fa: "\e448"; } -.fa-wind::before { - content: "\f72e"; } +.fa-list-check { + --fa: "\f0ae"; } -.fa-car-burst::before { - content: "\f5e1"; } +.fa-tasks { + --fa: "\f0ae"; } -.fa-car-crash::before { - content: "\f5e1"; } +.fa-jug-detergent { + --fa: "\e519"; } -.fa-y::before { - content: "\59"; } +.fa-circle-user { + --fa: "\f2bd"; } -.fa-person-snowboarding::before { - content: "\f7ce"; } +.fa-user-circle { + --fa: "\f2bd"; } -.fa-snowboarding::before { - content: "\f7ce"; } +.fa-user-shield { + --fa: "\f505"; } -.fa-truck-fast::before { - content: "\f48b"; } +.fa-wind { + --fa: "\f72e"; } -.fa-shipping-fast::before { - content: "\f48b"; } +.fa-car-burst { + --fa: "\f5e1"; } -.fa-fish::before { - content: "\f578"; } +.fa-car-crash { + --fa: "\f5e1"; } -.fa-user-graduate::before { - content: "\f501"; } +.fa-y { + --fa: "\59"; } -.fa-circle-half-stroke::before { - content: "\f042"; } +.fa-person-snowboarding { + --fa: "\f7ce"; } -.fa-adjust::before { - content: "\f042"; } +.fa-snowboarding { + --fa: "\f7ce"; } -.fa-clapperboard::before { - content: "\e131"; } +.fa-truck-fast { + --fa: "\f48b"; } -.fa-circle-radiation::before { - content: "\f7ba"; } +.fa-shipping-fast { + --fa: "\f48b"; } -.fa-radiation-alt::before { - content: "\f7ba"; } +.fa-fish { + --fa: "\f578"; } -.fa-baseball::before { - content: "\f433"; } +.fa-user-graduate { + --fa: "\f501"; } -.fa-baseball-ball::before { - content: "\f433"; } +.fa-circle-half-stroke { + --fa: "\f042"; } -.fa-jet-fighter-up::before { - content: "\e518"; } +.fa-adjust { + --fa: "\f042"; } -.fa-diagram-project::before { - content: "\f542"; } +.fa-clapperboard { + --fa: "\e131"; } -.fa-project-diagram::before { - content: "\f542"; } +.fa-circle-radiation { + --fa: "\f7ba"; } -.fa-copy::before { - content: "\f0c5"; } +.fa-radiation-alt { + --fa: "\f7ba"; } -.fa-volume-xmark::before { - content: "\f6a9"; } +.fa-baseball { + --fa: "\f433"; } -.fa-volume-mute::before { - content: "\f6a9"; } +.fa-baseball-ball { + --fa: "\f433"; } -.fa-volume-times::before { - content: "\f6a9"; } +.fa-jet-fighter-up { + --fa: "\e518"; } -.fa-hand-sparkles::before { - content: "\e05d"; } +.fa-diagram-project { + --fa: "\f542"; } -.fa-grip::before { - content: "\f58d"; } +.fa-project-diagram { + --fa: "\f542"; } -.fa-grip-horizontal::before { - content: "\f58d"; } +.fa-copy { + --fa: "\f0c5"; } -.fa-share-from-square::before { - content: "\f14d"; } +.fa-volume-xmark { + --fa: "\f6a9"; } -.fa-share-square::before { - content: "\f14d"; } +.fa-volume-mute { + --fa: "\f6a9"; } -.fa-child-combatant::before { - content: "\e4e0"; } +.fa-volume-times { + --fa: "\f6a9"; } -.fa-child-rifle::before { - content: "\e4e0"; } +.fa-hand-sparkles { + --fa: "\e05d"; } -.fa-gun::before { - content: "\e19b"; } +.fa-grip { + --fa: "\f58d"; } -.fa-square-phone::before { - content: "\f098"; } +.fa-grip-horizontal { + --fa: "\f58d"; } -.fa-phone-square::before { - content: "\f098"; } +.fa-share-from-square { + --fa: "\f14d"; } -.fa-plus::before { - content: "\2b"; } +.fa-share-square { + --fa: "\f14d"; } -.fa-add::before { - content: "\2b"; } +.fa-child-combatant { + --fa: "\e4e0"; } -.fa-expand::before { - content: "\f065"; } +.fa-child-rifle { + --fa: "\e4e0"; } -.fa-computer::before { - content: "\e4e5"; } +.fa-gun { + --fa: "\e19b"; } -.fa-xmark::before { - content: "\f00d"; } +.fa-square-phone { + --fa: "\f098"; } -.fa-close::before { - content: "\f00d"; } +.fa-phone-square { + --fa: "\f098"; } -.fa-multiply::before { - content: "\f00d"; } +.fa-plus { + --fa: "\2b"; } -.fa-remove::before { - content: "\f00d"; } +.fa-add { + --fa: "\2b"; } -.fa-times::before { - content: "\f00d"; } +.fa-expand { + --fa: "\f065"; } -.fa-arrows-up-down-left-right::before { - content: "\f047"; } +.fa-computer { + --fa: "\e4e5"; } -.fa-arrows::before { - content: "\f047"; } +.fa-xmark { + --fa: "\f00d"; } -.fa-chalkboard-user::before { - content: "\f51c"; } +.fa-close { + --fa: "\f00d"; } -.fa-chalkboard-teacher::before { - content: "\f51c"; } +.fa-multiply { + --fa: "\f00d"; } -.fa-peso-sign::before { - content: "\e222"; } +.fa-remove { + --fa: "\f00d"; } -.fa-building-shield::before { - content: "\e4d8"; } +.fa-times { + --fa: "\f00d"; } -.fa-baby::before { - content: "\f77c"; } +.fa-arrows-up-down-left-right { + --fa: "\f047"; } -.fa-users-line::before { - content: "\e592"; } +.fa-arrows { + --fa: "\f047"; } -.fa-quote-left::before { - content: "\f10d"; } +.fa-chalkboard-user { + --fa: "\f51c"; } -.fa-quote-left-alt::before { - content: "\f10d"; } +.fa-chalkboard-teacher { + --fa: "\f51c"; } -.fa-tractor::before { - content: "\f722"; } +.fa-peso-sign { + --fa: "\e222"; } -.fa-trash-arrow-up::before { - content: "\f829"; } +.fa-building-shield { + --fa: "\e4d8"; } -.fa-trash-restore::before { - content: "\f829"; } +.fa-baby { + --fa: "\f77c"; } -.fa-arrow-down-up-lock::before { - content: "\e4b0"; } +.fa-users-line { + --fa: "\e592"; } -.fa-lines-leaning::before { - content: "\e51e"; } +.fa-quote-left { + --fa: "\f10d"; } -.fa-ruler-combined::before { - content: "\f546"; } +.fa-quote-left-alt { + --fa: "\f10d"; } -.fa-copyright::before { - content: "\f1f9"; } +.fa-tractor { + --fa: "\f722"; } -.fa-equals::before { - content: "\3d"; } +.fa-trash-arrow-up { + --fa: "\f829"; } -.fa-blender::before { - content: "\f517"; } +.fa-trash-restore { + --fa: "\f829"; } -.fa-teeth::before { - content: "\f62e"; } +.fa-arrow-down-up-lock { + --fa: "\e4b0"; } -.fa-shekel-sign::before { - content: "\f20b"; } +.fa-lines-leaning { + --fa: "\e51e"; } -.fa-ils::before { - content: "\f20b"; } +.fa-ruler-combined { + --fa: "\f546"; } -.fa-shekel::before { - content: "\f20b"; } +.fa-copyright { + --fa: "\f1f9"; } -.fa-sheqel::before { - content: "\f20b"; } +.fa-equals { + --fa: "\3d"; } -.fa-sheqel-sign::before { - content: "\f20b"; } +.fa-blender { + --fa: "\f517"; } -.fa-map::before { - content: "\f279"; } +.fa-teeth { + --fa: "\f62e"; } -.fa-rocket::before { - content: "\f135"; } +.fa-shekel-sign { + --fa: "\f20b"; } -.fa-photo-film::before { - content: "\f87c"; } +.fa-ils { + --fa: "\f20b"; } -.fa-photo-video::before { - content: "\f87c"; } +.fa-shekel { + --fa: "\f20b"; } -.fa-folder-minus::before { - content: "\f65d"; } +.fa-sheqel { + --fa: "\f20b"; } -.fa-store::before { - content: "\f54e"; } +.fa-sheqel-sign { + --fa: "\f20b"; } -.fa-arrow-trend-up::before { - content: "\e098"; } +.fa-map { + --fa: "\f279"; } -.fa-plug-circle-minus::before { - content: "\e55e"; } +.fa-rocket { + --fa: "\f135"; } -.fa-sign-hanging::before { - content: "\f4d9"; } +.fa-photo-film { + --fa: "\f87c"; } -.fa-sign::before { - content: "\f4d9"; } +.fa-photo-video { + --fa: "\f87c"; } -.fa-bezier-curve::before { - content: "\f55b"; } +.fa-folder-minus { + --fa: "\f65d"; } -.fa-bell-slash::before { - content: "\f1f6"; } +.fa-hexagon-nodes-bolt { + --fa: "\e69a"; } -.fa-tablet::before { - content: "\f3fb"; } +.fa-store { + --fa: "\f54e"; } -.fa-tablet-android::before { - content: "\f3fb"; } +.fa-arrow-trend-up { + --fa: "\e098"; } -.fa-school-flag::before { - content: "\e56e"; } +.fa-plug-circle-minus { + --fa: "\e55e"; } -.fa-fill::before { - content: "\f575"; } +.fa-sign-hanging { + --fa: "\f4d9"; } -.fa-angle-up::before { - content: "\f106"; } +.fa-sign { + --fa: "\f4d9"; } -.fa-drumstick-bite::before { - content: "\f6d7"; } +.fa-bezier-curve { + --fa: "\f55b"; } -.fa-holly-berry::before { - content: "\f7aa"; } +.fa-bell-slash { + --fa: "\f1f6"; } -.fa-chevron-left::before { - content: "\f053"; } +.fa-tablet { + --fa: "\f3fb"; } -.fa-bacteria::before { - content: "\e059"; } +.fa-tablet-android { + --fa: "\f3fb"; } -.fa-hand-lizard::before { - content: "\f258"; } +.fa-school-flag { + --fa: "\e56e"; } -.fa-notdef::before { - content: "\e1fe"; } +.fa-fill { + --fa: "\f575"; } -.fa-disease::before { - content: "\f7fa"; } +.fa-angle-up { + --fa: "\f106"; } -.fa-briefcase-medical::before { - content: "\f469"; } +.fa-drumstick-bite { + --fa: "\f6d7"; } -.fa-genderless::before { - content: "\f22d"; } +.fa-holly-berry { + --fa: "\f7aa"; } -.fa-chevron-right::before { - content: "\f054"; } +.fa-chevron-left { + --fa: "\f053"; } -.fa-retweet::before { - content: "\f079"; } +.fa-bacteria { + --fa: "\e059"; } -.fa-car-rear::before { - content: "\f5de"; } +.fa-hand-lizard { + --fa: "\f258"; } -.fa-car-alt::before { - content: "\f5de"; } +.fa-notdef { + --fa: "\e1fe"; } -.fa-pump-soap::before { - content: "\e06b"; } +.fa-disease { + --fa: "\f7fa"; } -.fa-video-slash::before { - content: "\f4e2"; } +.fa-briefcase-medical { + --fa: "\f469"; } -.fa-battery-quarter::before { - content: "\f243"; } +.fa-genderless { + --fa: "\f22d"; } -.fa-battery-2::before { - content: "\f243"; } +.fa-chevron-right { + --fa: "\f054"; } -.fa-radio::before { - content: "\f8d7"; } +.fa-retweet { + --fa: "\f079"; } -.fa-baby-carriage::before { - content: "\f77d"; } +.fa-car-rear { + --fa: "\f5de"; } -.fa-carriage-baby::before { - content: "\f77d"; } +.fa-car-alt { + --fa: "\f5de"; } -.fa-traffic-light::before { - content: "\f637"; } +.fa-pump-soap { + --fa: "\e06b"; } -.fa-thermometer::before { - content: "\f491"; } +.fa-video-slash { + --fa: "\f4e2"; } -.fa-vr-cardboard::before { - content: "\f729"; } +.fa-battery-quarter { + --fa: "\f243"; } -.fa-hand-middle-finger::before { - content: "\f806"; } +.fa-battery-2 { + --fa: "\f243"; } -.fa-percent::before { - content: "\25"; } +.fa-radio { + --fa: "\f8d7"; } -.fa-percentage::before { - content: "\25"; } +.fa-baby-carriage { + --fa: "\f77d"; } -.fa-truck-moving::before { - content: "\f4df"; } +.fa-carriage-baby { + --fa: "\f77d"; } -.fa-glass-water-droplet::before { - content: "\e4f5"; } +.fa-traffic-light { + --fa: "\f637"; } -.fa-display::before { - content: "\e163"; } +.fa-thermometer { + --fa: "\f491"; } -.fa-face-smile::before { - content: "\f118"; } +.fa-vr-cardboard { + --fa: "\f729"; } -.fa-smile::before { - content: "\f118"; } +.fa-hand-middle-finger { + --fa: "\f806"; } -.fa-thumbtack::before { - content: "\f08d"; } +.fa-percent { + --fa: "\25"; } -.fa-thumb-tack::before { - content: "\f08d"; } +.fa-percentage { + --fa: "\25"; } -.fa-trophy::before { - content: "\f091"; } +.fa-truck-moving { + --fa: "\f4df"; } -.fa-person-praying::before { - content: "\f683"; } +.fa-glass-water-droplet { + --fa: "\e4f5"; } -.fa-pray::before { - content: "\f683"; } +.fa-display { + --fa: "\e163"; } -.fa-hammer::before { - content: "\f6e3"; } +.fa-face-smile { + --fa: "\f118"; } -.fa-hand-peace::before { - content: "\f25b"; } +.fa-smile { + --fa: "\f118"; } -.fa-rotate::before { - content: "\f2f1"; } +.fa-thumbtack { + --fa: "\f08d"; } -.fa-sync-alt::before { - content: "\f2f1"; } +.fa-thumb-tack { + --fa: "\f08d"; } -.fa-spinner::before { - content: "\f110"; } +.fa-trophy { + --fa: "\f091"; } -.fa-robot::before { - content: "\f544"; } +.fa-person-praying { + --fa: "\f683"; } -.fa-peace::before { - content: "\f67c"; } +.fa-pray { + --fa: "\f683"; } -.fa-gears::before { - content: "\f085"; } +.fa-hammer { + --fa: "\f6e3"; } -.fa-cogs::before { - content: "\f085"; } +.fa-hand-peace { + --fa: "\f25b"; } -.fa-warehouse::before { - content: "\f494"; } +.fa-rotate { + --fa: "\f2f1"; } -.fa-arrow-up-right-dots::before { - content: "\e4b7"; } +.fa-sync-alt { + --fa: "\f2f1"; } -.fa-splotch::before { - content: "\f5bc"; } +.fa-spinner { + --fa: "\f110"; } -.fa-face-grin-hearts::before { - content: "\f584"; } +.fa-robot { + --fa: "\f544"; } -.fa-grin-hearts::before { - content: "\f584"; } +.fa-peace { + --fa: "\f67c"; } -.fa-dice-four::before { - content: "\f524"; } +.fa-gears { + --fa: "\f085"; } -.fa-sim-card::before { - content: "\f7c4"; } +.fa-cogs { + --fa: "\f085"; } -.fa-transgender::before { - content: "\f225"; } +.fa-warehouse { + --fa: "\f494"; } -.fa-transgender-alt::before { - content: "\f225"; } +.fa-arrow-up-right-dots { + --fa: "\e4b7"; } -.fa-mercury::before { - content: "\f223"; } +.fa-splotch { + --fa: "\f5bc"; } -.fa-arrow-turn-down::before { - content: "\f149"; } +.fa-face-grin-hearts { + --fa: "\f584"; } -.fa-level-down::before { - content: "\f149"; } +.fa-grin-hearts { + --fa: "\f584"; } -.fa-person-falling-burst::before { - content: "\e547"; } +.fa-dice-four { + --fa: "\f524"; } -.fa-award::before { - content: "\f559"; } +.fa-sim-card { + --fa: "\f7c4"; } -.fa-ticket-simple::before { - content: "\f3ff"; } +.fa-transgender { + --fa: "\f225"; } -.fa-ticket-alt::before { - content: "\f3ff"; } +.fa-transgender-alt { + --fa: "\f225"; } -.fa-building::before { - content: "\f1ad"; } +.fa-mercury { + --fa: "\f223"; } -.fa-angles-left::before { - content: "\f100"; } +.fa-arrow-turn-down { + --fa: "\f149"; } -.fa-angle-double-left::before { - content: "\f100"; } +.fa-level-down { + --fa: "\f149"; } -.fa-qrcode::before { - content: "\f029"; } +.fa-person-falling-burst { + --fa: "\e547"; } -.fa-clock-rotate-left::before { - content: "\f1da"; } +.fa-award { + --fa: "\f559"; } -.fa-history::before { - content: "\f1da"; } +.fa-ticket-simple { + --fa: "\f3ff"; } -.fa-face-grin-beam-sweat::before { - content: "\f583"; } +.fa-ticket-alt { + --fa: "\f3ff"; } -.fa-grin-beam-sweat::before { - content: "\f583"; } +.fa-building { + --fa: "\f1ad"; } -.fa-file-export::before { - content: "\f56e"; } +.fa-angles-left { + --fa: "\f100"; } -.fa-arrow-right-from-file::before { - content: "\f56e"; } +.fa-angle-double-left { + --fa: "\f100"; } -.fa-shield::before { - content: "\f132"; } +.fa-qrcode { + --fa: "\f029"; } -.fa-shield-blank::before { - content: "\f132"; } +.fa-clock-rotate-left { + --fa: "\f1da"; } -.fa-arrow-up-short-wide::before { - content: "\f885"; } +.fa-history { + --fa: "\f1da"; } -.fa-sort-amount-up-alt::before { - content: "\f885"; } +.fa-face-grin-beam-sweat { + --fa: "\f583"; } -.fa-house-medical::before { - content: "\e3b2"; } +.fa-grin-beam-sweat { + --fa: "\f583"; } -.fa-golf-ball-tee::before { - content: "\f450"; } +.fa-file-export { + --fa: "\f56e"; } -.fa-golf-ball::before { - content: "\f450"; } +.fa-arrow-right-from-file { + --fa: "\f56e"; } -.fa-circle-chevron-left::before { - content: "\f137"; } +.fa-shield { + --fa: "\f132"; } -.fa-chevron-circle-left::before { - content: "\f137"; } +.fa-shield-blank { + --fa: "\f132"; } -.fa-house-chimney-window::before { - content: "\e00d"; } +.fa-arrow-up-short-wide { + --fa: "\f885"; } -.fa-pen-nib::before { - content: "\f5ad"; } +.fa-sort-amount-up-alt { + --fa: "\f885"; } -.fa-tent-arrow-turn-left::before { - content: "\e580"; } +.fa-comment-nodes { + --fa: "\e696"; } -.fa-tents::before { - content: "\e582"; } +.fa-house-medical { + --fa: "\e3b2"; } -.fa-wand-magic::before { - content: "\f0d0"; } +.fa-golf-ball-tee { + --fa: "\f450"; } -.fa-magic::before { - content: "\f0d0"; } +.fa-golf-ball { + --fa: "\f450"; } -.fa-dog::before { - content: "\f6d3"; } +.fa-circle-chevron-left { + --fa: "\f137"; } -.fa-carrot::before { - content: "\f787"; } +.fa-chevron-circle-left { + --fa: "\f137"; } -.fa-moon::before { - content: "\f186"; } +.fa-house-chimney-window { + --fa: "\e00d"; } -.fa-wine-glass-empty::before { - content: "\f5ce"; } +.fa-pen-nib { + --fa: "\f5ad"; } -.fa-wine-glass-alt::before { - content: "\f5ce"; } +.fa-tent-arrow-turn-left { + --fa: "\e580"; } -.fa-cheese::before { - content: "\f7ef"; } +.fa-tents { + --fa: "\e582"; } -.fa-yin-yang::before { - content: "\f6ad"; } +.fa-wand-magic { + --fa: "\f0d0"; } -.fa-music::before { - content: "\f001"; } +.fa-magic { + --fa: "\f0d0"; } -.fa-code-commit::before { - content: "\f386"; } +.fa-dog { + --fa: "\f6d3"; } -.fa-temperature-low::before { - content: "\f76b"; } +.fa-carrot { + --fa: "\f787"; } -.fa-person-biking::before { - content: "\f84a"; } +.fa-moon { + --fa: "\f186"; } -.fa-biking::before { - content: "\f84a"; } +.fa-wine-glass-empty { + --fa: "\f5ce"; } -.fa-broom::before { - content: "\f51a"; } +.fa-wine-glass-alt { + --fa: "\f5ce"; } -.fa-shield-heart::before { - content: "\e574"; } +.fa-cheese { + --fa: "\f7ef"; } -.fa-gopuram::before { - content: "\f664"; } +.fa-yin-yang { + --fa: "\f6ad"; } -.fa-earth-oceania::before { - content: "\e47b"; } +.fa-music { + --fa: "\f001"; } -.fa-globe-oceania::before { - content: "\e47b"; } +.fa-code-commit { + --fa: "\f386"; } -.fa-square-xmark::before { - content: "\f2d3"; } +.fa-temperature-low { + --fa: "\f76b"; } -.fa-times-square::before { - content: "\f2d3"; } +.fa-person-biking { + --fa: "\f84a"; } -.fa-xmark-square::before { - content: "\f2d3"; } +.fa-biking { + --fa: "\f84a"; } -.fa-hashtag::before { - content: "\23"; } +.fa-broom { + --fa: "\f51a"; } -.fa-up-right-and-down-left-from-center::before { - content: "\f424"; } +.fa-shield-heart { + --fa: "\e574"; } -.fa-expand-alt::before { - content: "\f424"; } +.fa-gopuram { + --fa: "\f664"; } -.fa-oil-can::before { - content: "\f613"; } +.fa-earth-oceania { + --fa: "\e47b"; } -.fa-t::before { - content: "\54"; } +.fa-globe-oceania { + --fa: "\e47b"; } -.fa-hippo::before { - content: "\f6ed"; } +.fa-square-xmark { + --fa: "\f2d3"; } -.fa-chart-column::before { - content: "\e0e3"; } +.fa-times-square { + --fa: "\f2d3"; } -.fa-infinity::before { - content: "\f534"; } +.fa-xmark-square { + --fa: "\f2d3"; } -.fa-vial-circle-check::before { - content: "\e596"; } +.fa-hashtag { + --fa: "\23"; } -.fa-person-arrow-down-to-line::before { - content: "\e538"; } +.fa-up-right-and-down-left-from-center { + --fa: "\f424"; } -.fa-voicemail::before { - content: "\f897"; } +.fa-expand-alt { + --fa: "\f424"; } -.fa-fan::before { - content: "\f863"; } +.fa-oil-can { + --fa: "\f613"; } -.fa-person-walking-luggage::before { - content: "\e554"; } +.fa-t { + --fa: "\54"; } -.fa-up-down::before { - content: "\f338"; } +.fa-hippo { + --fa: "\f6ed"; } -.fa-arrows-alt-v::before { - content: "\f338"; } +.fa-chart-column { + --fa: "\e0e3"; } -.fa-cloud-moon-rain::before { - content: "\f73c"; } +.fa-infinity { + --fa: "\f534"; } -.fa-calendar::before { - content: "\f133"; } +.fa-vial-circle-check { + --fa: "\e596"; } -.fa-trailer::before { - content: "\e041"; } +.fa-person-arrow-down-to-line { + --fa: "\e538"; } -.fa-bahai::before { - content: "\f666"; } +.fa-voicemail { + --fa: "\f897"; } -.fa-haykal::before { - content: "\f666"; } +.fa-fan { + --fa: "\f863"; } -.fa-sd-card::before { - content: "\f7c2"; } +.fa-person-walking-luggage { + --fa: "\e554"; } -.fa-dragon::before { - content: "\f6d5"; } +.fa-up-down { + --fa: "\f338"; } -.fa-shoe-prints::before { - content: "\f54b"; } +.fa-arrows-alt-v { + --fa: "\f338"; } -.fa-circle-plus::before { - content: "\f055"; } +.fa-cloud-moon-rain { + --fa: "\f73c"; } -.fa-plus-circle::before { - content: "\f055"; } +.fa-calendar { + --fa: "\f133"; } -.fa-face-grin-tongue-wink::before { - content: "\f58b"; } +.fa-trailer { + --fa: "\e041"; } -.fa-grin-tongue-wink::before { - content: "\f58b"; } +.fa-bahai { + --fa: "\f666"; } -.fa-hand-holding::before { - content: "\f4bd"; } +.fa-haykal { + --fa: "\f666"; } -.fa-plug-circle-exclamation::before { - content: "\e55d"; } +.fa-sd-card { + --fa: "\f7c2"; } -.fa-link-slash::before { - content: "\f127"; } +.fa-dragon { + --fa: "\f6d5"; } -.fa-chain-broken::before { - content: "\f127"; } +.fa-shoe-prints { + --fa: "\f54b"; } -.fa-chain-slash::before { - content: "\f127"; } +.fa-circle-plus { + --fa: "\f055"; } -.fa-unlink::before { - content: "\f127"; } +.fa-plus-circle { + --fa: "\f055"; } -.fa-clone::before { - content: "\f24d"; } +.fa-face-grin-tongue-wink { + --fa: "\f58b"; } -.fa-person-walking-arrow-loop-left::before { - content: "\e551"; } +.fa-grin-tongue-wink { + --fa: "\f58b"; } -.fa-arrow-up-z-a::before { - content: "\f882"; } +.fa-hand-holding { + --fa: "\f4bd"; } -.fa-sort-alpha-up-alt::before { - content: "\f882"; } +.fa-plug-circle-exclamation { + --fa: "\e55d"; } -.fa-fire-flame-curved::before { - content: "\f7e4"; } +.fa-link-slash { + --fa: "\f127"; } -.fa-fire-alt::before { - content: "\f7e4"; } +.fa-chain-broken { + --fa: "\f127"; } -.fa-tornado::before { - content: "\f76f"; } +.fa-chain-slash { + --fa: "\f127"; } -.fa-file-circle-plus::before { - content: "\e494"; } +.fa-unlink { + --fa: "\f127"; } -.fa-book-quran::before { - content: "\f687"; } +.fa-clone { + --fa: "\f24d"; } -.fa-quran::before { - content: "\f687"; } +.fa-person-walking-arrow-loop-left { + --fa: "\e551"; } -.fa-anchor::before { - content: "\f13d"; } +.fa-arrow-up-z-a { + --fa: "\f882"; } -.fa-border-all::before { - content: "\f84c"; } +.fa-sort-alpha-up-alt { + --fa: "\f882"; } -.fa-face-angry::before { - content: "\f556"; } +.fa-fire-flame-curved { + --fa: "\f7e4"; } -.fa-angry::before { - content: "\f556"; } +.fa-fire-alt { + --fa: "\f7e4"; } -.fa-cookie-bite::before { - content: "\f564"; } +.fa-tornado { + --fa: "\f76f"; } -.fa-arrow-trend-down::before { - content: "\e097"; } +.fa-file-circle-plus { + --fa: "\e494"; } -.fa-rss::before { - content: "\f09e"; } +.fa-book-quran { + --fa: "\f687"; } -.fa-feed::before { - content: "\f09e"; } +.fa-quran { + --fa: "\f687"; } -.fa-draw-polygon::before { - content: "\f5ee"; } +.fa-anchor { + --fa: "\f13d"; } -.fa-scale-balanced::before { - content: "\f24e"; } +.fa-border-all { + --fa: "\f84c"; } -.fa-balance-scale::before { - content: "\f24e"; } +.fa-face-angry { + --fa: "\f556"; } -.fa-gauge-simple-high::before { - content: "\f62a"; } +.fa-angry { + --fa: "\f556"; } -.fa-tachometer::before { - content: "\f62a"; } +.fa-cookie-bite { + --fa: "\f564"; } -.fa-tachometer-fast::before { - content: "\f62a"; } +.fa-arrow-trend-down { + --fa: "\e097"; } -.fa-shower::before { - content: "\f2cc"; } +.fa-rss { + --fa: "\f09e"; } -.fa-desktop::before { - content: "\f390"; } +.fa-feed { + --fa: "\f09e"; } -.fa-desktop-alt::before { - content: "\f390"; } +.fa-draw-polygon { + --fa: "\f5ee"; } -.fa-m::before { - content: "\4d"; } +.fa-scale-balanced { + --fa: "\f24e"; } -.fa-table-list::before { - content: "\f00b"; } +.fa-balance-scale { + --fa: "\f24e"; } -.fa-th-list::before { - content: "\f00b"; } +.fa-gauge-simple-high { + --fa: "\f62a"; } -.fa-comment-sms::before { - content: "\f7cd"; } +.fa-tachometer { + --fa: "\f62a"; } -.fa-sms::before { - content: "\f7cd"; } +.fa-tachometer-fast { + --fa: "\f62a"; } -.fa-book::before { - content: "\f02d"; } +.fa-shower { + --fa: "\f2cc"; } -.fa-user-plus::before { - content: "\f234"; } +.fa-desktop { + --fa: "\f390"; } -.fa-check::before { - content: "\f00c"; } +.fa-desktop-alt { + --fa: "\f390"; } -.fa-battery-three-quarters::before { - content: "\f241"; } +.fa-m { + --fa: "\4d"; } -.fa-battery-4::before { - content: "\f241"; } +.fa-table-list { + --fa: "\f00b"; } -.fa-house-circle-check::before { - content: "\e509"; } +.fa-th-list { + --fa: "\f00b"; } -.fa-angle-left::before { - content: "\f104"; } +.fa-comment-sms { + --fa: "\f7cd"; } -.fa-diagram-successor::before { - content: "\e47a"; } +.fa-sms { + --fa: "\f7cd"; } -.fa-truck-arrow-right::before { - content: "\e58b"; } +.fa-book { + --fa: "\f02d"; } -.fa-arrows-split-up-and-left::before { - content: "\e4bc"; } +.fa-user-plus { + --fa: "\f234"; } -.fa-hand-fist::before { - content: "\f6de"; } +.fa-check { + --fa: "\f00c"; } -.fa-fist-raised::before { - content: "\f6de"; } +.fa-battery-three-quarters { + --fa: "\f241"; } -.fa-cloud-moon::before { - content: "\f6c3"; } +.fa-battery-4 { + --fa: "\f241"; } -.fa-briefcase::before { - content: "\f0b1"; } +.fa-house-circle-check { + --fa: "\e509"; } -.fa-person-falling::before { - content: "\e546"; } +.fa-angle-left { + --fa: "\f104"; } -.fa-image-portrait::before { - content: "\f3e0"; } +.fa-diagram-successor { + --fa: "\e47a"; } -.fa-portrait::before { - content: "\f3e0"; } +.fa-truck-arrow-right { + --fa: "\e58b"; } -.fa-user-tag::before { - content: "\f507"; } +.fa-arrows-split-up-and-left { + --fa: "\e4bc"; } -.fa-rug::before { - content: "\e569"; } +.fa-hand-fist { + --fa: "\f6de"; } -.fa-earth-europe::before { - content: "\f7a2"; } +.fa-fist-raised { + --fa: "\f6de"; } -.fa-globe-europe::before { - content: "\f7a2"; } +.fa-cloud-moon { + --fa: "\f6c3"; } -.fa-cart-flatbed-suitcase::before { - content: "\f59d"; } +.fa-briefcase { + --fa: "\f0b1"; } -.fa-luggage-cart::before { - content: "\f59d"; } +.fa-person-falling { + --fa: "\e546"; } -.fa-rectangle-xmark::before { - content: "\f410"; } +.fa-image-portrait { + --fa: "\f3e0"; } -.fa-rectangle-times::before { - content: "\f410"; } +.fa-portrait { + --fa: "\f3e0"; } -.fa-times-rectangle::before { - content: "\f410"; } +.fa-user-tag { + --fa: "\f507"; } -.fa-window-close::before { - content: "\f410"; } +.fa-rug { + --fa: "\e569"; } -.fa-baht-sign::before { - content: "\e0ac"; } +.fa-earth-europe { + --fa: "\f7a2"; } -.fa-book-open::before { - content: "\f518"; } +.fa-globe-europe { + --fa: "\f7a2"; } -.fa-book-journal-whills::before { - content: "\f66a"; } +.fa-cart-flatbed-suitcase { + --fa: "\f59d"; } -.fa-journal-whills::before { - content: "\f66a"; } +.fa-luggage-cart { + --fa: "\f59d"; } -.fa-handcuffs::before { - content: "\e4f8"; } +.fa-rectangle-xmark { + --fa: "\f410"; } -.fa-triangle-exclamation::before { - content: "\f071"; } +.fa-rectangle-times { + --fa: "\f410"; } -.fa-exclamation-triangle::before { - content: "\f071"; } +.fa-times-rectangle { + --fa: "\f410"; } -.fa-warning::before { - content: "\f071"; } +.fa-window-close { + --fa: "\f410"; } -.fa-database::before { - content: "\f1c0"; } +.fa-baht-sign { + --fa: "\e0ac"; } -.fa-share::before { - content: "\f064"; } +.fa-book-open { + --fa: "\f518"; } -.fa-mail-forward::before { - content: "\f064"; } +.fa-book-journal-whills { + --fa: "\f66a"; } -.fa-bottle-droplet::before { - content: "\e4c4"; } +.fa-journal-whills { + --fa: "\f66a"; } -.fa-mask-face::before { - content: "\e1d7"; } +.fa-handcuffs { + --fa: "\e4f8"; } -.fa-hill-rockslide::before { - content: "\e508"; } +.fa-triangle-exclamation { + --fa: "\f071"; } -.fa-right-left::before { - content: "\f362"; } +.fa-exclamation-triangle { + --fa: "\f071"; } -.fa-exchange-alt::before { - content: "\f362"; } +.fa-warning { + --fa: "\f071"; } -.fa-paper-plane::before { - content: "\f1d8"; } +.fa-database { + --fa: "\f1c0"; } -.fa-road-circle-exclamation::before { - content: "\e565"; } +.fa-share { + --fa: "\f064"; } -.fa-dungeon::before { - content: "\f6d9"; } +.fa-mail-forward { + --fa: "\f064"; } -.fa-align-right::before { - content: "\f038"; } +.fa-bottle-droplet { + --fa: "\e4c4"; } -.fa-money-bill-1-wave::before { - content: "\f53b"; } +.fa-mask-face { + --fa: "\e1d7"; } -.fa-money-bill-wave-alt::before { - content: "\f53b"; } +.fa-hill-rockslide { + --fa: "\e508"; } -.fa-life-ring::before { - content: "\f1cd"; } +.fa-right-left { + --fa: "\f362"; } -.fa-hands::before { - content: "\f2a7"; } +.fa-exchange-alt { + --fa: "\f362"; } -.fa-sign-language::before { - content: "\f2a7"; } +.fa-paper-plane { + --fa: "\f1d8"; } -.fa-signing::before { - content: "\f2a7"; } +.fa-road-circle-exclamation { + --fa: "\e565"; } -.fa-calendar-day::before { - content: "\f783"; } +.fa-dungeon { + --fa: "\f6d9"; } -.fa-water-ladder::before { - content: "\f5c5"; } +.fa-align-right { + --fa: "\f038"; } -.fa-ladder-water::before { - content: "\f5c5"; } +.fa-money-bill-1-wave { + --fa: "\f53b"; } -.fa-swimming-pool::before { - content: "\f5c5"; } +.fa-money-bill-wave-alt { + --fa: "\f53b"; } -.fa-arrows-up-down::before { - content: "\f07d"; } +.fa-life-ring { + --fa: "\f1cd"; } -.fa-arrows-v::before { - content: "\f07d"; } +.fa-hands { + --fa: "\f2a7"; } -.fa-face-grimace::before { - content: "\f57f"; } +.fa-sign-language { + --fa: "\f2a7"; } -.fa-grimace::before { - content: "\f57f"; } +.fa-signing { + --fa: "\f2a7"; } -.fa-wheelchair-move::before { - content: "\e2ce"; } +.fa-calendar-day { + --fa: "\f783"; } -.fa-wheelchair-alt::before { - content: "\e2ce"; } +.fa-water-ladder { + --fa: "\f5c5"; } -.fa-turn-down::before { - content: "\f3be"; } +.fa-ladder-water { + --fa: "\f5c5"; } -.fa-level-down-alt::before { - content: "\f3be"; } +.fa-swimming-pool { + --fa: "\f5c5"; } -.fa-person-walking-arrow-right::before { - content: "\e552"; } +.fa-arrows-up-down { + --fa: "\f07d"; } -.fa-square-envelope::before { - content: "\f199"; } +.fa-arrows-v { + --fa: "\f07d"; } -.fa-envelope-square::before { - content: "\f199"; } +.fa-face-grimace { + --fa: "\f57f"; } -.fa-dice::before { - content: "\f522"; } +.fa-grimace { + --fa: "\f57f"; } -.fa-bowling-ball::before { - content: "\f436"; } +.fa-wheelchair-move { + --fa: "\e2ce"; } -.fa-brain::before { - content: "\f5dc"; } +.fa-wheelchair-alt { + --fa: "\e2ce"; } -.fa-bandage::before { - content: "\f462"; } +.fa-turn-down { + --fa: "\f3be"; } -.fa-band-aid::before { - content: "\f462"; } +.fa-level-down-alt { + --fa: "\f3be"; } -.fa-calendar-minus::before { - content: "\f272"; } +.fa-person-walking-arrow-right { + --fa: "\e552"; } -.fa-circle-xmark::before { - content: "\f057"; } +.fa-square-envelope { + --fa: "\f199"; } -.fa-times-circle::before { - content: "\f057"; } +.fa-envelope-square { + --fa: "\f199"; } -.fa-xmark-circle::before { - content: "\f057"; } +.fa-dice { + --fa: "\f522"; } -.fa-gifts::before { - content: "\f79c"; } +.fa-bowling-ball { + --fa: "\f436"; } -.fa-hotel::before { - content: "\f594"; } +.fa-brain { + --fa: "\f5dc"; } -.fa-earth-asia::before { - content: "\f57e"; } +.fa-bandage { + --fa: "\f462"; } -.fa-globe-asia::before { - content: "\f57e"; } +.fa-band-aid { + --fa: "\f462"; } -.fa-id-card-clip::before { - content: "\f47f"; } +.fa-calendar-minus { + --fa: "\f272"; } -.fa-id-card-alt::before { - content: "\f47f"; } +.fa-circle-xmark { + --fa: "\f057"; } -.fa-magnifying-glass-plus::before { - content: "\f00e"; } +.fa-times-circle { + --fa: "\f057"; } -.fa-search-plus::before { - content: "\f00e"; } +.fa-xmark-circle { + --fa: "\f057"; } -.fa-thumbs-up::before { - content: "\f164"; } +.fa-gifts { + --fa: "\f79c"; } -.fa-user-clock::before { - content: "\f4fd"; } +.fa-hotel { + --fa: "\f594"; } -.fa-hand-dots::before { - content: "\f461"; } +.fa-earth-asia { + --fa: "\f57e"; } -.fa-allergies::before { - content: "\f461"; } +.fa-globe-asia { + --fa: "\f57e"; } -.fa-file-invoice::before { - content: "\f570"; } +.fa-id-card-clip { + --fa: "\f47f"; } -.fa-window-minimize::before { - content: "\f2d1"; } +.fa-id-card-alt { + --fa: "\f47f"; } -.fa-mug-saucer::before { - content: "\f0f4"; } +.fa-magnifying-glass-plus { + --fa: "\f00e"; } -.fa-coffee::before { - content: "\f0f4"; } +.fa-search-plus { + --fa: "\f00e"; } -.fa-brush::before { - content: "\f55d"; } +.fa-thumbs-up { + --fa: "\f164"; } -.fa-mask::before { - content: "\f6fa"; } +.fa-user-clock { + --fa: "\f4fd"; } -.fa-magnifying-glass-minus::before { - content: "\f010"; } +.fa-hand-dots { + --fa: "\f461"; } -.fa-search-minus::before { - content: "\f010"; } +.fa-allergies { + --fa: "\f461"; } -.fa-ruler-vertical::before { - content: "\f548"; } +.fa-file-invoice { + --fa: "\f570"; } -.fa-user-large::before { - content: "\f406"; } +.fa-window-minimize { + --fa: "\f2d1"; } -.fa-user-alt::before { - content: "\f406"; } +.fa-mug-saucer { + --fa: "\f0f4"; } -.fa-train-tram::before { - content: "\e5b4"; } +.fa-coffee { + --fa: "\f0f4"; } -.fa-user-nurse::before { - content: "\f82f"; } +.fa-brush { + --fa: "\f55d"; } -.fa-syringe::before { - content: "\f48e"; } +.fa-file-half-dashed { + --fa: "\e698"; } -.fa-cloud-sun::before { - content: "\f6c4"; } +.fa-mask { + --fa: "\f6fa"; } -.fa-stopwatch-20::before { - content: "\e06f"; } +.fa-magnifying-glass-minus { + --fa: "\f010"; } -.fa-square-full::before { - content: "\f45c"; } +.fa-search-minus { + --fa: "\f010"; } -.fa-magnet::before { - content: "\f076"; } +.fa-ruler-vertical { + --fa: "\f548"; } -.fa-jar::before { - content: "\e516"; } +.fa-user-large { + --fa: "\f406"; } -.fa-note-sticky::before { - content: "\f249"; } +.fa-user-alt { + --fa: "\f406"; } -.fa-sticky-note::before { - content: "\f249"; } +.fa-train-tram { + --fa: "\e5b4"; } -.fa-bug-slash::before { - content: "\e490"; } +.fa-user-nurse { + --fa: "\f82f"; } -.fa-arrow-up-from-water-pump::before { - content: "\e4b6"; } +.fa-syringe { + --fa: "\f48e"; } -.fa-bone::before { - content: "\f5d7"; } +.fa-cloud-sun { + --fa: "\f6c4"; } -.fa-user-injured::before { - content: "\f728"; } +.fa-stopwatch-20 { + --fa: "\e06f"; } -.fa-face-sad-tear::before { - content: "\f5b4"; } +.fa-square-full { + --fa: "\f45c"; } -.fa-sad-tear::before { - content: "\f5b4"; } +.fa-magnet { + --fa: "\f076"; } -.fa-plane::before { - content: "\f072"; } +.fa-jar { + --fa: "\e516"; } -.fa-tent-arrows-down::before { - content: "\e581"; } +.fa-note-sticky { + --fa: "\f249"; } -.fa-exclamation::before { - content: "\21"; } +.fa-sticky-note { + --fa: "\f249"; } -.fa-arrows-spin::before { - content: "\e4bb"; } +.fa-bug-slash { + --fa: "\e490"; } -.fa-print::before { - content: "\f02f"; } +.fa-arrow-up-from-water-pump { + --fa: "\e4b6"; } -.fa-turkish-lira-sign::before { - content: "\e2bb"; } +.fa-bone { + --fa: "\f5d7"; } -.fa-try::before { - content: "\e2bb"; } +.fa-table-cells-row-unlock { + --fa: "\e691"; } -.fa-turkish-lira::before { - content: "\e2bb"; } +.fa-user-injured { + --fa: "\f728"; } -.fa-dollar-sign::before { - content: "\24"; } +.fa-face-sad-tear { + --fa: "\f5b4"; } -.fa-dollar::before { - content: "\24"; } +.fa-sad-tear { + --fa: "\f5b4"; } -.fa-usd::before { - content: "\24"; } +.fa-plane { + --fa: "\f072"; } -.fa-x::before { - content: "\58"; } +.fa-tent-arrows-down { + --fa: "\e581"; } -.fa-magnifying-glass-dollar::before { - content: "\f688"; } +.fa-exclamation { + --fa: "\21"; } -.fa-search-dollar::before { - content: "\f688"; } +.fa-arrows-spin { + --fa: "\e4bb"; } -.fa-users-gear::before { - content: "\f509"; } +.fa-print { + --fa: "\f02f"; } -.fa-users-cog::before { - content: "\f509"; } +.fa-turkish-lira-sign { + --fa: "\e2bb"; } -.fa-person-military-pointing::before { - content: "\e54a"; } +.fa-try { + --fa: "\e2bb"; } -.fa-building-columns::before { - content: "\f19c"; } +.fa-turkish-lira { + --fa: "\e2bb"; } -.fa-bank::before { - content: "\f19c"; } +.fa-dollar-sign { + --fa: "\24"; } -.fa-institution::before { - content: "\f19c"; } +.fa-dollar { + --fa: "\24"; } -.fa-museum::before { - content: "\f19c"; } +.fa-usd { + --fa: "\24"; } -.fa-university::before { - content: "\f19c"; } +.fa-x { + --fa: "\58"; } -.fa-umbrella::before { - content: "\f0e9"; } +.fa-magnifying-glass-dollar { + --fa: "\f688"; } -.fa-trowel::before { - content: "\e589"; } +.fa-search-dollar { + --fa: "\f688"; } -.fa-d::before { - content: "\44"; } +.fa-users-gear { + --fa: "\f509"; } -.fa-stapler::before { - content: "\e5af"; } +.fa-users-cog { + --fa: "\f509"; } -.fa-masks-theater::before { - content: "\f630"; } +.fa-person-military-pointing { + --fa: "\e54a"; } -.fa-theater-masks::before { - content: "\f630"; } +.fa-building-columns { + --fa: "\f19c"; } -.fa-kip-sign::before { - content: "\e1c4"; } +.fa-bank { + --fa: "\f19c"; } -.fa-hand-point-left::before { - content: "\f0a5"; } +.fa-institution { + --fa: "\f19c"; } -.fa-handshake-simple::before { - content: "\f4c6"; } +.fa-museum { + --fa: "\f19c"; } -.fa-handshake-alt::before { - content: "\f4c6"; } +.fa-university { + --fa: "\f19c"; } -.fa-jet-fighter::before { - content: "\f0fb"; } +.fa-umbrella { + --fa: "\f0e9"; } -.fa-fighter-jet::before { - content: "\f0fb"; } +.fa-trowel { + --fa: "\e589"; } -.fa-square-share-nodes::before { - content: "\f1e1"; } +.fa-d { + --fa: "\44"; } -.fa-share-alt-square::before { - content: "\f1e1"; } +.fa-stapler { + --fa: "\e5af"; } -.fa-barcode::before { - content: "\f02a"; } +.fa-masks-theater { + --fa: "\f630"; } -.fa-plus-minus::before { - content: "\e43c"; } +.fa-theater-masks { + --fa: "\f630"; } -.fa-video::before { - content: "\f03d"; } +.fa-kip-sign { + --fa: "\e1c4"; } -.fa-video-camera::before { - content: "\f03d"; } +.fa-hand-point-left { + --fa: "\f0a5"; } -.fa-graduation-cap::before { - content: "\f19d"; } +.fa-handshake-simple { + --fa: "\f4c6"; } -.fa-mortar-board::before { - content: "\f19d"; } +.fa-handshake-alt { + --fa: "\f4c6"; } -.fa-hand-holding-medical::before { - content: "\e05c"; } +.fa-jet-fighter { + --fa: "\f0fb"; } -.fa-person-circle-check::before { - content: "\e53e"; } +.fa-fighter-jet { + --fa: "\f0fb"; } -.fa-turn-up::before { - content: "\f3bf"; } +.fa-square-share-nodes { + --fa: "\f1e1"; } -.fa-level-up-alt::before { - content: "\f3bf"; } +.fa-share-alt-square { + --fa: "\f1e1"; } + +.fa-barcode { + --fa: "\f02a"; } + +.fa-plus-minus { + --fa: "\e43c"; } + +.fa-video { + --fa: "\f03d"; } + +.fa-video-camera { + --fa: "\f03d"; } + +.fa-graduation-cap { + --fa: "\f19d"; } + +.fa-mortar-board { + --fa: "\f19d"; } + +.fa-hand-holding-medical { + --fa: "\e05c"; } + +.fa-person-circle-check { + --fa: "\e53e"; } + +.fa-turn-up { + --fa: "\f3bf"; } + +.fa-level-up-alt { + --fa: "\f3bf"; } .sr-only, .fa-sr-only { @@ -6388,1580 +6256,1595 @@ readers do not read off random characters that represent icons */ .fa-brands { font-weight: 400; } -.fa-monero:before { - content: "\f3d0"; } +.fa-monero { + --fa: "\f3d0"; } + +.fa-hooli { + --fa: "\f427"; } + +.fa-yelp { + --fa: "\f1e9"; } + +.fa-cc-visa { + --fa: "\f1f0"; } + +.fa-lastfm { + --fa: "\f202"; } + +.fa-shopware { + --fa: "\f5b5"; } -.fa-hooli:before { - content: "\f427"; } +.fa-creative-commons-nc { + --fa: "\f4e8"; } -.fa-yelp:before { - content: "\f1e9"; } +.fa-aws { + --fa: "\f375"; } -.fa-cc-visa:before { - content: "\f1f0"; } +.fa-redhat { + --fa: "\f7bc"; } -.fa-lastfm:before { - content: "\f202"; } +.fa-yoast { + --fa: "\f2b1"; } -.fa-shopware:before { - content: "\f5b5"; } +.fa-cloudflare { + --fa: "\e07d"; } -.fa-creative-commons-nc:before { - content: "\f4e8"; } +.fa-ups { + --fa: "\f7e0"; } -.fa-aws:before { - content: "\f375"; } +.fa-pixiv { + --fa: "\e640"; } -.fa-redhat:before { - content: "\f7bc"; } +.fa-wpexplorer { + --fa: "\f2de"; } -.fa-yoast:before { - content: "\f2b1"; } +.fa-dyalog { + --fa: "\f399"; } -.fa-cloudflare:before { - content: "\e07d"; } +.fa-bity { + --fa: "\f37a"; } -.fa-ups:before { - content: "\f7e0"; } +.fa-stackpath { + --fa: "\f842"; } -.fa-pixiv:before { - content: "\e640"; } +.fa-buysellads { + --fa: "\f20d"; } -.fa-wpexplorer:before { - content: "\f2de"; } +.fa-first-order { + --fa: "\f2b0"; } -.fa-dyalog:before { - content: "\f399"; } +.fa-modx { + --fa: "\f285"; } -.fa-bity:before { - content: "\f37a"; } +.fa-guilded { + --fa: "\e07e"; } -.fa-stackpath:before { - content: "\f842"; } +.fa-vnv { + --fa: "\f40b"; } -.fa-buysellads:before { - content: "\f20d"; } +.fa-square-js { + --fa: "\f3b9"; } -.fa-first-order:before { - content: "\f2b0"; } +.fa-js-square { + --fa: "\f3b9"; } -.fa-modx:before { - content: "\f285"; } +.fa-microsoft { + --fa: "\f3ca"; } -.fa-guilded:before { - content: "\e07e"; } +.fa-qq { + --fa: "\f1d6"; } -.fa-vnv:before { - content: "\f40b"; } +.fa-orcid { + --fa: "\f8d2"; } -.fa-square-js:before { - content: "\f3b9"; } +.fa-java { + --fa: "\f4e4"; } -.fa-js-square:before { - content: "\f3b9"; } +.fa-invision { + --fa: "\f7b0"; } -.fa-microsoft:before { - content: "\f3ca"; } +.fa-creative-commons-pd-alt { + --fa: "\f4ed"; } -.fa-qq:before { - content: "\f1d6"; } +.fa-centercode { + --fa: "\f380"; } -.fa-orcid:before { - content: "\f8d2"; } +.fa-glide-g { + --fa: "\f2a6"; } -.fa-java:before { - content: "\f4e4"; } +.fa-drupal { + --fa: "\f1a9"; } -.fa-invision:before { - content: "\f7b0"; } +.fa-jxl { + --fa: "\e67b"; } -.fa-creative-commons-pd-alt:before { - content: "\f4ed"; } +.fa-dart-lang { + --fa: "\e693"; } -.fa-centercode:before { - content: "\f380"; } +.fa-hire-a-helper { + --fa: "\f3b0"; } -.fa-glide-g:before { - content: "\f2a6"; } +.fa-creative-commons-by { + --fa: "\f4e7"; } -.fa-drupal:before { - content: "\f1a9"; } +.fa-unity { + --fa: "\e049"; } -.fa-jxl:before { - content: "\e67b"; } +.fa-whmcs { + --fa: "\f40d"; } -.fa-hire-a-helper:before { - content: "\f3b0"; } +.fa-rocketchat { + --fa: "\f3e8"; } -.fa-creative-commons-by:before { - content: "\f4e7"; } +.fa-vk { + --fa: "\f189"; } -.fa-unity:before { - content: "\e049"; } +.fa-untappd { + --fa: "\f405"; } -.fa-whmcs:before { - content: "\f40d"; } +.fa-mailchimp { + --fa: "\f59e"; } -.fa-rocketchat:before { - content: "\f3e8"; } +.fa-css3-alt { + --fa: "\f38b"; } -.fa-vk:before { - content: "\f189"; } +.fa-square-reddit { + --fa: "\f1a2"; } -.fa-untappd:before { - content: "\f405"; } +.fa-reddit-square { + --fa: "\f1a2"; } -.fa-mailchimp:before { - content: "\f59e"; } +.fa-vimeo-v { + --fa: "\f27d"; } -.fa-css3-alt:before { - content: "\f38b"; } +.fa-contao { + --fa: "\f26d"; } -.fa-square-reddit:before { - content: "\f1a2"; } +.fa-square-font-awesome { + --fa: "\e5ad"; } -.fa-reddit-square:before { - content: "\f1a2"; } +.fa-deskpro { + --fa: "\f38f"; } -.fa-vimeo-v:before { - content: "\f27d"; } +.fa-brave { + --fa: "\e63c"; } -.fa-contao:before { - content: "\f26d"; } +.fa-sistrix { + --fa: "\f3ee"; } -.fa-square-font-awesome:before { - content: "\e5ad"; } +.fa-square-instagram { + --fa: "\e055"; } -.fa-deskpro:before { - content: "\f38f"; } +.fa-instagram-square { + --fa: "\e055"; } -.fa-brave:before { - content: "\e63c"; } +.fa-battle-net { + --fa: "\f835"; } -.fa-sistrix:before { - content: "\f3ee"; } +.fa-the-red-yeti { + --fa: "\f69d"; } -.fa-square-instagram:before { - content: "\e055"; } +.fa-square-hacker-news { + --fa: "\f3af"; } -.fa-instagram-square:before { - content: "\e055"; } +.fa-hacker-news-square { + --fa: "\f3af"; } -.fa-battle-net:before { - content: "\f835"; } +.fa-edge { + --fa: "\f282"; } -.fa-the-red-yeti:before { - content: "\f69d"; } +.fa-threads { + --fa: "\e618"; } -.fa-square-hacker-news:before { - content: "\f3af"; } +.fa-napster { + --fa: "\f3d2"; } -.fa-hacker-news-square:before { - content: "\f3af"; } +.fa-square-snapchat { + --fa: "\f2ad"; } -.fa-edge:before { - content: "\f282"; } +.fa-snapchat-square { + --fa: "\f2ad"; } -.fa-threads:before { - content: "\e618"; } +.fa-google-plus-g { + --fa: "\f0d5"; } -.fa-napster:before { - content: "\f3d2"; } +.fa-artstation { + --fa: "\f77a"; } -.fa-square-snapchat:before { - content: "\f2ad"; } +.fa-markdown { + --fa: "\f60f"; } -.fa-snapchat-square:before { - content: "\f2ad"; } +.fa-sourcetree { + --fa: "\f7d3"; } -.fa-google-plus-g:before { - content: "\f0d5"; } +.fa-google-plus { + --fa: "\f2b3"; } -.fa-artstation:before { - content: "\f77a"; } +.fa-diaspora { + --fa: "\f791"; } -.fa-markdown:before { - content: "\f60f"; } +.fa-foursquare { + --fa: "\f180"; } -.fa-sourcetree:before { - content: "\f7d3"; } +.fa-stack-overflow { + --fa: "\f16c"; } -.fa-google-plus:before { - content: "\f2b3"; } +.fa-github-alt { + --fa: "\f113"; } -.fa-diaspora:before { - content: "\f791"; } +.fa-phoenix-squadron { + --fa: "\f511"; } -.fa-foursquare:before { - content: "\f180"; } +.fa-pagelines { + --fa: "\f18c"; } -.fa-stack-overflow:before { - content: "\f16c"; } +.fa-algolia { + --fa: "\f36c"; } -.fa-github-alt:before { - content: "\f113"; } +.fa-red-river { + --fa: "\f3e3"; } -.fa-phoenix-squadron:before { - content: "\f511"; } +.fa-creative-commons-sa { + --fa: "\f4ef"; } -.fa-pagelines:before { - content: "\f18c"; } +.fa-safari { + --fa: "\f267"; } -.fa-algolia:before { - content: "\f36c"; } +.fa-google { + --fa: "\f1a0"; } -.fa-red-river:before { - content: "\f3e3"; } +.fa-square-font-awesome-stroke { + --fa: "\f35c"; } -.fa-creative-commons-sa:before { - content: "\f4ef"; } +.fa-font-awesome-alt { + --fa: "\f35c"; } -.fa-safari:before { - content: "\f267"; } +.fa-atlassian { + --fa: "\f77b"; } -.fa-google:before { - content: "\f1a0"; } +.fa-linkedin-in { + --fa: "\f0e1"; } -.fa-square-font-awesome-stroke:before { - content: "\f35c"; } +.fa-digital-ocean { + --fa: "\f391"; } -.fa-font-awesome-alt:before { - content: "\f35c"; } +.fa-nimblr { + --fa: "\f5a8"; } -.fa-atlassian:before { - content: "\f77b"; } +.fa-chromecast { + --fa: "\f838"; } -.fa-linkedin-in:before { - content: "\f0e1"; } +.fa-evernote { + --fa: "\f839"; } -.fa-digital-ocean:before { - content: "\f391"; } +.fa-hacker-news { + --fa: "\f1d4"; } -.fa-nimblr:before { - content: "\f5a8"; } +.fa-creative-commons-sampling { + --fa: "\f4f0"; } -.fa-chromecast:before { - content: "\f838"; } +.fa-adversal { + --fa: "\f36a"; } -.fa-evernote:before { - content: "\f839"; } +.fa-creative-commons { + --fa: "\f25e"; } -.fa-hacker-news:before { - content: "\f1d4"; } +.fa-watchman-monitoring { + --fa: "\e087"; } -.fa-creative-commons-sampling:before { - content: "\f4f0"; } +.fa-fonticons { + --fa: "\f280"; } -.fa-adversal:before { - content: "\f36a"; } +.fa-weixin { + --fa: "\f1d7"; } -.fa-creative-commons:before { - content: "\f25e"; } +.fa-shirtsinbulk { + --fa: "\f214"; } -.fa-watchman-monitoring:before { - content: "\e087"; } +.fa-codepen { + --fa: "\f1cb"; } -.fa-fonticons:before { - content: "\f280"; } +.fa-git-alt { + --fa: "\f841"; } -.fa-weixin:before { - content: "\f1d7"; } +.fa-lyft { + --fa: "\f3c3"; } -.fa-shirtsinbulk:before { - content: "\f214"; } +.fa-rev { + --fa: "\f5b2"; } -.fa-codepen:before { - content: "\f1cb"; } +.fa-windows { + --fa: "\f17a"; } -.fa-git-alt:before { - content: "\f841"; } +.fa-wizards-of-the-coast { + --fa: "\f730"; } -.fa-lyft:before { - content: "\f3c3"; } +.fa-square-viadeo { + --fa: "\f2aa"; } -.fa-rev:before { - content: "\f5b2"; } +.fa-viadeo-square { + --fa: "\f2aa"; } -.fa-windows:before { - content: "\f17a"; } +.fa-meetup { + --fa: "\f2e0"; } -.fa-wizards-of-the-coast:before { - content: "\f730"; } +.fa-centos { + --fa: "\f789"; } -.fa-square-viadeo:before { - content: "\f2aa"; } +.fa-adn { + --fa: "\f170"; } -.fa-viadeo-square:before { - content: "\f2aa"; } +.fa-cloudsmith { + --fa: "\f384"; } -.fa-meetup:before { - content: "\f2e0"; } +.fa-opensuse { + --fa: "\e62b"; } -.fa-centos:before { - content: "\f789"; } +.fa-pied-piper-alt { + --fa: "\f1a8"; } -.fa-adn:before { - content: "\f170"; } +.fa-square-dribbble { + --fa: "\f397"; } -.fa-cloudsmith:before { - content: "\f384"; } +.fa-dribbble-square { + --fa: "\f397"; } -.fa-opensuse:before { - content: "\e62b"; } +.fa-codiepie { + --fa: "\f284"; } -.fa-pied-piper-alt:before { - content: "\f1a8"; } +.fa-node { + --fa: "\f419"; } -.fa-square-dribbble:before { - content: "\f397"; } +.fa-mix { + --fa: "\f3cb"; } -.fa-dribbble-square:before { - content: "\f397"; } +.fa-steam { + --fa: "\f1b6"; } -.fa-codiepie:before { - content: "\f284"; } +.fa-cc-apple-pay { + --fa: "\f416"; } -.fa-node:before { - content: "\f419"; } +.fa-scribd { + --fa: "\f28a"; } -.fa-mix:before { - content: "\f3cb"; } +.fa-debian { + --fa: "\e60b"; } -.fa-steam:before { - content: "\f1b6"; } +.fa-openid { + --fa: "\f19b"; } -.fa-cc-apple-pay:before { - content: "\f416"; } +.fa-instalod { + --fa: "\e081"; } -.fa-scribd:before { - content: "\f28a"; } +.fa-files-pinwheel { + --fa: "\e69f"; } -.fa-debian:before { - content: "\e60b"; } +.fa-expeditedssl { + --fa: "\f23e"; } -.fa-openid:before { - content: "\f19b"; } +.fa-sellcast { + --fa: "\f2da"; } -.fa-instalod:before { - content: "\e081"; } +.fa-square-twitter { + --fa: "\f081"; } -.fa-expeditedssl:before { - content: "\f23e"; } +.fa-twitter-square { + --fa: "\f081"; } -.fa-sellcast:before { - content: "\f2da"; } +.fa-r-project { + --fa: "\f4f7"; } -.fa-square-twitter:before { - content: "\f081"; } +.fa-delicious { + --fa: "\f1a5"; } -.fa-twitter-square:before { - content: "\f081"; } +.fa-freebsd { + --fa: "\f3a4"; } -.fa-r-project:before { - content: "\f4f7"; } +.fa-vuejs { + --fa: "\f41f"; } -.fa-delicious:before { - content: "\f1a5"; } +.fa-accusoft { + --fa: "\f369"; } -.fa-freebsd:before { - content: "\f3a4"; } +.fa-ioxhost { + --fa: "\f208"; } -.fa-vuejs:before { - content: "\f41f"; } +.fa-fonticons-fi { + --fa: "\f3a2"; } -.fa-accusoft:before { - content: "\f369"; } +.fa-app-store { + --fa: "\f36f"; } -.fa-ioxhost:before { - content: "\f208"; } +.fa-cc-mastercard { + --fa: "\f1f1"; } -.fa-fonticons-fi:before { - content: "\f3a2"; } +.fa-itunes-note { + --fa: "\f3b5"; } -.fa-app-store:before { - content: "\f36f"; } +.fa-golang { + --fa: "\e40f"; } -.fa-cc-mastercard:before { - content: "\f1f1"; } +.fa-kickstarter { + --fa: "\f3bb"; } -.fa-itunes-note:before { - content: "\f3b5"; } +.fa-square-kickstarter { + --fa: "\f3bb"; } -.fa-golang:before { - content: "\e40f"; } +.fa-grav { + --fa: "\f2d6"; } -.fa-kickstarter:before { - content: "\f3bb"; } +.fa-weibo { + --fa: "\f18a"; } -.fa-square-kickstarter:before { - content: "\f3bb"; } +.fa-uncharted { + --fa: "\e084"; } -.fa-grav:before { - content: "\f2d6"; } +.fa-firstdraft { + --fa: "\f3a1"; } -.fa-weibo:before { - content: "\f18a"; } +.fa-square-youtube { + --fa: "\f431"; } -.fa-uncharted:before { - content: "\e084"; } +.fa-youtube-square { + --fa: "\f431"; } -.fa-firstdraft:before { - content: "\f3a1"; } +.fa-wikipedia-w { + --fa: "\f266"; } -.fa-square-youtube:before { - content: "\f431"; } +.fa-wpressr { + --fa: "\f3e4"; } -.fa-youtube-square:before { - content: "\f431"; } +.fa-rendact { + --fa: "\f3e4"; } -.fa-wikipedia-w:before { - content: "\f266"; } +.fa-angellist { + --fa: "\f209"; } -.fa-wpressr:before { - content: "\f3e4"; } +.fa-galactic-republic { + --fa: "\f50c"; } -.fa-rendact:before { - content: "\f3e4"; } +.fa-nfc-directional { + --fa: "\e530"; } -.fa-angellist:before { - content: "\f209"; } +.fa-skype { + --fa: "\f17e"; } -.fa-galactic-republic:before { - content: "\f50c"; } +.fa-joget { + --fa: "\f3b7"; } -.fa-nfc-directional:before { - content: "\e530"; } +.fa-fedora { + --fa: "\f798"; } -.fa-skype:before { - content: "\f17e"; } +.fa-stripe-s { + --fa: "\f42a"; } -.fa-joget:before { - content: "\f3b7"; } +.fa-meta { + --fa: "\e49b"; } -.fa-fedora:before { - content: "\f798"; } +.fa-laravel { + --fa: "\f3bd"; } -.fa-stripe-s:before { - content: "\f42a"; } +.fa-hotjar { + --fa: "\f3b1"; } -.fa-meta:before { - content: "\e49b"; } +.fa-bluetooth-b { + --fa: "\f294"; } -.fa-laravel:before { - content: "\f3bd"; } +.fa-square-letterboxd { + --fa: "\e62e"; } -.fa-hotjar:before { - content: "\f3b1"; } +.fa-sticker-mule { + --fa: "\f3f7"; } -.fa-bluetooth-b:before { - content: "\f294"; } +.fa-creative-commons-zero { + --fa: "\f4f3"; } -.fa-square-letterboxd:before { - content: "\e62e"; } +.fa-hips { + --fa: "\f452"; } -.fa-sticker-mule:before { - content: "\f3f7"; } +.fa-css { + --fa: "\e6a2"; } -.fa-creative-commons-zero:before { - content: "\f4f3"; } +.fa-behance { + --fa: "\f1b4"; } -.fa-hips:before { - content: "\f452"; } +.fa-reddit { + --fa: "\f1a1"; } -.fa-behance:before { - content: "\f1b4"; } +.fa-discord { + --fa: "\f392"; } -.fa-reddit:before { - content: "\f1a1"; } +.fa-chrome { + --fa: "\f268"; } -.fa-discord:before { - content: "\f392"; } +.fa-app-store-ios { + --fa: "\f370"; } -.fa-chrome:before { - content: "\f268"; } +.fa-cc-discover { + --fa: "\f1f2"; } -.fa-app-store-ios:before { - content: "\f370"; } +.fa-wpbeginner { + --fa: "\f297"; } -.fa-cc-discover:before { - content: "\f1f2"; } +.fa-confluence { + --fa: "\f78d"; } -.fa-wpbeginner:before { - content: "\f297"; } +.fa-shoelace { + --fa: "\e60c"; } -.fa-confluence:before { - content: "\f78d"; } +.fa-mdb { + --fa: "\f8ca"; } -.fa-shoelace:before { - content: "\e60c"; } +.fa-dochub { + --fa: "\f394"; } -.fa-mdb:before { - content: "\f8ca"; } +.fa-accessible-icon { + --fa: "\f368"; } -.fa-dochub:before { - content: "\f394"; } +.fa-ebay { + --fa: "\f4f4"; } -.fa-accessible-icon:before { - content: "\f368"; } +.fa-amazon { + --fa: "\f270"; } -.fa-ebay:before { - content: "\f4f4"; } +.fa-unsplash { + --fa: "\e07c"; } -.fa-amazon:before { - content: "\f270"; } +.fa-yarn { + --fa: "\f7e3"; } -.fa-unsplash:before { - content: "\e07c"; } +.fa-square-steam { + --fa: "\f1b7"; } -.fa-yarn:before { - content: "\f7e3"; } +.fa-steam-square { + --fa: "\f1b7"; } -.fa-square-steam:before { - content: "\f1b7"; } +.fa-500px { + --fa: "\f26e"; } -.fa-steam-square:before { - content: "\f1b7"; } +.fa-square-vimeo { + --fa: "\f194"; } -.fa-500px:before { - content: "\f26e"; } +.fa-vimeo-square { + --fa: "\f194"; } -.fa-square-vimeo:before { - content: "\f194"; } +.fa-asymmetrik { + --fa: "\f372"; } -.fa-vimeo-square:before { - content: "\f194"; } +.fa-font-awesome { + --fa: "\f2b4"; } -.fa-asymmetrik:before { - content: "\f372"; } +.fa-font-awesome-flag { + --fa: "\f2b4"; } -.fa-font-awesome:before { - content: "\f2b4"; } +.fa-font-awesome-logo-full { + --fa: "\f2b4"; } -.fa-font-awesome-flag:before { - content: "\f2b4"; } +.fa-gratipay { + --fa: "\f184"; } -.fa-font-awesome-logo-full:before { - content: "\f2b4"; } +.fa-apple { + --fa: "\f179"; } -.fa-gratipay:before { - content: "\f184"; } +.fa-hive { + --fa: "\e07f"; } -.fa-apple:before { - content: "\f179"; } +.fa-gitkraken { + --fa: "\f3a6"; } -.fa-hive:before { - content: "\e07f"; } +.fa-keybase { + --fa: "\f4f5"; } -.fa-gitkraken:before { - content: "\f3a6"; } +.fa-apple-pay { + --fa: "\f415"; } -.fa-keybase:before { - content: "\f4f5"; } +.fa-padlet { + --fa: "\e4a0"; } -.fa-apple-pay:before { - content: "\f415"; } +.fa-amazon-pay { + --fa: "\f42c"; } -.fa-padlet:before { - content: "\e4a0"; } +.fa-square-github { + --fa: "\f092"; } -.fa-amazon-pay:before { - content: "\f42c"; } +.fa-github-square { + --fa: "\f092"; } -.fa-square-github:before { - content: "\f092"; } +.fa-stumbleupon { + --fa: "\f1a4"; } -.fa-github-square:before { - content: "\f092"; } +.fa-fedex { + --fa: "\f797"; } -.fa-stumbleupon:before { - content: "\f1a4"; } +.fa-phoenix-framework { + --fa: "\f3dc"; } -.fa-fedex:before { - content: "\f797"; } +.fa-shopify { + --fa: "\e057"; } -.fa-phoenix-framework:before { - content: "\f3dc"; } +.fa-neos { + --fa: "\f612"; } -.fa-shopify:before { - content: "\e057"; } +.fa-square-threads { + --fa: "\e619"; } -.fa-neos:before { - content: "\f612"; } +.fa-hackerrank { + --fa: "\f5f7"; } -.fa-square-threads:before { - content: "\e619"; } +.fa-researchgate { + --fa: "\f4f8"; } -.fa-hackerrank:before { - content: "\f5f7"; } +.fa-swift { + --fa: "\f8e1"; } -.fa-researchgate:before { - content: "\f4f8"; } +.fa-angular { + --fa: "\f420"; } -.fa-swift:before { - content: "\f8e1"; } +.fa-speakap { + --fa: "\f3f3"; } -.fa-angular:before { - content: "\f420"; } +.fa-angrycreative { + --fa: "\f36e"; } -.fa-speakap:before { - content: "\f3f3"; } +.fa-y-combinator { + --fa: "\f23b"; } -.fa-angrycreative:before { - content: "\f36e"; } +.fa-empire { + --fa: "\f1d1"; } -.fa-y-combinator:before { - content: "\f23b"; } +.fa-envira { + --fa: "\f299"; } -.fa-empire:before { - content: "\f1d1"; } +.fa-google-scholar { + --fa: "\e63b"; } -.fa-envira:before { - content: "\f299"; } +.fa-square-gitlab { + --fa: "\e5ae"; } -.fa-google-scholar:before { - content: "\e63b"; } +.fa-gitlab-square { + --fa: "\e5ae"; } -.fa-square-gitlab:before { - content: "\e5ae"; } +.fa-studiovinari { + --fa: "\f3f8"; } -.fa-gitlab-square:before { - content: "\e5ae"; } +.fa-pied-piper { + --fa: "\f2ae"; } -.fa-studiovinari:before { - content: "\f3f8"; } +.fa-wordpress { + --fa: "\f19a"; } -.fa-pied-piper:before { - content: "\f2ae"; } +.fa-product-hunt { + --fa: "\f288"; } -.fa-wordpress:before { - content: "\f19a"; } +.fa-firefox { + --fa: "\f269"; } -.fa-product-hunt:before { - content: "\f288"; } +.fa-linode { + --fa: "\f2b8"; } -.fa-firefox:before { - content: "\f269"; } +.fa-goodreads { + --fa: "\f3a8"; } -.fa-linode:before { - content: "\f2b8"; } +.fa-square-odnoklassniki { + --fa: "\f264"; } -.fa-goodreads:before { - content: "\f3a8"; } +.fa-odnoklassniki-square { + --fa: "\f264"; } -.fa-square-odnoklassniki:before { - content: "\f264"; } +.fa-jsfiddle { + --fa: "\f1cc"; } -.fa-odnoklassniki-square:before { - content: "\f264"; } +.fa-sith { + --fa: "\f512"; } -.fa-jsfiddle:before { - content: "\f1cc"; } +.fa-themeisle { + --fa: "\f2b2"; } -.fa-sith:before { - content: "\f512"; } +.fa-page4 { + --fa: "\f3d7"; } -.fa-themeisle:before { - content: "\f2b2"; } +.fa-hashnode { + --fa: "\e499"; } -.fa-page4:before { - content: "\f3d7"; } +.fa-react { + --fa: "\f41b"; } -.fa-hashnode:before { - content: "\e499"; } +.fa-cc-paypal { + --fa: "\f1f4"; } -.fa-react:before { - content: "\f41b"; } +.fa-squarespace { + --fa: "\f5be"; } -.fa-cc-paypal:before { - content: "\f1f4"; } +.fa-cc-stripe { + --fa: "\f1f5"; } -.fa-squarespace:before { - content: "\f5be"; } +.fa-creative-commons-share { + --fa: "\f4f2"; } -.fa-cc-stripe:before { - content: "\f1f5"; } +.fa-bitcoin { + --fa: "\f379"; } -.fa-creative-commons-share:before { - content: "\f4f2"; } +.fa-keycdn { + --fa: "\f3ba"; } -.fa-bitcoin:before { - content: "\f379"; } +.fa-opera { + --fa: "\f26a"; } -.fa-keycdn:before { - content: "\f3ba"; } +.fa-itch-io { + --fa: "\f83a"; } -.fa-opera:before { - content: "\f26a"; } +.fa-umbraco { + --fa: "\f8e8"; } -.fa-itch-io:before { - content: "\f83a"; } +.fa-galactic-senate { + --fa: "\f50d"; } -.fa-umbraco:before { - content: "\f8e8"; } +.fa-ubuntu { + --fa: "\f7df"; } -.fa-galactic-senate:before { - content: "\f50d"; } +.fa-draft2digital { + --fa: "\f396"; } -.fa-ubuntu:before { - content: "\f7df"; } +.fa-stripe { + --fa: "\f429"; } -.fa-draft2digital:before { - content: "\f396"; } +.fa-houzz { + --fa: "\f27c"; } -.fa-stripe:before { - content: "\f429"; } +.fa-gg { + --fa: "\f260"; } -.fa-houzz:before { - content: "\f27c"; } +.fa-dhl { + --fa: "\f790"; } -.fa-gg:before { - content: "\f260"; } +.fa-square-pinterest { + --fa: "\f0d3"; } -.fa-dhl:before { - content: "\f790"; } +.fa-pinterest-square { + --fa: "\f0d3"; } -.fa-square-pinterest:before { - content: "\f0d3"; } +.fa-xing { + --fa: "\f168"; } -.fa-pinterest-square:before { - content: "\f0d3"; } +.fa-blackberry { + --fa: "\f37b"; } -.fa-xing:before { - content: "\f168"; } +.fa-creative-commons-pd { + --fa: "\f4ec"; } -.fa-blackberry:before { - content: "\f37b"; } +.fa-playstation { + --fa: "\f3df"; } -.fa-creative-commons-pd:before { - content: "\f4ec"; } +.fa-quinscape { + --fa: "\f459"; } -.fa-playstation:before { - content: "\f3df"; } +.fa-less { + --fa: "\f41d"; } -.fa-quinscape:before { - content: "\f459"; } +.fa-blogger-b { + --fa: "\f37d"; } -.fa-less:before { - content: "\f41d"; } +.fa-opencart { + --fa: "\f23d"; } -.fa-blogger-b:before { - content: "\f37d"; } +.fa-vine { + --fa: "\f1ca"; } -.fa-opencart:before { - content: "\f23d"; } +.fa-signal-messenger { + --fa: "\e663"; } -.fa-vine:before { - content: "\f1ca"; } +.fa-paypal { + --fa: "\f1ed"; } -.fa-signal-messenger:before { - content: "\e663"; } +.fa-gitlab { + --fa: "\f296"; } -.fa-paypal:before { - content: "\f1ed"; } +.fa-typo3 { + --fa: "\f42b"; } -.fa-gitlab:before { - content: "\f296"; } +.fa-reddit-alien { + --fa: "\f281"; } -.fa-typo3:before { - content: "\f42b"; } +.fa-yahoo { + --fa: "\f19e"; } -.fa-reddit-alien:before { - content: "\f281"; } +.fa-dailymotion { + --fa: "\e052"; } -.fa-yahoo:before { - content: "\f19e"; } +.fa-affiliatetheme { + --fa: "\f36b"; } -.fa-dailymotion:before { - content: "\e052"; } +.fa-pied-piper-pp { + --fa: "\f1a7"; } -.fa-affiliatetheme:before { - content: "\f36b"; } +.fa-bootstrap { + --fa: "\f836"; } -.fa-pied-piper-pp:before { - content: "\f1a7"; } +.fa-odnoklassniki { + --fa: "\f263"; } -.fa-bootstrap:before { - content: "\f836"; } +.fa-nfc-symbol { + --fa: "\e531"; } -.fa-odnoklassniki:before { - content: "\f263"; } +.fa-mintbit { + --fa: "\e62f"; } -.fa-nfc-symbol:before { - content: "\e531"; } +.fa-ethereum { + --fa: "\f42e"; } -.fa-mintbit:before { - content: "\e62f"; } +.fa-speaker-deck { + --fa: "\f83c"; } -.fa-ethereum:before { - content: "\f42e"; } +.fa-creative-commons-nc-eu { + --fa: "\f4e9"; } -.fa-speaker-deck:before { - content: "\f83c"; } +.fa-patreon { + --fa: "\f3d9"; } -.fa-creative-commons-nc-eu:before { - content: "\f4e9"; } +.fa-avianex { + --fa: "\f374"; } -.fa-patreon:before { - content: "\f3d9"; } +.fa-ello { + --fa: "\f5f1"; } -.fa-avianex:before { - content: "\f374"; } +.fa-gofore { + --fa: "\f3a7"; } -.fa-ello:before { - content: "\f5f1"; } +.fa-bimobject { + --fa: "\f378"; } -.fa-gofore:before { - content: "\f3a7"; } +.fa-brave-reverse { + --fa: "\e63d"; } -.fa-bimobject:before { - content: "\f378"; } +.fa-facebook-f { + --fa: "\f39e"; } -.fa-brave-reverse:before { - content: "\e63d"; } +.fa-square-google-plus { + --fa: "\f0d4"; } -.fa-facebook-f:before { - content: "\f39e"; } +.fa-google-plus-square { + --fa: "\f0d4"; } -.fa-square-google-plus:before { - content: "\f0d4"; } +.fa-web-awesome { + --fa: "\e682"; } -.fa-google-plus-square:before { - content: "\f0d4"; } +.fa-mandalorian { + --fa: "\f50f"; } -.fa-web-awesome:before { - content: "\e682"; } +.fa-first-order-alt { + --fa: "\f50a"; } -.fa-mandalorian:before { - content: "\f50f"; } +.fa-osi { + --fa: "\f41a"; } -.fa-first-order-alt:before { - content: "\f50a"; } +.fa-google-wallet { + --fa: "\f1ee"; } -.fa-osi:before { - content: "\f41a"; } +.fa-d-and-d-beyond { + --fa: "\f6ca"; } -.fa-google-wallet:before { - content: "\f1ee"; } +.fa-periscope { + --fa: "\f3da"; } -.fa-d-and-d-beyond:before { - content: "\f6ca"; } +.fa-fulcrum { + --fa: "\f50b"; } -.fa-periscope:before { - content: "\f3da"; } +.fa-cloudscale { + --fa: "\f383"; } -.fa-fulcrum:before { - content: "\f50b"; } +.fa-forumbee { + --fa: "\f211"; } -.fa-cloudscale:before { - content: "\f383"; } +.fa-mizuni { + --fa: "\f3cc"; } -.fa-forumbee:before { - content: "\f211"; } +.fa-schlix { + --fa: "\f3ea"; } -.fa-mizuni:before { - content: "\f3cc"; } +.fa-square-xing { + --fa: "\f169"; } -.fa-schlix:before { - content: "\f3ea"; } +.fa-xing-square { + --fa: "\f169"; } -.fa-square-xing:before { - content: "\f169"; } +.fa-bandcamp { + --fa: "\f2d5"; } -.fa-xing-square:before { - content: "\f169"; } +.fa-wpforms { + --fa: "\f298"; } -.fa-bandcamp:before { - content: "\f2d5"; } +.fa-cloudversify { + --fa: "\f385"; } -.fa-wpforms:before { - content: "\f298"; } +.fa-usps { + --fa: "\f7e1"; } -.fa-cloudversify:before { - content: "\f385"; } +.fa-megaport { + --fa: "\f5a3"; } -.fa-usps:before { - content: "\f7e1"; } +.fa-magento { + --fa: "\f3c4"; } -.fa-megaport:before { - content: "\f5a3"; } +.fa-spotify { + --fa: "\f1bc"; } -.fa-magento:before { - content: "\f3c4"; } +.fa-optin-monster { + --fa: "\f23c"; } -.fa-spotify:before { - content: "\f1bc"; } +.fa-fly { + --fa: "\f417"; } -.fa-optin-monster:before { - content: "\f23c"; } +.fa-square-bluesky { + --fa: "\e6a3"; } -.fa-fly:before { - content: "\f417"; } +.fa-aviato { + --fa: "\f421"; } -.fa-aviato:before { - content: "\f421"; } +.fa-itunes { + --fa: "\f3b4"; } -.fa-itunes:before { - content: "\f3b4"; } +.fa-cuttlefish { + --fa: "\f38c"; } -.fa-cuttlefish:before { - content: "\f38c"; } +.fa-blogger { + --fa: "\f37c"; } -.fa-blogger:before { - content: "\f37c"; } +.fa-flickr { + --fa: "\f16e"; } -.fa-flickr:before { - content: "\f16e"; } +.fa-viber { + --fa: "\f409"; } -.fa-viber:before { - content: "\f409"; } +.fa-soundcloud { + --fa: "\f1be"; } -.fa-soundcloud:before { - content: "\f1be"; } +.fa-digg { + --fa: "\f1a6"; } -.fa-digg:before { - content: "\f1a6"; } +.fa-tencent-weibo { + --fa: "\f1d5"; } -.fa-tencent-weibo:before { - content: "\f1d5"; } +.fa-letterboxd { + --fa: "\e62d"; } -.fa-letterboxd:before { - content: "\e62d"; } +.fa-symfony { + --fa: "\f83d"; } -.fa-symfony:before { - content: "\f83d"; } +.fa-maxcdn { + --fa: "\f136"; } -.fa-maxcdn:before { - content: "\f136"; } +.fa-etsy { + --fa: "\f2d7"; } -.fa-etsy:before { - content: "\f2d7"; } +.fa-facebook-messenger { + --fa: "\f39f"; } -.fa-facebook-messenger:before { - content: "\f39f"; } +.fa-audible { + --fa: "\f373"; } -.fa-audible:before { - content: "\f373"; } +.fa-think-peaks { + --fa: "\f731"; } -.fa-think-peaks:before { - content: "\f731"; } +.fa-bilibili { + --fa: "\e3d9"; } -.fa-bilibili:before { - content: "\e3d9"; } +.fa-erlang { + --fa: "\f39d"; } -.fa-erlang:before { - content: "\f39d"; } +.fa-x-twitter { + --fa: "\e61b"; } -.fa-x-twitter:before { - content: "\e61b"; } +.fa-cotton-bureau { + --fa: "\f89e"; } -.fa-cotton-bureau:before { - content: "\f89e"; } +.fa-dashcube { + --fa: "\f210"; } -.fa-dashcube:before { - content: "\f210"; } +.fa-42-group { + --fa: "\e080"; } -.fa-42-group:before { - content: "\e080"; } +.fa-innosoft { + --fa: "\e080"; } -.fa-innosoft:before { - content: "\e080"; } +.fa-stack-exchange { + --fa: "\f18d"; } -.fa-stack-exchange:before { - content: "\f18d"; } +.fa-elementor { + --fa: "\f430"; } -.fa-elementor:before { - content: "\f430"; } +.fa-square-pied-piper { + --fa: "\e01e"; } -.fa-square-pied-piper:before { - content: "\e01e"; } +.fa-pied-piper-square { + --fa: "\e01e"; } -.fa-pied-piper-square:before { - content: "\e01e"; } +.fa-creative-commons-nd { + --fa: "\f4eb"; } -.fa-creative-commons-nd:before { - content: "\f4eb"; } +.fa-palfed { + --fa: "\f3d8"; } -.fa-palfed:before { - content: "\f3d8"; } +.fa-superpowers { + --fa: "\f2dd"; } -.fa-superpowers:before { - content: "\f2dd"; } +.fa-resolving { + --fa: "\f3e7"; } -.fa-resolving:before { - content: "\f3e7"; } +.fa-xbox { + --fa: "\f412"; } -.fa-xbox:before { - content: "\f412"; } +.fa-square-web-awesome-stroke { + --fa: "\e684"; } -.fa-square-web-awesome-stroke:before { - content: "\e684"; } +.fa-searchengin { + --fa: "\f3eb"; } -.fa-searchengin:before { - content: "\f3eb"; } +.fa-tiktok { + --fa: "\e07b"; } -.fa-tiktok:before { - content: "\e07b"; } +.fa-square-facebook { + --fa: "\f082"; } -.fa-square-facebook:before { - content: "\f082"; } +.fa-facebook-square { + --fa: "\f082"; } -.fa-facebook-square:before { - content: "\f082"; } +.fa-renren { + --fa: "\f18b"; } -.fa-renren:before { - content: "\f18b"; } +.fa-linux { + --fa: "\f17c"; } -.fa-linux:before { - content: "\f17c"; } +.fa-glide { + --fa: "\f2a5"; } -.fa-glide:before { - content: "\f2a5"; } +.fa-linkedin { + --fa: "\f08c"; } -.fa-linkedin:before { - content: "\f08c"; } +.fa-hubspot { + --fa: "\f3b2"; } -.fa-hubspot:before { - content: "\f3b2"; } +.fa-deploydog { + --fa: "\f38e"; } -.fa-deploydog:before { - content: "\f38e"; } +.fa-twitch { + --fa: "\f1e8"; } -.fa-twitch:before { - content: "\f1e8"; } +.fa-flutter { + --fa: "\e694"; } -.fa-ravelry:before { - content: "\f2d9"; } +.fa-ravelry { + --fa: "\f2d9"; } -.fa-mixer:before { - content: "\e056"; } +.fa-mixer { + --fa: "\e056"; } -.fa-square-lastfm:before { - content: "\f203"; } +.fa-square-lastfm { + --fa: "\f203"; } -.fa-lastfm-square:before { - content: "\f203"; } +.fa-lastfm-square { + --fa: "\f203"; } -.fa-vimeo:before { - content: "\f40a"; } +.fa-vimeo { + --fa: "\f40a"; } -.fa-mendeley:before { - content: "\f7b3"; } +.fa-mendeley { + --fa: "\f7b3"; } -.fa-uniregistry:before { - content: "\f404"; } +.fa-uniregistry { + --fa: "\f404"; } -.fa-figma:before { - content: "\f799"; } +.fa-figma { + --fa: "\f799"; } -.fa-creative-commons-remix:before { - content: "\f4ee"; } +.fa-creative-commons-remix { + --fa: "\f4ee"; } -.fa-cc-amazon-pay:before { - content: "\f42d"; } +.fa-cc-amazon-pay { + --fa: "\f42d"; } -.fa-dropbox:before { - content: "\f16b"; } +.fa-dropbox { + --fa: "\f16b"; } -.fa-instagram:before { - content: "\f16d"; } +.fa-instagram { + --fa: "\f16d"; } -.fa-cmplid:before { - content: "\e360"; } +.fa-cmplid { + --fa: "\e360"; } -.fa-upwork:before { - content: "\e641"; } +.fa-upwork { + --fa: "\e641"; } -.fa-facebook:before { - content: "\f09a"; } +.fa-facebook { + --fa: "\f09a"; } -.fa-gripfire:before { - content: "\f3ac"; } +.fa-gripfire { + --fa: "\f3ac"; } -.fa-jedi-order:before { - content: "\f50e"; } +.fa-jedi-order { + --fa: "\f50e"; } -.fa-uikit:before { - content: "\f403"; } +.fa-uikit { + --fa: "\f403"; } -.fa-fort-awesome-alt:before { - content: "\f3a3"; } +.fa-fort-awesome-alt { + --fa: "\f3a3"; } -.fa-phabricator:before { - content: "\f3db"; } +.fa-phabricator { + --fa: "\f3db"; } -.fa-ussunnah:before { - content: "\f407"; } +.fa-ussunnah { + --fa: "\f407"; } -.fa-earlybirds:before { - content: "\f39a"; } +.fa-earlybirds { + --fa: "\f39a"; } -.fa-trade-federation:before { - content: "\f513"; } +.fa-trade-federation { + --fa: "\f513"; } -.fa-autoprefixer:before { - content: "\f41c"; } +.fa-autoprefixer { + --fa: "\f41c"; } -.fa-whatsapp:before { - content: "\f232"; } +.fa-whatsapp { + --fa: "\f232"; } -.fa-square-upwork:before { - content: "\e67c"; } +.fa-square-upwork { + --fa: "\e67c"; } -.fa-slideshare:before { - content: "\f1e7"; } +.fa-slideshare { + --fa: "\f1e7"; } -.fa-google-play:before { - content: "\f3ab"; } +.fa-google-play { + --fa: "\f3ab"; } -.fa-viadeo:before { - content: "\f2a9"; } +.fa-viadeo { + --fa: "\f2a9"; } -.fa-line:before { - content: "\f3c0"; } +.fa-line { + --fa: "\f3c0"; } -.fa-google-drive:before { - content: "\f3aa"; } +.fa-google-drive { + --fa: "\f3aa"; } -.fa-servicestack:before { - content: "\f3ec"; } +.fa-servicestack { + --fa: "\f3ec"; } -.fa-simplybuilt:before { - content: "\f215"; } +.fa-simplybuilt { + --fa: "\f215"; } -.fa-bitbucket:before { - content: "\f171"; } +.fa-bitbucket { + --fa: "\f171"; } -.fa-imdb:before { - content: "\f2d8"; } +.fa-imdb { + --fa: "\f2d8"; } -.fa-deezer:before { - content: "\e077"; } +.fa-deezer { + --fa: "\e077"; } -.fa-raspberry-pi:before { - content: "\f7bb"; } +.fa-raspberry-pi { + --fa: "\f7bb"; } -.fa-jira:before { - content: "\f7b1"; } +.fa-jira { + --fa: "\f7b1"; } -.fa-docker:before { - content: "\f395"; } +.fa-docker { + --fa: "\f395"; } -.fa-screenpal:before { - content: "\e570"; } +.fa-screenpal { + --fa: "\e570"; } -.fa-bluetooth:before { - content: "\f293"; } +.fa-bluetooth { + --fa: "\f293"; } -.fa-gitter:before { - content: "\f426"; } +.fa-gitter { + --fa: "\f426"; } -.fa-d-and-d:before { - content: "\f38d"; } +.fa-d-and-d { + --fa: "\f38d"; } -.fa-microblog:before { - content: "\e01a"; } +.fa-microblog { + --fa: "\e01a"; } -.fa-cc-diners-club:before { - content: "\f24c"; } +.fa-cc-diners-club { + --fa: "\f24c"; } -.fa-gg-circle:before { - content: "\f261"; } +.fa-gg-circle { + --fa: "\f261"; } -.fa-pied-piper-hat:before { - content: "\f4e5"; } +.fa-pied-piper-hat { + --fa: "\f4e5"; } -.fa-kickstarter-k:before { - content: "\f3bc"; } +.fa-kickstarter-k { + --fa: "\f3bc"; } -.fa-yandex:before { - content: "\f413"; } +.fa-yandex { + --fa: "\f413"; } -.fa-readme:before { - content: "\f4d5"; } +.fa-readme { + --fa: "\f4d5"; } -.fa-html5:before { - content: "\f13b"; } +.fa-html5 { + --fa: "\f13b"; } -.fa-sellsy:before { - content: "\f213"; } +.fa-sellsy { + --fa: "\f213"; } -.fa-square-web-awesome:before { - content: "\e683"; } +.fa-square-web-awesome { + --fa: "\e683"; } -.fa-sass:before { - content: "\f41e"; } +.fa-sass { + --fa: "\f41e"; } -.fa-wirsindhandwerk:before { - content: "\e2d0"; } +.fa-wirsindhandwerk { + --fa: "\e2d0"; } -.fa-wsh:before { - content: "\e2d0"; } +.fa-wsh { + --fa: "\e2d0"; } -.fa-buromobelexperte:before { - content: "\f37f"; } +.fa-buromobelexperte { + --fa: "\f37f"; } -.fa-salesforce:before { - content: "\f83b"; } +.fa-salesforce { + --fa: "\f83b"; } -.fa-octopus-deploy:before { - content: "\e082"; } +.fa-octopus-deploy { + --fa: "\e082"; } -.fa-medapps:before { - content: "\f3c6"; } +.fa-medapps { + --fa: "\f3c6"; } -.fa-ns8:before { - content: "\f3d5"; } +.fa-ns8 { + --fa: "\f3d5"; } -.fa-pinterest-p:before { - content: "\f231"; } +.fa-pinterest-p { + --fa: "\f231"; } -.fa-apper:before { - content: "\f371"; } +.fa-apper { + --fa: "\f371"; } -.fa-fort-awesome:before { - content: "\f286"; } +.fa-fort-awesome { + --fa: "\f286"; } -.fa-waze:before { - content: "\f83f"; } +.fa-waze { + --fa: "\f83f"; } -.fa-bluesky:before { - content: "\e671"; } +.fa-bluesky { + --fa: "\e671"; } -.fa-cc-jcb:before { - content: "\f24b"; } +.fa-cc-jcb { + --fa: "\f24b"; } -.fa-snapchat:before { - content: "\f2ab"; } +.fa-snapchat { + --fa: "\f2ab"; } -.fa-snapchat-ghost:before { - content: "\f2ab"; } +.fa-snapchat-ghost { + --fa: "\f2ab"; } -.fa-fantasy-flight-games:before { - content: "\f6dc"; } +.fa-fantasy-flight-games { + --fa: "\f6dc"; } -.fa-rust:before { - content: "\e07a"; } +.fa-rust { + --fa: "\e07a"; } -.fa-wix:before { - content: "\f5cf"; } +.fa-wix { + --fa: "\f5cf"; } -.fa-square-behance:before { - content: "\f1b5"; } +.fa-square-behance { + --fa: "\f1b5"; } -.fa-behance-square:before { - content: "\f1b5"; } +.fa-behance-square { + --fa: "\f1b5"; } -.fa-supple:before { - content: "\f3f9"; } +.fa-supple { + --fa: "\f3f9"; } -.fa-webflow:before { - content: "\e65c"; } +.fa-webflow { + --fa: "\e65c"; } -.fa-rebel:before { - content: "\f1d0"; } +.fa-rebel { + --fa: "\f1d0"; } -.fa-css3:before { - content: "\f13c"; } +.fa-css3 { + --fa: "\f13c"; } -.fa-staylinked:before { - content: "\f3f5"; } +.fa-staylinked { + --fa: "\f3f5"; } -.fa-kaggle:before { - content: "\f5fa"; } +.fa-kaggle { + --fa: "\f5fa"; } -.fa-space-awesome:before { - content: "\e5ac"; } +.fa-space-awesome { + --fa: "\e5ac"; } -.fa-deviantart:before { - content: "\f1bd"; } +.fa-deviantart { + --fa: "\f1bd"; } -.fa-cpanel:before { - content: "\f388"; } +.fa-cpanel { + --fa: "\f388"; } -.fa-goodreads-g:before { - content: "\f3a9"; } +.fa-goodreads-g { + --fa: "\f3a9"; } -.fa-square-git:before { - content: "\f1d2"; } +.fa-square-git { + --fa: "\f1d2"; } -.fa-git-square:before { - content: "\f1d2"; } +.fa-git-square { + --fa: "\f1d2"; } -.fa-square-tumblr:before { - content: "\f174"; } +.fa-square-tumblr { + --fa: "\f174"; } -.fa-tumblr-square:before { - content: "\f174"; } +.fa-tumblr-square { + --fa: "\f174"; } -.fa-trello:before { - content: "\f181"; } +.fa-trello { + --fa: "\f181"; } -.fa-creative-commons-nc-jp:before { - content: "\f4ea"; } +.fa-creative-commons-nc-jp { + --fa: "\f4ea"; } -.fa-get-pocket:before { - content: "\f265"; } +.fa-get-pocket { + --fa: "\f265"; } -.fa-perbyte:before { - content: "\e083"; } +.fa-perbyte { + --fa: "\e083"; } -.fa-grunt:before { - content: "\f3ad"; } +.fa-grunt { + --fa: "\f3ad"; } -.fa-weebly:before { - content: "\f5cc"; } +.fa-weebly { + --fa: "\f5cc"; } -.fa-connectdevelop:before { - content: "\f20e"; } +.fa-connectdevelop { + --fa: "\f20e"; } -.fa-leanpub:before { - content: "\f212"; } +.fa-leanpub { + --fa: "\f212"; } -.fa-black-tie:before { - content: "\f27e"; } +.fa-black-tie { + --fa: "\f27e"; } -.fa-themeco:before { - content: "\f5c6"; } +.fa-themeco { + --fa: "\f5c6"; } -.fa-python:before { - content: "\f3e2"; } +.fa-python { + --fa: "\f3e2"; } -.fa-android:before { - content: "\f17b"; } +.fa-android { + --fa: "\f17b"; } -.fa-bots:before { - content: "\e340"; } +.fa-bots { + --fa: "\e340"; } -.fa-free-code-camp:before { - content: "\f2c5"; } +.fa-free-code-camp { + --fa: "\f2c5"; } -.fa-hornbill:before { - content: "\f592"; } +.fa-hornbill { + --fa: "\f592"; } -.fa-js:before { - content: "\f3b8"; } +.fa-js { + --fa: "\f3b8"; } -.fa-ideal:before { - content: "\e013"; } +.fa-ideal { + --fa: "\e013"; } -.fa-git:before { - content: "\f1d3"; } +.fa-git { + --fa: "\f1d3"; } -.fa-dev:before { - content: "\f6cc"; } +.fa-dev { + --fa: "\f6cc"; } -.fa-sketch:before { - content: "\f7c6"; } +.fa-sketch { + --fa: "\f7c6"; } -.fa-yandex-international:before { - content: "\f414"; } +.fa-yandex-international { + --fa: "\f414"; } -.fa-cc-amex:before { - content: "\f1f3"; } +.fa-cc-amex { + --fa: "\f1f3"; } -.fa-uber:before { - content: "\f402"; } +.fa-uber { + --fa: "\f402"; } -.fa-github:before { - content: "\f09b"; } +.fa-github { + --fa: "\f09b"; } -.fa-php:before { - content: "\f457"; } +.fa-php { + --fa: "\f457"; } -.fa-alipay:before { - content: "\f642"; } +.fa-alipay { + --fa: "\f642"; } -.fa-youtube:before { - content: "\f167"; } +.fa-youtube { + --fa: "\f167"; } -.fa-skyatlas:before { - content: "\f216"; } +.fa-skyatlas { + --fa: "\f216"; } -.fa-firefox-browser:before { - content: "\e007"; } +.fa-firefox-browser { + --fa: "\e007"; } -.fa-replyd:before { - content: "\f3e6"; } +.fa-replyd { + --fa: "\f3e6"; } -.fa-suse:before { - content: "\f7d6"; } +.fa-suse { + --fa: "\f7d6"; } -.fa-jenkins:before { - content: "\f3b6"; } +.fa-jenkins { + --fa: "\f3b6"; } -.fa-twitter:before { - content: "\f099"; } +.fa-twitter { + --fa: "\f099"; } -.fa-rockrms:before { - content: "\f3e9"; } +.fa-rockrms { + --fa: "\f3e9"; } -.fa-pinterest:before { - content: "\f0d2"; } +.fa-pinterest { + --fa: "\f0d2"; } -.fa-buffer:before { - content: "\f837"; } +.fa-buffer { + --fa: "\f837"; } -.fa-npm:before { - content: "\f3d4"; } +.fa-npm { + --fa: "\f3d4"; } -.fa-yammer:before { - content: "\f840"; } +.fa-yammer { + --fa: "\f840"; } -.fa-btc:before { - content: "\f15a"; } +.fa-btc { + --fa: "\f15a"; } -.fa-dribbble:before { - content: "\f17d"; } +.fa-dribbble { + --fa: "\f17d"; } -.fa-stumbleupon-circle:before { - content: "\f1a3"; } +.fa-stumbleupon-circle { + --fa: "\f1a3"; } -.fa-internet-explorer:before { - content: "\f26b"; } +.fa-internet-explorer { + --fa: "\f26b"; } -.fa-stubber:before { - content: "\e5c7"; } +.fa-stubber { + --fa: "\e5c7"; } -.fa-telegram:before { - content: "\f2c6"; } +.fa-telegram { + --fa: "\f2c6"; } -.fa-telegram-plane:before { - content: "\f2c6"; } +.fa-telegram-plane { + --fa: "\f2c6"; } -.fa-old-republic:before { - content: "\f510"; } +.fa-old-republic { + --fa: "\f510"; } -.fa-odysee:before { - content: "\e5c6"; } +.fa-odysee { + --fa: "\e5c6"; } -.fa-square-whatsapp:before { - content: "\f40c"; } +.fa-square-whatsapp { + --fa: "\f40c"; } -.fa-whatsapp-square:before { - content: "\f40c"; } +.fa-whatsapp-square { + --fa: "\f40c"; } -.fa-node-js:before { - content: "\f3d3"; } +.fa-node-js { + --fa: "\f3d3"; } -.fa-edge-legacy:before { - content: "\e078"; } +.fa-edge-legacy { + --fa: "\e078"; } -.fa-slack:before { - content: "\f198"; } +.fa-slack { + --fa: "\f198"; } -.fa-slack-hash:before { - content: "\f198"; } +.fa-slack-hash { + --fa: "\f198"; } -.fa-medrt:before { - content: "\f3c8"; } +.fa-medrt { + --fa: "\f3c8"; } -.fa-usb:before { - content: "\f287"; } +.fa-usb { + --fa: "\f287"; } -.fa-tumblr:before { - content: "\f173"; } +.fa-tumblr { + --fa: "\f173"; } -.fa-vaadin:before { - content: "\f408"; } +.fa-vaadin { + --fa: "\f408"; } -.fa-quora:before { - content: "\f2c4"; } +.fa-quora { + --fa: "\f2c4"; } -.fa-square-x-twitter:before { - content: "\e61a"; } +.fa-square-x-twitter { + --fa: "\e61a"; } -.fa-reacteurope:before { - content: "\f75d"; } +.fa-reacteurope { + --fa: "\f75d"; } -.fa-medium:before { - content: "\f23a"; } +.fa-medium { + --fa: "\f23a"; } -.fa-medium-m:before { - content: "\f23a"; } +.fa-medium-m { + --fa: "\f23a"; } -.fa-amilia:before { - content: "\f36d"; } +.fa-amilia { + --fa: "\f36d"; } -.fa-mixcloud:before { - content: "\f289"; } +.fa-mixcloud { + --fa: "\f289"; } -.fa-flipboard:before { - content: "\f44d"; } +.fa-flipboard { + --fa: "\f44d"; } -.fa-viacoin:before { - content: "\f237"; } +.fa-viacoin { + --fa: "\f237"; } -.fa-critical-role:before { - content: "\f6c9"; } +.fa-critical-role { + --fa: "\f6c9"; } -.fa-sitrox:before { - content: "\e44a"; } +.fa-sitrox { + --fa: "\e44a"; } -.fa-discourse:before { - content: "\f393"; } +.fa-discourse { + --fa: "\f393"; } -.fa-joomla:before { - content: "\f1aa"; } +.fa-joomla { + --fa: "\f1aa"; } -.fa-mastodon:before { - content: "\f4f6"; } +.fa-mastodon { + --fa: "\f4f6"; } -.fa-airbnb:before { - content: "\f834"; } +.fa-airbnb { + --fa: "\f834"; } -.fa-wolf-pack-battalion:before { - content: "\f514"; } +.fa-wolf-pack-battalion { + --fa: "\f514"; } -.fa-buy-n-large:before { - content: "\f8a6"; } +.fa-buy-n-large { + --fa: "\f8a6"; } -.fa-gulp:before { - content: "\f3ae"; } +.fa-gulp { + --fa: "\f3ae"; } -.fa-creative-commons-sampling-plus:before { - content: "\f4f1"; } +.fa-creative-commons-sampling-plus { + --fa: "\f4f1"; } -.fa-strava:before { - content: "\f428"; } +.fa-strava { + --fa: "\f428"; } -.fa-ember:before { - content: "\f423"; } +.fa-ember { + --fa: "\f423"; } -.fa-canadian-maple-leaf:before { - content: "\f785"; } +.fa-canadian-maple-leaf { + --fa: "\f785"; } -.fa-teamspeak:before { - content: "\f4f9"; } +.fa-teamspeak { + --fa: "\f4f9"; } -.fa-pushed:before { - content: "\f3e1"; } +.fa-pushed { + --fa: "\f3e1"; } -.fa-wordpress-simple:before { - content: "\f411"; } +.fa-wordpress-simple { + --fa: "\f411"; } -.fa-nutritionix:before { - content: "\f3d6"; } +.fa-nutritionix { + --fa: "\f3d6"; } -.fa-wodu:before { - content: "\e088"; } +.fa-wodu { + --fa: "\e088"; } -.fa-google-pay:before { - content: "\e079"; } +.fa-google-pay { + --fa: "\e079"; } -.fa-intercom:before { - content: "\f7af"; } +.fa-intercom { + --fa: "\f7af"; } -.fa-zhihu:before { - content: "\f63f"; } +.fa-zhihu { + --fa: "\f63f"; } -.fa-korvue:before { - content: "\f42f"; } +.fa-korvue { + --fa: "\f42f"; } -.fa-pix:before { - content: "\e43a"; } +.fa-pix { + --fa: "\e43a"; } -.fa-steam-symbol:before { - content: "\f3f6"; } +.fa-steam-symbol { + --fa: "\f3f6"; } :root, :host { --fa-style-family-classic: 'Font Awesome 6 Free'; --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; } diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css index ea60ea4d7..7ed4af7d2 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css +++ b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css @@ -1,174 +1,174 @@ /*! - * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */ -.fa.fa-glass:before { - content: "\f000"; } +.fa.fa-glass { + --fa: "\f000"; } .fa.fa-envelope-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-envelope-o:before { - content: "\f0e0"; } +.fa.fa-envelope-o { + --fa: "\f0e0"; } .fa.fa-star-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-star-o:before { - content: "\f005"; } +.fa.fa-star-o { + --fa: "\f005"; } -.fa.fa-remove:before { - content: "\f00d"; } +.fa.fa-remove { + --fa: "\f00d"; } -.fa.fa-close:before { - content: "\f00d"; } +.fa.fa-close { + --fa: "\f00d"; } -.fa.fa-gear:before { - content: "\f013"; } +.fa.fa-gear { + --fa: "\f013"; } .fa.fa-trash-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-trash-o:before { - content: "\f2ed"; } +.fa.fa-trash-o { + --fa: "\f2ed"; } -.fa.fa-home:before { - content: "\f015"; } +.fa.fa-home { + --fa: "\f015"; } .fa.fa-file-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-o:before { - content: "\f15b"; } +.fa.fa-file-o { + --fa: "\f15b"; } .fa.fa-clock-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-clock-o:before { - content: "\f017"; } +.fa.fa-clock-o { + --fa: "\f017"; } .fa.fa-arrow-circle-o-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-arrow-circle-o-down:before { - content: "\f358"; } +.fa.fa-arrow-circle-o-down { + --fa: "\f358"; } .fa.fa-arrow-circle-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-arrow-circle-o-up:before { - content: "\f35b"; } +.fa.fa-arrow-circle-o-up { + --fa: "\f35b"; } .fa.fa-play-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-play-circle-o:before { - content: "\f144"; } +.fa.fa-play-circle-o { + --fa: "\f144"; } -.fa.fa-repeat:before { - content: "\f01e"; } +.fa.fa-repeat { + --fa: "\f01e"; } -.fa.fa-rotate-right:before { - content: "\f01e"; } +.fa.fa-rotate-right { + --fa: "\f01e"; } -.fa.fa-refresh:before { - content: "\f021"; } +.fa.fa-refresh { + --fa: "\f021"; } .fa.fa-list-alt { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-list-alt:before { - content: "\f022"; } +.fa.fa-list-alt { + --fa: "\f022"; } -.fa.fa-dedent:before { - content: "\f03b"; } +.fa.fa-dedent { + --fa: "\f03b"; } -.fa.fa-video-camera:before { - content: "\f03d"; } +.fa.fa-video-camera { + --fa: "\f03d"; } .fa.fa-picture-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-picture-o:before { - content: "\f03e"; } +.fa.fa-picture-o { + --fa: "\f03e"; } .fa.fa-photo { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-photo:before { - content: "\f03e"; } +.fa.fa-photo { + --fa: "\f03e"; } .fa.fa-image { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-image:before { - content: "\f03e"; } +.fa.fa-image { + --fa: "\f03e"; } -.fa.fa-map-marker:before { - content: "\f3c5"; } +.fa.fa-map-marker { + --fa: "\f3c5"; } .fa.fa-pencil-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-pencil-square-o:before { - content: "\f044"; } +.fa.fa-pencil-square-o { + --fa: "\f044"; } .fa.fa-edit { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-edit:before { - content: "\f044"; } +.fa.fa-edit { + --fa: "\f044"; } -.fa.fa-share-square-o:before { - content: "\f14d"; } +.fa.fa-share-square-o { + --fa: "\f14d"; } .fa.fa-check-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-check-square-o:before { - content: "\f14a"; } +.fa.fa-check-square-o { + --fa: "\f14a"; } -.fa.fa-arrows:before { - content: "\f0b2"; } +.fa.fa-arrows { + --fa: "\f0b2"; } .fa.fa-times-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-times-circle-o:before { - content: "\f057"; } +.fa.fa-times-circle-o { + --fa: "\f057"; } .fa.fa-check-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-check-circle-o:before { - content: "\f058"; } +.fa.fa-check-circle-o { + --fa: "\f058"; } -.fa.fa-mail-forward:before { - content: "\f064"; } +.fa.fa-mail-forward { + --fa: "\f064"; } -.fa.fa-expand:before { - content: "\f424"; } +.fa.fa-expand { + --fa: "\f424"; } -.fa.fa-compress:before { - content: "\f422"; } +.fa.fa-compress { + --fa: "\f422"; } .fa.fa-eye { font-family: 'Font Awesome 6 Free'; @@ -178,108 +178,108 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-warning:before { - content: "\f071"; } +.fa.fa-warning { + --fa: "\f071"; } -.fa.fa-calendar:before { - content: "\f073"; } +.fa.fa-calendar { + --fa: "\f073"; } -.fa.fa-arrows-v:before { - content: "\f338"; } +.fa.fa-arrows-v { + --fa: "\f338"; } -.fa.fa-arrows-h:before { - content: "\f337"; } +.fa.fa-arrows-h { + --fa: "\f337"; } -.fa.fa-bar-chart:before { - content: "\e0e3"; } +.fa.fa-bar-chart { + --fa: "\e0e3"; } -.fa.fa-bar-chart-o:before { - content: "\e0e3"; } +.fa.fa-bar-chart-o { + --fa: "\e0e3"; } .fa.fa-twitter-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-twitter-square:before { - content: "\f081"; } +.fa.fa-twitter-square { + --fa: "\f081"; } .fa.fa-facebook-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-facebook-square:before { - content: "\f082"; } +.fa.fa-facebook-square { + --fa: "\f082"; } -.fa.fa-gears:before { - content: "\f085"; } +.fa.fa-gears { + --fa: "\f085"; } .fa.fa-thumbs-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-thumbs-o-up:before { - content: "\f164"; } +.fa.fa-thumbs-o-up { + --fa: "\f164"; } .fa.fa-thumbs-o-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-thumbs-o-down:before { - content: "\f165"; } +.fa.fa-thumbs-o-down { + --fa: "\f165"; } .fa.fa-heart-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-heart-o:before { - content: "\f004"; } +.fa.fa-heart-o { + --fa: "\f004"; } -.fa.fa-sign-out:before { - content: "\f2f5"; } +.fa.fa-sign-out { + --fa: "\f2f5"; } .fa.fa-linkedin-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-linkedin-square:before { - content: "\f08c"; } +.fa.fa-linkedin-square { + --fa: "\f08c"; } -.fa.fa-thumb-tack:before { - content: "\f08d"; } +.fa.fa-thumb-tack { + --fa: "\f08d"; } -.fa.fa-external-link:before { - content: "\f35d"; } +.fa.fa-external-link { + --fa: "\f35d"; } -.fa.fa-sign-in:before { - content: "\f2f6"; } +.fa.fa-sign-in { + --fa: "\f2f6"; } .fa.fa-github-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-github-square:before { - content: "\f092"; } +.fa.fa-github-square { + --fa: "\f092"; } .fa.fa-lemon-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-lemon-o:before { - content: "\f094"; } +.fa.fa-lemon-o { + --fa: "\f094"; } .fa.fa-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-square-o:before { - content: "\f0c8"; } +.fa.fa-square-o { + --fa: "\f0c8"; } .fa.fa-bookmark-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-bookmark-o:before { - content: "\f02e"; } +.fa.fa-bookmark-o { + --fa: "\f02e"; } .fa.fa-twitter { font-family: 'Font Awesome 6 Brands'; @@ -289,15 +289,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-facebook:before { - content: "\f39e"; } +.fa.fa-facebook { + --fa: "\f39e"; } .fa.fa-facebook-f { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-facebook-f:before { - content: "\f39e"; } +.fa.fa-facebook-f { + --fa: "\f39e"; } .fa.fa-github { font-family: 'Font Awesome 6 Brands'; @@ -307,91 +307,91 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-feed:before { - content: "\f09e"; } +.fa.fa-feed { + --fa: "\f09e"; } .fa.fa-hdd-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hdd-o:before { - content: "\f0a0"; } +.fa.fa-hdd-o { + --fa: "\f0a0"; } .fa.fa-hand-o-right { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-o-right:before { - content: "\f0a4"; } +.fa.fa-hand-o-right { + --fa: "\f0a4"; } .fa.fa-hand-o-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-o-left:before { - content: "\f0a5"; } +.fa.fa-hand-o-left { + --fa: "\f0a5"; } .fa.fa-hand-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-o-up:before { - content: "\f0a6"; } +.fa.fa-hand-o-up { + --fa: "\f0a6"; } .fa.fa-hand-o-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-o-down:before { - content: "\f0a7"; } +.fa.fa-hand-o-down { + --fa: "\f0a7"; } -.fa.fa-globe:before { - content: "\f57d"; } +.fa.fa-globe { + --fa: "\f57d"; } -.fa.fa-tasks:before { - content: "\f828"; } +.fa.fa-tasks { + --fa: "\f828"; } -.fa.fa-arrows-alt:before { - content: "\f31e"; } +.fa.fa-arrows-alt { + --fa: "\f31e"; } -.fa.fa-group:before { - content: "\f0c0"; } +.fa.fa-group { + --fa: "\f0c0"; } -.fa.fa-chain:before { - content: "\f0c1"; } +.fa.fa-chain { + --fa: "\f0c1"; } -.fa.fa-cut:before { - content: "\f0c4"; } +.fa.fa-cut { + --fa: "\f0c4"; } .fa.fa-files-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-files-o:before { - content: "\f0c5"; } +.fa.fa-files-o { + --fa: "\f0c5"; } .fa.fa-floppy-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-floppy-o:before { - content: "\f0c7"; } +.fa.fa-floppy-o { + --fa: "\f0c7"; } .fa.fa-save { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-save:before { - content: "\f0c7"; } +.fa.fa-save { + --fa: "\f0c7"; } -.fa.fa-navicon:before { - content: "\f0c9"; } +.fa.fa-navicon { + --fa: "\f0c9"; } -.fa.fa-reorder:before { - content: "\f0c9"; } +.fa.fa-reorder { + --fa: "\f0c9"; } -.fa.fa-magic:before { - content: "\e2ca"; } +.fa.fa-magic { + --fa: "\e2ca"; } .fa.fa-pinterest { font-family: 'Font Awesome 6 Brands'; @@ -401,139 +401,139 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-pinterest-square:before { - content: "\f0d3"; } +.fa.fa-pinterest-square { + --fa: "\f0d3"; } .fa.fa-google-plus-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-google-plus-square:before { - content: "\f0d4"; } +.fa.fa-google-plus-square { + --fa: "\f0d4"; } .fa.fa-google-plus { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-google-plus:before { - content: "\f0d5"; } +.fa.fa-google-plus { + --fa: "\f0d5"; } -.fa.fa-money:before { - content: "\f3d1"; } +.fa.fa-money { + --fa: "\f3d1"; } -.fa.fa-unsorted:before { - content: "\f0dc"; } +.fa.fa-unsorted { + --fa: "\f0dc"; } -.fa.fa-sort-desc:before { - content: "\f0dd"; } +.fa.fa-sort-desc { + --fa: "\f0dd"; } -.fa.fa-sort-asc:before { - content: "\f0de"; } +.fa.fa-sort-asc { + --fa: "\f0de"; } .fa.fa-linkedin { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-linkedin:before { - content: "\f0e1"; } +.fa.fa-linkedin { + --fa: "\f0e1"; } -.fa.fa-rotate-left:before { - content: "\f0e2"; } +.fa.fa-rotate-left { + --fa: "\f0e2"; } -.fa.fa-legal:before { - content: "\f0e3"; } +.fa.fa-legal { + --fa: "\f0e3"; } -.fa.fa-tachometer:before { - content: "\f625"; } +.fa.fa-tachometer { + --fa: "\f625"; } -.fa.fa-dashboard:before { - content: "\f625"; } +.fa.fa-dashboard { + --fa: "\f625"; } .fa.fa-comment-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-comment-o:before { - content: "\f075"; } +.fa.fa-comment-o { + --fa: "\f075"; } .fa.fa-comments-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-comments-o:before { - content: "\f086"; } +.fa.fa-comments-o { + --fa: "\f086"; } -.fa.fa-flash:before { - content: "\f0e7"; } +.fa.fa-flash { + --fa: "\f0e7"; } -.fa.fa-clipboard:before { - content: "\f0ea"; } +.fa.fa-clipboard { + --fa: "\f0ea"; } .fa.fa-lightbulb-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-lightbulb-o:before { - content: "\f0eb"; } +.fa.fa-lightbulb-o { + --fa: "\f0eb"; } -.fa.fa-exchange:before { - content: "\f362"; } +.fa.fa-exchange { + --fa: "\f362"; } -.fa.fa-cloud-download:before { - content: "\f0ed"; } +.fa.fa-cloud-download { + --fa: "\f0ed"; } -.fa.fa-cloud-upload:before { - content: "\f0ee"; } +.fa.fa-cloud-upload { + --fa: "\f0ee"; } .fa.fa-bell-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-bell-o:before { - content: "\f0f3"; } +.fa.fa-bell-o { + --fa: "\f0f3"; } -.fa.fa-cutlery:before { - content: "\f2e7"; } +.fa.fa-cutlery { + --fa: "\f2e7"; } .fa.fa-file-text-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-text-o:before { - content: "\f15c"; } +.fa.fa-file-text-o { + --fa: "\f15c"; } .fa.fa-building-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-building-o:before { - content: "\f1ad"; } +.fa.fa-building-o { + --fa: "\f1ad"; } .fa.fa-hospital-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hospital-o:before { - content: "\f0f8"; } +.fa.fa-hospital-o { + --fa: "\f0f8"; } -.fa.fa-tablet:before { - content: "\f3fa"; } +.fa.fa-tablet { + --fa: "\f3fa"; } -.fa.fa-mobile:before { - content: "\f3cd"; } +.fa.fa-mobile { + --fa: "\f3cd"; } -.fa.fa-mobile-phone:before { - content: "\f3cd"; } +.fa.fa-mobile-phone { + --fa: "\f3cd"; } .fa.fa-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-circle-o:before { - content: "\f111"; } +.fa.fa-circle-o { + --fa: "\f111"; } -.fa.fa-mail-reply:before { - content: "\f3e5"; } +.fa.fa-mail-reply { + --fa: "\f3e5"; } .fa.fa-github-alt { font-family: 'Font Awesome 6 Brands'; @@ -543,90 +543,90 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-folder-o:before { - content: "\f07b"; } +.fa.fa-folder-o { + --fa: "\f07b"; } .fa.fa-folder-open-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-folder-open-o:before { - content: "\f07c"; } +.fa.fa-folder-open-o { + --fa: "\f07c"; } .fa.fa-smile-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-smile-o:before { - content: "\f118"; } +.fa.fa-smile-o { + --fa: "\f118"; } .fa.fa-frown-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-frown-o:before { - content: "\f119"; } +.fa.fa-frown-o { + --fa: "\f119"; } .fa.fa-meh-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-meh-o:before { - content: "\f11a"; } +.fa.fa-meh-o { + --fa: "\f11a"; } .fa.fa-keyboard-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-keyboard-o:before { - content: "\f11c"; } +.fa.fa-keyboard-o { + --fa: "\f11c"; } .fa.fa-flag-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-flag-o:before { - content: "\f024"; } +.fa.fa-flag-o { + --fa: "\f024"; } -.fa.fa-mail-reply-all:before { - content: "\f122"; } +.fa.fa-mail-reply-all { + --fa: "\f122"; } .fa.fa-star-half-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-star-half-o:before { - content: "\f5c0"; } +.fa.fa-star-half-o { + --fa: "\f5c0"; } .fa.fa-star-half-empty { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-star-half-empty:before { - content: "\f5c0"; } +.fa.fa-star-half-empty { + --fa: "\f5c0"; } .fa.fa-star-half-full { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-star-half-full:before { - content: "\f5c0"; } +.fa.fa-star-half-full { + --fa: "\f5c0"; } -.fa.fa-code-fork:before { - content: "\f126"; } +.fa.fa-code-fork { + --fa: "\f126"; } -.fa.fa-chain-broken:before { - content: "\f127"; } +.fa.fa-chain-broken { + --fa: "\f127"; } -.fa.fa-unlink:before { - content: "\f127"; } +.fa.fa-unlink { + --fa: "\f127"; } .fa.fa-calendar-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-o:before { - content: "\f133"; } +.fa.fa-calendar-o { + --fa: "\f133"; } .fa.fa-maxcdn { font-family: 'Font Awesome 6 Brands'; @@ -640,27 +640,27 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-unlock-alt:before { - content: "\f09c"; } +.fa.fa-unlock-alt { + --fa: "\f09c"; } .fa.fa-minus-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-minus-square-o:before { - content: "\f146"; } +.fa.fa-minus-square-o { + --fa: "\f146"; } -.fa.fa-level-up:before { - content: "\f3bf"; } +.fa.fa-level-up { + --fa: "\f3bf"; } -.fa.fa-level-down:before { - content: "\f3be"; } +.fa.fa-level-down { + --fa: "\f3be"; } -.fa.fa-pencil-square:before { - content: "\f14b"; } +.fa.fa-pencil-square { + --fa: "\f14b"; } -.fa.fa-external-link-square:before { - content: "\f360"; } +.fa.fa-external-link-square { + --fa: "\f360"; } .fa.fa-compass { font-family: 'Font Awesome 6 Free'; @@ -670,91 +670,91 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-caret-square-o-down:before { - content: "\f150"; } +.fa.fa-caret-square-o-down { + --fa: "\f150"; } .fa.fa-toggle-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-toggle-down:before { - content: "\f150"; } +.fa.fa-toggle-down { + --fa: "\f150"; } .fa.fa-caret-square-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-caret-square-o-up:before { - content: "\f151"; } +.fa.fa-caret-square-o-up { + --fa: "\f151"; } .fa.fa-toggle-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-toggle-up:before { - content: "\f151"; } +.fa.fa-toggle-up { + --fa: "\f151"; } .fa.fa-caret-square-o-right { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-caret-square-o-right:before { - content: "\f152"; } +.fa.fa-caret-square-o-right { + --fa: "\f152"; } .fa.fa-toggle-right { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-toggle-right:before { - content: "\f152"; } +.fa.fa-toggle-right { + --fa: "\f152"; } -.fa.fa-eur:before { - content: "\f153"; } +.fa.fa-eur { + --fa: "\f153"; } -.fa.fa-euro:before { - content: "\f153"; } +.fa.fa-euro { + --fa: "\f153"; } -.fa.fa-gbp:before { - content: "\f154"; } +.fa.fa-gbp { + --fa: "\f154"; } -.fa.fa-usd:before { - content: "\24"; } +.fa.fa-usd { + --fa: "\24"; } -.fa.fa-dollar:before { - content: "\24"; } +.fa.fa-dollar { + --fa: "\24"; } -.fa.fa-inr:before { - content: "\e1bc"; } +.fa.fa-inr { + --fa: "\e1bc"; } -.fa.fa-rupee:before { - content: "\e1bc"; } +.fa.fa-rupee { + --fa: "\e1bc"; } -.fa.fa-jpy:before { - content: "\f157"; } +.fa.fa-jpy { + --fa: "\f157"; } -.fa.fa-cny:before { - content: "\f157"; } +.fa.fa-cny { + --fa: "\f157"; } -.fa.fa-rmb:before { - content: "\f157"; } +.fa.fa-rmb { + --fa: "\f157"; } -.fa.fa-yen:before { - content: "\f157"; } +.fa.fa-yen { + --fa: "\f157"; } -.fa.fa-rub:before { - content: "\f158"; } +.fa.fa-rub { + --fa: "\f158"; } -.fa.fa-ruble:before { - content: "\f158"; } +.fa.fa-ruble { + --fa: "\f158"; } -.fa.fa-rouble:before { - content: "\f158"; } +.fa.fa-rouble { + --fa: "\f158"; } -.fa.fa-krw:before { - content: "\f159"; } +.fa.fa-krw { + --fa: "\f159"; } -.fa.fa-won:before { - content: "\f159"; } +.fa.fa-won { + --fa: "\f159"; } .fa.fa-btc { font-family: 'Font Awesome 6 Brands'; @@ -764,36 +764,36 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-bitcoin:before { - content: "\f15a"; } +.fa.fa-bitcoin { + --fa: "\f15a"; } -.fa.fa-file-text:before { - content: "\f15c"; } +.fa.fa-file-text { + --fa: "\f15c"; } -.fa.fa-sort-alpha-asc:before { - content: "\f15d"; } +.fa.fa-sort-alpha-asc { + --fa: "\f15d"; } -.fa.fa-sort-alpha-desc:before { - content: "\f881"; } +.fa.fa-sort-alpha-desc { + --fa: "\f881"; } -.fa.fa-sort-amount-asc:before { - content: "\f884"; } +.fa.fa-sort-amount-asc { + --fa: "\f884"; } -.fa.fa-sort-amount-desc:before { - content: "\f160"; } +.fa.fa-sort-amount-desc { + --fa: "\f160"; } -.fa.fa-sort-numeric-asc:before { - content: "\f162"; } +.fa.fa-sort-numeric-asc { + --fa: "\f162"; } -.fa.fa-sort-numeric-desc:before { - content: "\f886"; } +.fa.fa-sort-numeric-desc { + --fa: "\f886"; } .fa.fa-youtube-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-youtube-square:before { - content: "\f431"; } +.fa.fa-youtube-square { + --fa: "\f431"; } .fa.fa-youtube { font-family: 'Font Awesome 6 Brands'; @@ -807,15 +807,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-xing-square:before { - content: "\f169"; } +.fa.fa-xing-square { + --fa: "\f169"; } .fa.fa-youtube-play { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-youtube-play:before { - content: "\f167"; } +.fa.fa-youtube-play { + --fa: "\f167"; } .fa.fa-dropbox { font-family: 'Font Awesome 6 Brands'; @@ -845,8 +845,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-bitbucket-square:before { - content: "\f171"; } +.fa.fa-bitbucket-square { + --fa: "\f171"; } .fa.fa-tumblr { font-family: 'Font Awesome 6 Brands'; @@ -856,20 +856,20 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-tumblr-square:before { - content: "\f174"; } +.fa.fa-tumblr-square { + --fa: "\f174"; } -.fa.fa-long-arrow-down:before { - content: "\f309"; } +.fa.fa-long-arrow-down { + --fa: "\f309"; } -.fa.fa-long-arrow-up:before { - content: "\f30c"; } +.fa.fa-long-arrow-up { + --fa: "\f30c"; } -.fa.fa-long-arrow-left:before { - content: "\f30a"; } +.fa.fa-long-arrow-left { + --fa: "\f30a"; } -.fa.fa-long-arrow-right:before { - content: "\f30b"; } +.fa.fa-long-arrow-right { + --fa: "\f30b"; } .fa.fa-apple { font-family: 'Font Awesome 6 Brands'; @@ -911,22 +911,22 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-gittip:before { - content: "\f184"; } +.fa.fa-gittip { + --fa: "\f184"; } .fa.fa-sun-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-sun-o:before { - content: "\f185"; } +.fa.fa-sun-o { + --fa: "\f185"; } .fa.fa-moon-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-moon-o:before { - content: "\f186"; } +.fa.fa-moon-o { + --fa: "\f186"; } .fa.fa-vk { font-family: 'Font Awesome 6 Brands'; @@ -952,56 +952,56 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-arrow-circle-o-right:before { - content: "\f35a"; } +.fa.fa-arrow-circle-o-right { + --fa: "\f35a"; } .fa.fa-arrow-circle-o-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-arrow-circle-o-left:before { - content: "\f359"; } +.fa.fa-arrow-circle-o-left { + --fa: "\f359"; } .fa.fa-caret-square-o-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-caret-square-o-left:before { - content: "\f191"; } +.fa.fa-caret-square-o-left { + --fa: "\f191"; } .fa.fa-toggle-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-toggle-left:before { - content: "\f191"; } +.fa.fa-toggle-left { + --fa: "\f191"; } .fa.fa-dot-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-dot-circle-o:before { - content: "\f192"; } +.fa.fa-dot-circle-o { + --fa: "\f192"; } .fa.fa-vimeo-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-vimeo-square:before { - content: "\f194"; } +.fa.fa-vimeo-square { + --fa: "\f194"; } -.fa.fa-try:before { - content: "\e2bb"; } +.fa.fa-try { + --fa: "\e2bb"; } -.fa.fa-turkish-lira:before { - content: "\e2bb"; } +.fa.fa-turkish-lira { + --fa: "\e2bb"; } .fa.fa-plus-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-plus-square-o:before { - content: "\f0fe"; } +.fa.fa-plus-square-o { + --fa: "\f0fe"; } .fa.fa-slack { font-family: 'Font Awesome 6 Brands'; @@ -1015,14 +1015,14 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-institution:before { - content: "\f19c"; } +.fa.fa-institution { + --fa: "\f19c"; } -.fa.fa-bank:before { - content: "\f19c"; } +.fa.fa-bank { + --fa: "\f19c"; } -.fa.fa-mortar-board:before { - content: "\f19d"; } +.fa.fa-mortar-board { + --fa: "\f19d"; } .fa.fa-yahoo { font-family: 'Font Awesome 6 Brands'; @@ -1040,8 +1040,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-reddit-square:before { - content: "\f1a2"; } +.fa.fa-reddit-square { + --fa: "\f1a2"; } .fa.fa-stumbleupon-circle { font-family: 'Font Awesome 6 Brands'; @@ -1083,8 +1083,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-behance-square:before { - content: "\f1b5"; } +.fa.fa-behance-square { + --fa: "\f1b5"; } .fa.fa-steam { font-family: 'Font Awesome 6 Brands'; @@ -1094,14 +1094,14 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-steam-square:before { - content: "\f1b7"; } +.fa.fa-steam-square { + --fa: "\f1b7"; } -.fa.fa-automobile:before { - content: "\f1b9"; } +.fa.fa-automobile { + --fa: "\f1b9"; } -.fa.fa-cab:before { - content: "\f1ba"; } +.fa.fa-cab { + --fa: "\f1ba"; } .fa.fa-spotify { font-family: 'Font Awesome 6 Brands'; @@ -1119,99 +1119,99 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-pdf-o:before { - content: "\f1c1"; } +.fa.fa-file-pdf-o { + --fa: "\f1c1"; } .fa.fa-file-word-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-word-o:before { - content: "\f1c2"; } +.fa.fa-file-word-o { + --fa: "\f1c2"; } .fa.fa-file-excel-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-excel-o:before { - content: "\f1c3"; } +.fa.fa-file-excel-o { + --fa: "\f1c3"; } .fa.fa-file-powerpoint-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-powerpoint-o:before { - content: "\f1c4"; } +.fa.fa-file-powerpoint-o { + --fa: "\f1c4"; } .fa.fa-file-image-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-image-o:before { - content: "\f1c5"; } +.fa.fa-file-image-o { + --fa: "\f1c5"; } .fa.fa-file-photo-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-photo-o:before { - content: "\f1c5"; } +.fa.fa-file-photo-o { + --fa: "\f1c5"; } .fa.fa-file-picture-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-picture-o:before { - content: "\f1c5"; } +.fa.fa-file-picture-o { + --fa: "\f1c5"; } .fa.fa-file-archive-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-archive-o:before { - content: "\f1c6"; } +.fa.fa-file-archive-o { + --fa: "\f1c6"; } .fa.fa-file-zip-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-zip-o:before { - content: "\f1c6"; } +.fa.fa-file-zip-o { + --fa: "\f1c6"; } .fa.fa-file-audio-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-audio-o:before { - content: "\f1c7"; } +.fa.fa-file-audio-o { + --fa: "\f1c7"; } .fa.fa-file-sound-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-sound-o:before { - content: "\f1c7"; } +.fa.fa-file-sound-o { + --fa: "\f1c7"; } .fa.fa-file-video-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-video-o:before { - content: "\f1c8"; } +.fa.fa-file-video-o { + --fa: "\f1c8"; } .fa.fa-file-movie-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-movie-o:before { - content: "\f1c8"; } +.fa.fa-file-movie-o { + --fa: "\f1c8"; } .fa.fa-file-code-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-code-o:before { - content: "\f1c9"; } +.fa.fa-file-code-o { + --fa: "\f1c9"; } .fa.fa-vine { font-family: 'Font Awesome 6 Brands'; @@ -1225,20 +1225,20 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-life-bouy:before { - content: "\f1cd"; } +.fa.fa-life-bouy { + --fa: "\f1cd"; } -.fa.fa-life-buoy:before { - content: "\f1cd"; } +.fa.fa-life-buoy { + --fa: "\f1cd"; } -.fa.fa-life-saver:before { - content: "\f1cd"; } +.fa.fa-life-saver { + --fa: "\f1cd"; } -.fa.fa-support:before { - content: "\f1cd"; } +.fa.fa-support { + --fa: "\f1cd"; } -.fa.fa-circle-o-notch:before { - content: "\f1ce"; } +.fa.fa-circle-o-notch { + --fa: "\f1ce"; } .fa.fa-rebel { font-family: 'Font Awesome 6 Brands'; @@ -1248,15 +1248,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-ra:before { - content: "\f1d0"; } +.fa.fa-ra { + --fa: "\f1d0"; } .fa.fa-resistance { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-resistance:before { - content: "\f1d0"; } +.fa.fa-resistance { + --fa: "\f1d0"; } .fa.fa-empire { font-family: 'Font Awesome 6 Brands'; @@ -1266,15 +1266,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-ge:before { - content: "\f1d1"; } +.fa.fa-ge { + --fa: "\f1d1"; } .fa.fa-git-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-git-square:before { - content: "\f1d2"; } +.fa.fa-git-square { + --fa: "\f1d2"; } .fa.fa-git { font-family: 'Font Awesome 6 Brands'; @@ -1288,15 +1288,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-y-combinator-square:before { - content: "\f1d4"; } +.fa.fa-y-combinator-square { + --fa: "\f1d4"; } .fa.fa-yc-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-yc-square:before { - content: "\f1d4"; } +.fa.fa-yc-square { + --fa: "\f1d4"; } .fa.fa-tencent-weibo { font-family: 'Font Awesome 6 Brands'; @@ -1314,49 +1314,49 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-wechat:before { - content: "\f1d7"; } +.fa.fa-wechat { + --fa: "\f1d7"; } -.fa.fa-send:before { - content: "\f1d8"; } +.fa.fa-send { + --fa: "\f1d8"; } .fa.fa-paper-plane-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-paper-plane-o:before { - content: "\f1d8"; } +.fa.fa-paper-plane-o { + --fa: "\f1d8"; } .fa.fa-send-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-send-o:before { - content: "\f1d8"; } +.fa.fa-send-o { + --fa: "\f1d8"; } .fa.fa-circle-thin { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-circle-thin:before { - content: "\f111"; } +.fa.fa-circle-thin { + --fa: "\f111"; } -.fa.fa-header:before { - content: "\f1dc"; } +.fa.fa-header { + --fa: "\f1dc"; } .fa.fa-futbol-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-futbol-o:before { - content: "\f1e3"; } +.fa.fa-futbol-o { + --fa: "\f1e3"; } .fa.fa-soccer-ball-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-soccer-ball-o:before { - content: "\f1e3"; } +.fa.fa-soccer-ball-o { + --fa: "\f1e3"; } .fa.fa-slideshare { font-family: 'Font Awesome 6 Brands'; @@ -1374,8 +1374,8 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-newspaper-o:before { - content: "\f1ea"; } +.fa.fa-newspaper-o { + --fa: "\f1ea"; } .fa.fa-paypal { font-family: 'Font Awesome 6 Brands'; @@ -1413,27 +1413,27 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-bell-slash-o:before { - content: "\f1f6"; } +.fa.fa-bell-slash-o { + --fa: "\f1f6"; } -.fa.fa-trash:before { - content: "\f2ed"; } +.fa.fa-trash { + --fa: "\f2ed"; } .fa.fa-copyright { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-eyedropper:before { - content: "\f1fb"; } +.fa.fa-eyedropper { + --fa: "\f1fb"; } -.fa.fa-area-chart:before { - content: "\f1fe"; } +.fa.fa-area-chart { + --fa: "\f1fe"; } -.fa.fa-pie-chart:before { - content: "\f200"; } +.fa.fa-pie-chart { + --fa: "\f200"; } -.fa.fa-line-chart:before { - content: "\f201"; } +.fa.fa-line-chart { + --fa: "\f201"; } .fa.fa-lastfm { font-family: 'Font Awesome 6 Brands'; @@ -1443,8 +1443,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-lastfm-square:before { - content: "\f203"; } +.fa.fa-lastfm-square { + --fa: "\f203"; } .fa.fa-ioxhost { font-family: 'Font Awesome 6 Brands'; @@ -1458,17 +1458,17 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-cc:before { - content: "\f20a"; } +.fa.fa-cc { + --fa: "\f20a"; } -.fa.fa-ils:before { - content: "\f20b"; } +.fa.fa-ils { + --fa: "\f20b"; } -.fa.fa-shekel:before { - content: "\f20b"; } +.fa.fa-shekel { + --fa: "\f20b"; } -.fa.fa-sheqel:before { - content: "\f20b"; } +.fa.fa-sheqel { + --fa: "\f20b"; } .fa.fa-buysellads { font-family: 'Font Awesome 6 Brands'; @@ -1510,24 +1510,24 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-diamond:before { - content: "\f3a5"; } +.fa.fa-diamond { + --fa: "\f3a5"; } -.fa.fa-transgender:before { - content: "\f224"; } +.fa.fa-transgender { + --fa: "\f224"; } -.fa.fa-intersex:before { - content: "\f224"; } +.fa.fa-intersex { + --fa: "\f224"; } -.fa.fa-transgender-alt:before { - content: "\f225"; } +.fa.fa-transgender-alt { + --fa: "\f225"; } .fa.fa-facebook-official { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-facebook-official:before { - content: "\f09a"; } +.fa.fa-facebook-official { + --fa: "\f09a"; } .fa.fa-pinterest-p { font-family: 'Font Awesome 6 Brands'; @@ -1537,8 +1537,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-hotel:before { - content: "\f236"; } +.fa.fa-hotel { + --fa: "\f236"; } .fa.fa-viacoin { font-family: 'Font Awesome 6 Brands'; @@ -1556,8 +1556,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-yc:before { - content: "\f23b"; } +.fa.fa-yc { + --fa: "\f23b"; } .fa.fa-optin-monster { font-family: 'Font Awesome 6 Brands'; @@ -1571,23 +1571,23 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-battery-4:before { - content: "\f240"; } +.fa.fa-battery-4 { + --fa: "\f240"; } -.fa.fa-battery:before { - content: "\f240"; } +.fa.fa-battery { + --fa: "\f240"; } -.fa.fa-battery-3:before { - content: "\f241"; } +.fa.fa-battery-3 { + --fa: "\f241"; } -.fa.fa-battery-2:before { - content: "\f242"; } +.fa.fa-battery-2 { + --fa: "\f242"; } -.fa.fa-battery-1:before { - content: "\f243"; } +.fa.fa-battery-1 { + --fa: "\f243"; } -.fa.fa-battery-0:before { - content: "\f244"; } +.fa.fa-battery-0 { + --fa: "\f244"; } .fa.fa-object-group { font-family: 'Font Awesome 6 Free'; @@ -1601,8 +1601,8 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-sticky-note-o:before { - content: "\f249"; } +.fa.fa-sticky-note-o { + --fa: "\f249"; } .fa.fa-cc-jcb { font-family: 'Font Awesome 6 Brands'; @@ -1616,80 +1616,80 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hourglass-o:before { - content: "\f254"; } +.fa.fa-hourglass-o { + --fa: "\f254"; } -.fa.fa-hourglass-1:before { - content: "\f251"; } +.fa.fa-hourglass-1 { + --fa: "\f251"; } -.fa.fa-hourglass-2:before { - content: "\f252"; } +.fa.fa-hourglass-2 { + --fa: "\f252"; } -.fa.fa-hourglass-3:before { - content: "\f253"; } +.fa.fa-hourglass-3 { + --fa: "\f253"; } .fa.fa-hand-rock-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-rock-o:before { - content: "\f255"; } +.fa.fa-hand-rock-o { + --fa: "\f255"; } .fa.fa-hand-grab-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-grab-o:before { - content: "\f255"; } +.fa.fa-hand-grab-o { + --fa: "\f255"; } .fa.fa-hand-paper-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-paper-o:before { - content: "\f256"; } +.fa.fa-hand-paper-o { + --fa: "\f256"; } .fa.fa-hand-stop-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-stop-o:before { - content: "\f256"; } +.fa.fa-hand-stop-o { + --fa: "\f256"; } .fa.fa-hand-scissors-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-scissors-o:before { - content: "\f257"; } +.fa.fa-hand-scissors-o { + --fa: "\f257"; } .fa.fa-hand-lizard-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-lizard-o:before { - content: "\f258"; } +.fa.fa-hand-lizard-o { + --fa: "\f258"; } .fa.fa-hand-spock-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-spock-o:before { - content: "\f259"; } +.fa.fa-hand-spock-o { + --fa: "\f259"; } .fa.fa-hand-pointer-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-pointer-o:before { - content: "\f25a"; } +.fa.fa-hand-pointer-o { + --fa: "\f25a"; } .fa.fa-hand-peace-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-peace-o:before { - content: "\f25b"; } +.fa.fa-hand-peace-o { + --fa: "\f25b"; } .fa.fa-registered { font-family: 'Font Awesome 6 Free'; @@ -1715,8 +1715,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-odnoklassniki-square:before { - content: "\f264"; } +.fa.fa-odnoklassniki-square { + --fa: "\f264"; } .fa.fa-get-pocket { font-family: 'Font Awesome 6 Brands'; @@ -1746,8 +1746,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-television:before { - content: "\f26c"; } +.fa.fa-television { + --fa: "\f26c"; } .fa.fa-contao { font-family: 'Font Awesome 6 Brands'; @@ -1765,46 +1765,46 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-plus-o:before { - content: "\f271"; } +.fa.fa-calendar-plus-o { + --fa: "\f271"; } .fa.fa-calendar-minus-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-minus-o:before { - content: "\f272"; } +.fa.fa-calendar-minus-o { + --fa: "\f272"; } .fa.fa-calendar-times-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-times-o:before { - content: "\f273"; } +.fa.fa-calendar-times-o { + --fa: "\f273"; } .fa.fa-calendar-check-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-check-o:before { - content: "\f274"; } +.fa.fa-calendar-check-o { + --fa: "\f274"; } .fa.fa-map-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-map-o:before { - content: "\f279"; } +.fa.fa-map-o { + --fa: "\f279"; } -.fa.fa-commenting:before { - content: "\f4ad"; } +.fa.fa-commenting { + --fa: "\f4ad"; } .fa.fa-commenting-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-commenting-o:before { - content: "\f4ad"; } +.fa.fa-commenting-o { + --fa: "\f4ad"; } .fa.fa-houzz { font-family: 'Font Awesome 6 Brands'; @@ -1814,8 +1814,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-vimeo:before { - content: "\f27d"; } +.fa.fa-vimeo { + --fa: "\f27d"; } .fa.fa-black-tie { font-family: 'Font Awesome 6 Brands'; @@ -1833,8 +1833,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-credit-card-alt:before { - content: "\f09d"; } +.fa.fa-credit-card-alt { + --fa: "\f09d"; } .fa.fa-codiepie { font-family: 'Font Awesome 6 Brands'; @@ -1868,15 +1868,15 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-pause-circle-o:before { - content: "\f28b"; } +.fa.fa-pause-circle-o { + --fa: "\f28b"; } .fa.fa-stop-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-stop-circle-o:before { - content: "\f28d"; } +.fa.fa-stop-circle-o { + --fa: "\f28d"; } .fa.fa-bluetooth { font-family: 'Font Awesome 6 Brands'; @@ -1906,27 +1906,27 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-wheelchair-alt:before { - content: "\f368"; } +.fa.fa-wheelchair-alt { + --fa: "\f368"; } .fa.fa-question-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-question-circle-o:before { - content: "\f059"; } +.fa.fa-question-circle-o { + --fa: "\f059"; } -.fa.fa-volume-control-phone:before { - content: "\f2a0"; } +.fa.fa-volume-control-phone { + --fa: "\f2a0"; } -.fa.fa-asl-interpreting:before { - content: "\f2a3"; } +.fa.fa-asl-interpreting { + --fa: "\f2a3"; } -.fa.fa-deafness:before { - content: "\f2a4"; } +.fa.fa-deafness { + --fa: "\f2a4"; } -.fa.fa-hard-of-hearing:before { - content: "\f2a4"; } +.fa.fa-hard-of-hearing { + --fa: "\f2a4"; } .fa.fa-glide { font-family: 'Font Awesome 6 Brands'; @@ -1936,8 +1936,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-signing:before { - content: "\f2a7"; } +.fa.fa-signing { + --fa: "\f2a7"; } .fa.fa-viadeo { font-family: 'Font Awesome 6 Brands'; @@ -1947,8 +1947,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-viadeo-square:before { - content: "\f2aa"; } +.fa.fa-viadeo-square { + --fa: "\f2aa"; } .fa.fa-snapchat { font-family: 'Font Awesome 6 Brands'; @@ -1958,15 +1958,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-snapchat-ghost:before { - content: "\f2ab"; } +.fa.fa-snapchat-ghost { + --fa: "\f2ab"; } .fa.fa-snapchat-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-snapchat-square:before { - content: "\f2ad"; } +.fa.fa-snapchat-square { + --fa: "\f2ad"; } .fa.fa-pied-piper { font-family: 'Font Awesome 6 Brands'; @@ -1988,15 +1988,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-google-plus-official:before { - content: "\f2b3"; } +.fa.fa-google-plus-official { + --fa: "\f2b3"; } .fa.fa-google-plus-circle { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-google-plus-circle:before { - content: "\f2b3"; } +.fa.fa-google-plus-circle { + --fa: "\f2b3"; } .fa.fa-font-awesome { font-family: 'Font Awesome 6 Brands'; @@ -2006,22 +2006,22 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-fa:before { - content: "\f2b4"; } +.fa.fa-fa { + --fa: "\f2b4"; } .fa.fa-handshake-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-handshake-o:before { - content: "\f2b5"; } +.fa.fa-handshake-o { + --fa: "\f2b5"; } .fa.fa-envelope-open-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-envelope-open-o:before { - content: "\f2b6"; } +.fa.fa-envelope-open-o { + --fa: "\f2b6"; } .fa.fa-linode { font-family: 'Font Awesome 6 Brands'; @@ -2031,60 +2031,60 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-address-book-o:before { - content: "\f2b9"; } +.fa.fa-address-book-o { + --fa: "\f2b9"; } -.fa.fa-vcard:before { - content: "\f2bb"; } +.fa.fa-vcard { + --fa: "\f2bb"; } .fa.fa-address-card-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-address-card-o:before { - content: "\f2bb"; } +.fa.fa-address-card-o { + --fa: "\f2bb"; } .fa.fa-vcard-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-vcard-o:before { - content: "\f2bb"; } +.fa.fa-vcard-o { + --fa: "\f2bb"; } .fa.fa-user-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-user-circle-o:before { - content: "\f2bd"; } +.fa.fa-user-circle-o { + --fa: "\f2bd"; } .fa.fa-user-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-user-o:before { - content: "\f007"; } +.fa.fa-user-o { + --fa: "\f007"; } .fa.fa-id-badge { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-drivers-license:before { - content: "\f2c2"; } +.fa.fa-drivers-license { + --fa: "\f2c2"; } .fa.fa-id-card-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-id-card-o:before { - content: "\f2c2"; } +.fa.fa-id-card-o { + --fa: "\f2c2"; } .fa.fa-drivers-license-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-drivers-license-o:before { - content: "\f2c2"; } +.fa.fa-drivers-license-o { + --fa: "\f2c2"; } .fa.fa-quora { font-family: 'Font Awesome 6 Brands'; @@ -2098,29 +2098,29 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-thermometer-4:before { - content: "\f2c7"; } +.fa.fa-thermometer-4 { + --fa: "\f2c7"; } -.fa.fa-thermometer:before { - content: "\f2c7"; } +.fa.fa-thermometer { + --fa: "\f2c7"; } -.fa.fa-thermometer-3:before { - content: "\f2c8"; } +.fa.fa-thermometer-3 { + --fa: "\f2c8"; } -.fa.fa-thermometer-2:before { - content: "\f2c9"; } +.fa.fa-thermometer-2 { + --fa: "\f2c9"; } -.fa.fa-thermometer-1:before { - content: "\f2ca"; } +.fa.fa-thermometer-1 { + --fa: "\f2ca"; } -.fa.fa-thermometer-0:before { - content: "\f2cb"; } +.fa.fa-thermometer-0 { + --fa: "\f2cb"; } -.fa.fa-bathtub:before { - content: "\f2cd"; } +.fa.fa-bathtub { + --fa: "\f2cd"; } -.fa.fa-s15:before { - content: "\f2cd"; } +.fa.fa-s15 { + --fa: "\f2cd"; } .fa.fa-window-maximize { font-family: 'Font Awesome 6 Free'; @@ -2130,22 +2130,22 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-times-rectangle:before { - content: "\f410"; } +.fa.fa-times-rectangle { + --fa: "\f410"; } .fa.fa-window-close-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-window-close-o:before { - content: "\f410"; } +.fa.fa-window-close-o { + --fa: "\f410"; } .fa.fa-times-rectangle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-times-rectangle-o:before { - content: "\f410"; } +.fa.fa-times-rectangle-o { + --fa: "\f410"; } .fa.fa-bandcamp { font-family: 'Font Awesome 6 Brands'; @@ -2171,15 +2171,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-eercast:before { - content: "\f2da"; } +.fa.fa-eercast { + --fa: "\f2da"; } .fa.fa-snowflake-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-snowflake-o:before { - content: "\f2dc"; } +.fa.fa-snowflake-o { + --fa: "\f2dc"; } .fa.fa-superpowers { font-family: 'Font Awesome 6 Brands'; diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf index 1fbb1f7c3..0f82a8360 100644 Binary files a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf and b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf differ diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 index 5d2802169..3c5cf97ec 100644 Binary files a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 and b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf index 549d68dc0..9ee1919dc 100644 Binary files a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf and b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf differ diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 index 18400d7fa..57d917965 100644 Binary files a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 and b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf index bb2a86956..1c10972ec 100644 Binary files a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf and b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf differ diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 index 758dd4f60..16721020f 100644 Binary files a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 and b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/abp/core/abp.js b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/abp/core/abp.js index ad1d23844..b6c3fdb8f 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/abp/core/abp.js +++ b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/abp/core/abp.js @@ -480,7 +480,11 @@ var abp = abp || {}; var args = Array.prototype.slice.call(arguments, 1); for (var i = 0; i < callbacks.length; i++) { - callbacks[i].apply(this, args); + try { + callbacks[i].apply(this, args); + } catch(e) { + console.error(e); + } } }; @@ -748,52 +752,55 @@ var abp = abp || {}; return abp.clock.kind === 'Utc'; }; - var toLocal = function (date) { - return new Date( - date.getFullYear(), - date.getMonth(), - date.getDate(), - date.getHours(), - date.getMinutes(), - date.getSeconds(), - date.getMilliseconds() - ); - }; + // Normalize Date object or date string to standard string format that will be sent to server + abp.clock.normalizeToString = function (date) { + if (!date) { + return date; + } - var toUtc = function (date) { - return Date.UTC( - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate(), - date.getUTCHours(), - date.getUTCMinutes(), - date.getUTCSeconds(), - date.getUTCMilliseconds() - ); - }; + var dateObj = date instanceof Date ? date : new Date(date); + if (isNaN(dateObj)) { + return date; + } - abp.clock.now = function () { if (abp.clock.kind === 'Utc') { - return toUtc(new Date()); + return dateObj.toISOString(); } - return new Date(); - }; - abp.clock.normalize = function (date) { - var kind = abp.clock.kind; + function padZero(num) { + return num < 10 ? '0' + num : num; + } - if (kind === 'Unspecified') { - return date; + function padMilliseconds(num) { + if (num < 10) return '00' + num; + if (num < 100) return '0' + num; + return num; } + + // yyyy-MM-ddTHH:mm:ss.SSS + return dateObj.getFullYear() + '-' + + padZero(dateObj.getMonth() + 1) + '-' + + padZero(dateObj.getDate()) + 'T' + + padZero(dateObj.getHours()) + ':' + + padZero(dateObj.getMinutes()) + ':' + + padZero(dateObj.getSeconds()) + '.' + + padMilliseconds(dateObj.getMilliseconds()); + }; - if (kind === 'Local') { - return toLocal(date); + // Normalize date string to locale date string that will be displayed to user + abp.clock.normalizeToLocaleString = function (dateString) { + if (!dateString) { + return dateString; } - if (kind === 'Utc') { - return toUtc(date); + var date = new Date(dateString); + if (isNaN(date)) { + return dateString; } - }; + + //TODO: Get timezone setting and pass it to toLocaleString + return date.toLocaleString(); + } /* FEATURES *************************************************/ diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.rtl.min.css.map b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.rtl.min.css.map index a77bdfb00..494bd7001 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.rtl.min.css.map +++ b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/bootstrap/css/bootstrap.rtl.min.css.map @@ -1 +1,98 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","dist/css/bootstrap.rtl.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_color-mode.scss","../../scss/_reboot.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_color-bg.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n --#{$prefix}heading-color: #{$headings-color};\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-color: #{$mark-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n --#{$prefix}highlight-color: #{$mark-color-dark};\n --#{$prefix}highlight-bg: #{$mark-bg-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","@charset \"UTF-8\";\n/*!\n * Bootstrap v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text-emphasis: #052c65;\n --bs-secondary-text-emphasis: #2b2f32;\n --bs-success-text-emphasis: #0a3622;\n --bs-info-text-emphasis: #055160;\n --bs-warning-text-emphasis: #664d03;\n --bs-danger-text-emphasis: #58151c;\n --bs-light-text-emphasis: #495057;\n --bs-dark-text-emphasis: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #e2e3e5;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #c4c8cb;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-heading-color: inherit;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-color: #212529;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-xxl: 2rem;\n --bs-border-radius-2xl: var(--bs-border-radius-xxl);\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n --bs-focus-ring-width: 0.25rem;\n --bs-focus-ring-opacity: 0.25;\n --bs-focus-ring-color: rgba(13, 110, 253, 0.25);\n --bs-form-valid-color: #198754;\n --bs-form-valid-border-color: #198754;\n --bs-form-invalid-color: #dc3545;\n --bs-form-invalid-border-color: #dc3545;\n}\n\n[data-bs-theme=dark] {\n color-scheme: dark;\n --bs-body-color: #dee2e6;\n --bs-body-color-rgb: 222, 226, 230;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #fff;\n --bs-emphasis-color-rgb: 255, 255, 255;\n --bs-secondary-color: rgba(222, 226, 230, 0.75);\n --bs-secondary-color-rgb: 222, 226, 230;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(222, 226, 230, 0.5);\n --bs-tertiary-color-rgb: 222, 226, 230;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-primary-text-emphasis: #6ea8fe;\n --bs-secondary-text-emphasis: #a7acb1;\n --bs-success-text-emphasis: #75b798;\n --bs-info-text-emphasis: #6edff6;\n --bs-warning-text-emphasis: #ffda6a;\n --bs-danger-text-emphasis: #ea868f;\n --bs-light-text-emphasis: #f8f9fa;\n --bs-dark-text-emphasis: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #161719;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #41464b;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #087990;\n --bs-warning-border-subtle: #997404;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: inherit;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #8bb9fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 139, 185, 254;\n --bs-code-color: #e685b5;\n --bs-highlight-color: #dee2e6;\n --bs-highlight-bg: #664d03;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n --bs-form-valid-color: #75b798;\n --bs-form-valid-border-color: #75b798;\n --bs-form-invalid-color: #ea868f;\n --bs-form-invalid-border-color: #ea868f;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n margin: 0;\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n margin: 1rem 0;\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: 0.25;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n color: var(--bs-heading-color);\n}\n\nh1, .h1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n h1, .h1 {\n font-size: 2.5rem;\n }\n}\n\nh2, .h2 {\n font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n h2, .h2 {\n font-size: 2rem;\n }\n}\n\nh3, .h3 {\n font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n h3, .h3 {\n font-size: 1.75rem;\n }\n}\n\nh4, .h4 {\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n h4, .h4 {\n font-size: 1.5rem;\n }\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul {\n padding-right: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-right: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall, .small {\n font-size: 0.875em;\n}\n\nmark, .mark {\n padding: 0.1875em;\n color: var(--bs-highlight-color);\n background-color: var(--bs-highlight-bg);\n}\n\nsub,\nsup {\n position: relative;\n font-size: 0.75em;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n font-size: 0.875em;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n font-size: 0.875em;\n color: var(--bs-code-color);\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.1875rem 0.375rem;\n font-size: 0.875em;\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: 0.25rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-secondary-color);\n text-align: right;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=button] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n float: right;\n width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: calc(1.275rem + 0.3vw);\n line-height: inherit;\n}\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\nlegend + * {\n clear: right;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=search] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: calc(1.625rem + 4.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-1 {\n font-size: 5rem;\n }\n}\n\n.display-2 {\n font-size: calc(1.575rem + 3.9vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-2 {\n font-size: 4.5rem;\n }\n}\n\n.display-3 {\n font-size: calc(1.525rem + 3.3vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-3 {\n font-size: 4rem;\n }\n}\n\n.display-4 {\n font-size: calc(1.475rem + 2.7vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-4 {\n font-size: 3.5rem;\n }\n}\n\n.display-5 {\n font-size: calc(1.425rem + 2.1vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-5 {\n font-size: 3rem;\n }\n}\n\n.display-6 {\n font-size: calc(1.375rem + 1.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-6 {\n font-size: 2.5rem;\n }\n}\n\n.list-unstyled {\n padding-right: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-right: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n margin-left: 0.5rem;\n}\n\n.initialism {\n font-size: 0.875em;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n.blockquote > :last-child {\n margin-bottom: 0;\n}\n\n.blockquote-footer {\n margin-top: -1rem;\n margin-bottom: 1rem;\n font-size: 0.875em;\n color: #6c757d;\n}\n.blockquote-footer::before {\n content: \"— \";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: var(--bs-body-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-left: auto;\n margin-right: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-right: 8.33333333%;\n}\n\n.offset-2 {\n margin-right: 16.66666667%;\n}\n\n.offset-3 {\n margin-right: 25%;\n}\n\n.offset-4 {\n margin-right: 33.33333333%;\n}\n\n.offset-5 {\n margin-right: 41.66666667%;\n}\n\n.offset-6 {\n margin-right: 50%;\n}\n\n.offset-7 {\n margin-right: 58.33333333%;\n}\n\n.offset-8 {\n margin-right: 66.66666667%;\n}\n\n.offset-9 {\n margin-right: 75%;\n}\n\n.offset-10 {\n margin-right: 83.33333333%;\n}\n\n.offset-11 {\n margin-right: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-right: 0;\n }\n .offset-sm-1 {\n margin-right: 8.33333333%;\n }\n .offset-sm-2 {\n margin-right: 16.66666667%;\n }\n .offset-sm-3 {\n margin-right: 25%;\n }\n .offset-sm-4 {\n margin-right: 33.33333333%;\n }\n .offset-sm-5 {\n margin-right: 41.66666667%;\n }\n .offset-sm-6 {\n margin-right: 50%;\n }\n .offset-sm-7 {\n margin-right: 58.33333333%;\n }\n .offset-sm-8 {\n margin-right: 66.66666667%;\n }\n .offset-sm-9 {\n margin-right: 75%;\n }\n .offset-sm-10 {\n margin-right: 83.33333333%;\n }\n .offset-sm-11 {\n margin-right: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-right: 0;\n }\n .offset-md-1 {\n margin-right: 8.33333333%;\n }\n .offset-md-2 {\n margin-right: 16.66666667%;\n }\n .offset-md-3 {\n margin-right: 25%;\n }\n .offset-md-4 {\n margin-right: 33.33333333%;\n }\n .offset-md-5 {\n margin-right: 41.66666667%;\n }\n .offset-md-6 {\n margin-right: 50%;\n }\n .offset-md-7 {\n margin-right: 58.33333333%;\n }\n .offset-md-8 {\n margin-right: 66.66666667%;\n }\n .offset-md-9 {\n margin-right: 75%;\n }\n .offset-md-10 {\n margin-right: 83.33333333%;\n }\n .offset-md-11 {\n margin-right: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-right: 0;\n }\n .offset-lg-1 {\n margin-right: 8.33333333%;\n }\n .offset-lg-2 {\n margin-right: 16.66666667%;\n }\n .offset-lg-3 {\n margin-right: 25%;\n }\n .offset-lg-4 {\n margin-right: 33.33333333%;\n }\n .offset-lg-5 {\n margin-right: 41.66666667%;\n }\n .offset-lg-6 {\n margin-right: 50%;\n }\n .offset-lg-7 {\n margin-right: 58.33333333%;\n }\n .offset-lg-8 {\n margin-right: 66.66666667%;\n }\n .offset-lg-9 {\n margin-right: 75%;\n }\n .offset-lg-10 {\n margin-right: 83.33333333%;\n }\n .offset-lg-11 {\n margin-right: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-right: 0;\n }\n .offset-xl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xl-3 {\n margin-right: 25%;\n }\n .offset-xl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xl-6 {\n margin-right: 50%;\n }\n .offset-xl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xl-9 {\n margin-right: 75%;\n }\n .offset-xl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xl-11 {\n margin-right: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-right: 0;\n }\n .offset-xxl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-right: 25%;\n }\n .offset-xxl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-right: 50%;\n }\n .offset-xxl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-right: 75%;\n }\n .offset-xxl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-right: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.table {\n --bs-table-color-type: initial;\n --bs-table-bg-type: initial;\n --bs-table-color-state: initial;\n --bs-table-bg-state: initial;\n --bs-table-color: var(--bs-emphasis-color);\n --bs-table-bg: var(--bs-body-bg);\n --bs-table-border-color: var(--bs-border-color);\n --bs-table-accent-bg: transparent;\n --bs-table-striped-color: var(--bs-emphasis-color);\n --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05);\n --bs-table-active-color: var(--bs-emphasis-color);\n --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1);\n --bs-table-hover-color: var(--bs-emphasis-color);\n --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075);\n width: 100%;\n margin-bottom: 1rem;\n vertical-align: top;\n border-color: var(--bs-table-border-color);\n}\n.table > :not(caption) > * > * {\n padding: 0.5rem 0.5rem;\n color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));\n background-color: var(--bs-table-bg);\n border-bottom-width: var(--bs-border-width);\n box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));\n}\n.table > tbody {\n vertical-align: inherit;\n}\n.table > thead {\n vertical-align: bottom;\n}\n\n.table-group-divider {\n border-top: calc(var(--bs-border-width) * 2) solid currentcolor;\n}\n\n.caption-top {\n caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n border-width: var(--bs-border-width) 0;\n}\n.table-bordered > :not(caption) > * > * {\n border-width: 0 var(--bs-border-width);\n}\n\n.table-borderless > :not(caption) > * > * {\n border-bottom-width: 0;\n}\n.table-borderless > :not(:first-child) {\n border-top-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) > * {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-striped-columns > :not(caption) > tr > :nth-child(even) {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-active {\n --bs-table-color-state: var(--bs-table-active-color);\n --bs-table-bg-state: var(--bs-table-active-bg);\n}\n\n.table-hover > tbody > tr:hover > * {\n --bs-table-color-state: var(--bs-table-hover-color);\n --bs-table-bg-state: var(--bs-table-hover-bg);\n}\n\n.table-primary {\n --bs-table-color: #000;\n --bs-table-bg: #cfe2ff;\n --bs-table-border-color: #a6b5cc;\n --bs-table-striped-bg: #c5d7f2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bacbe6;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfd1ec;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-secondary {\n --bs-table-color: #000;\n --bs-table-bg: #e2e3e5;\n --bs-table-border-color: #b5b6b7;\n --bs-table-striped-bg: #d7d8da;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #cbccce;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #d1d2d4;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-success {\n --bs-table-color: #000;\n --bs-table-bg: #d1e7dd;\n --bs-table-border-color: #a7b9b1;\n --bs-table-striped-bg: #c7dbd2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bcd0c7;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #c1d6cc;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-info {\n --bs-table-color: #000;\n --bs-table-bg: #cff4fc;\n --bs-table-border-color: #a6c3ca;\n --bs-table-striped-bg: #c5e8ef;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #badce3;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfe2e9;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-warning {\n --bs-table-color: #000;\n --bs-table-bg: #fff3cd;\n --bs-table-border-color: #ccc2a4;\n --bs-table-striped-bg: #f2e7c3;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #e6dbb9;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #ece1be;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-danger {\n --bs-table-color: #000;\n --bs-table-bg: #f8d7da;\n --bs-table-border-color: #c6acae;\n --bs-table-striped-bg: #eccccf;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfc2c4;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5c7ca;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-light {\n --bs-table-color: #000;\n --bs-table-bg: #f8f9fa;\n --bs-table-border-color: #c6c7c8;\n --bs-table-striped-bg: #ecedee;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfe0e1;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5e6e7;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-dark {\n --bs-table-color: #fff;\n --bs-table-bg: #212529;\n --bs-table-border-color: #4d5154;\n --bs-table-striped-bg: #2c3034;\n --bs-table-striped-color: #fff;\n --bs-table-active-bg: #373b3e;\n --bs-table-active-color: #fff;\n --bs-table-hover-bg: #323539;\n --bs-table-hover-color: #fff;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-responsive {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 767.98px) {\n .table-responsive-md {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 1399.98px) {\n .table-responsive-xxl {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n.form-label {\n margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + var(--bs-border-width));\n padding-bottom: calc(0.375rem + var(--bs-border-width));\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + var(--bs-border-width));\n padding-bottom: calc(0.5rem + var(--bs-border-width));\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + var(--bs-border-width));\n padding-bottom: calc(0.25rem + var(--bs-border-width));\n font-size: 0.875rem;\n}\n\n.form-text {\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: var(--bs-body-bg);\n background-clip: padding-box;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n.form-control[type=file] {\n overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control:focus {\n color: var(--bs-body-color);\n background-color: var(--bs-body-bg);\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-control::-webkit-date-and-time-value {\n min-width: 85px;\n height: 1.5em;\n margin: 0;\n}\n.form-control::-webkit-datetime-edit {\n display: block;\n padding: 0;\n}\n.form-control::-moz-placeholder {\n color: var(--bs-secondary-color);\n opacity: 1;\n}\n.form-control::placeholder {\n color: var(--bs-secondary-color);\n opacity: 1;\n}\n.form-control:disabled {\n background-color: var(--bs-secondary-bg);\n opacity: 1;\n}\n.form-control::-webkit-file-upload-button {\n padding: 0.375rem 0.75rem;\n margin: -0.375rem -0.75rem;\n -webkit-margin-end: 0.75rem;\n margin-inline-end: 0.75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\n -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n.form-control::file-selector-button {\n padding: 0.375rem 0.75rem;\n margin: -0.375rem -0.75rem;\n -webkit-margin-end: 0.75rem;\n margin-inline-end: 0.75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control::-webkit-file-upload-button {\n -webkit-transition: none;\n transition: none;\n }\n .form-control::file-selector-button {\n transition: none;\n }\n}\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n background-color: var(--bs-secondary-bg);\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n background-color: var(--bs-secondary-bg);\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n line-height: 1.5;\n color: var(--bs-body-color);\n background-color: transparent;\n border: solid transparent;\n border-width: var(--bs-border-width) 0;\n}\n.form-control-plaintext:focus {\n outline: 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-left: 0;\n padding-right: 0;\n}\n\n.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n.form-control-sm::-webkit-file-upload-button {\n padding: 0.25rem 0.5rem;\n margin: -0.25rem -0.5rem;\n -webkit-margin-end: 0.5rem;\n margin-inline-end: 0.5rem;\n}\n.form-control-sm::file-selector-button {\n padding: 0.25rem 0.5rem;\n margin: -0.25rem -0.5rem;\n -webkit-margin-end: 0.5rem;\n margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n.form-control-lg::-webkit-file-upload-button {\n padding: 0.5rem 1rem;\n margin: -0.5rem -1rem;\n -webkit-margin-end: 1rem;\n margin-inline-end: 1rem;\n}\n.form-control-lg::file-selector-button {\n padding: 0.5rem 1rem;\n margin: -0.5rem -1rem;\n -webkit-margin-end: 1rem;\n margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-control-color {\n width: 3rem;\n height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color::-webkit-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color.form-control-sm {\n height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\n.form-control-color.form-control-lg {\n height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem 0.375rem 2.25rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: var(--bs-body-bg);\n background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);\n background-repeat: no-repeat;\n background-position: left 0.75rem center;\n background-size: 16px 12px;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-select {\n transition: none;\n }\n}\n.form-select:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n padding-left: 0.75rem;\n background-image: none;\n}\n.form-select:disabled {\n background-color: var(--bs-secondary-bg);\n}\n.form-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 var(--bs-body-color);\n}\n\n.form-select-sm {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-right: 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.form-select-lg {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-right: 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n[data-bs-theme=dark] .form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n}\n\n.form-check {\n display: block;\n min-height: 1.5rem;\n padding-right: 1.5em;\n margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n float: right;\n margin-right: -1.5em;\n}\n\n.form-check-reverse {\n padding-left: 1.5em;\n padding-right: 0;\n text-align: left;\n}\n.form-check-reverse .form-check-input {\n float: left;\n margin-left: -1.5em;\n margin-right: 0;\n}\n\n.form-check-input {\n --bs-form-check-bg: var(--bs-body-bg);\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n margin-top: 0.25em;\n vertical-align: top;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: var(--bs-form-check-bg);\n background-image: var(--bs-form-check-bg-image);\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n border: var(--bs-border-width) solid var(--bs-border-color);\n -webkit-print-color-adjust: exact;\n color-adjust: exact;\n print-color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n border-radius: 50%;\n}\n.form-check-input:active {\n filter: brightness(90%);\n}\n.form-check-input:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-check-input:checked {\n background-color: #0d6efd;\n border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n background-color: #0d6efd;\n border-color: #0d6efd;\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n pointer-events: none;\n filter: none;\n opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n cursor: default;\n opacity: 0.5;\n}\n\n.form-switch {\n padding-right: 2.5em;\n}\n.form-switch .form-check-input {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n width: 2em;\n margin-right: -2.5em;\n background-image: var(--bs-form-switch-bg);\n background-position: right center;\n border-radius: 2em;\n transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-switch .form-check-input {\n transition: none;\n }\n}\n.form-switch .form-check-input:focus {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n background-position: left center;\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-switch.form-check-reverse {\n padding-left: 2.5em;\n padding-right: 0;\n}\n.form-switch.form-check-reverse .form-check-input {\n margin-left: -2.5em;\n margin-right: 0;\n}\n\n.form-check-inline {\n display: inline-block;\n margin-left: 1rem;\n}\n\n.btn-check {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n pointer-events: none;\n filter: none;\n opacity: 0.65;\n}\n\n[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e\");\n}\n\n.form-range {\n width: 100%;\n height: 1.5rem;\n padding: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: transparent;\n}\n.form-range:focus {\n outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range::-moz-focus-outer {\n border: 0;\n}\n.form-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n -webkit-appearance: none;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-range::-webkit-slider-thumb {\n -webkit-transition: none;\n transition: none;\n }\n}\n.form-range::-webkit-slider-thumb:active {\n background-color: #b6d4fe;\n}\n.form-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n -moz-appearance: none;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-range::-moz-range-thumb {\n -moz-transition: none;\n transition: none;\n }\n}\n.form-range::-moz-range-thumb:active {\n background-color: #b6d4fe;\n}\n.form-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range:disabled {\n pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n background-color: var(--bs-secondary-color);\n}\n.form-range:disabled::-moz-range-thumb {\n background-color: var(--bs-secondary-color);\n}\n\n.form-floating {\n position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-control-plaintext,\n.form-floating > .form-select {\n height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n min-height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n line-height: 1.25;\n}\n.form-floating > label {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n height: 100%;\n padding: 1rem 0.75rem;\n overflow: hidden;\n text-align: start;\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n border: var(--bs-border-width) solid transparent;\n transform-origin: 100% 0;\n transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-floating > label {\n transition: none;\n }\n}\n.form-floating > .form-control,\n.form-floating > .form-control-plaintext {\n padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder {\n color: transparent;\n}\n.form-floating > .form-control::placeholder,\n.form-floating > .form-control-plaintext::placeholder {\n color: transparent;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown), .form-floating > .form-control-plaintext:not(:-moz-placeholder-shown) {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),\n.form-floating > .form-control-plaintext:focus,\n.form-floating > .form-control-plaintext:not(:placeholder-shown) {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill,\n.form-floating > .form-control-plaintext:-webkit-autofill {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);\n}\n.form-floating > .form-control:focus ~ label,\n.form-floating > .form-control:not(:placeholder-shown) ~ label,\n.form-floating > .form-control-plaintext ~ label,\n.form-floating > .form-select ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label::after {\n position: absolute;\n inset: 1rem 0.375rem;\n z-index: -1;\n height: 1.5em;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n}\n.form-floating > .form-control:focus ~ label::after,\n.form-floating > .form-control:not(:placeholder-shown) ~ label::after,\n.form-floating > .form-control-plaintext ~ label::after,\n.form-floating > .form-select ~ label::after {\n position: absolute;\n inset: 1rem 0.375rem;\n z-index: -1;\n height: 1.5em;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);\n}\n.form-floating > .form-control-plaintext ~ label {\n border-width: var(--bs-border-width) 0;\n}\n.form-floating > :disabled ~ label,\n.form-floating > .form-control:disabled ~ label {\n color: #6c757d;\n}\n.form-floating > :disabled ~ label::after,\n.form-floating > .form-control:disabled ~ label::after {\n background-color: var(--bs-secondary-bg);\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select,\n.input-group > .form-floating {\n position: relative;\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n}\n.input-group > .form-control:focus,\n.input-group > .form-select:focus,\n.input-group > .form-floating:focus-within {\n z-index: 5;\n}\n.input-group .btn {\n position: relative;\n z-index: 2;\n}\n.input-group .btn:focus {\n z-index: 5;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-tertiary-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n padding-left: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n margin-right: calc(var(--bs-border-width) * -1);\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > .form-floating:not(:first-child) > .form-control,\n.input-group > .form-floating:not(:first-child) > .form-select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-valid-color);\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-success);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: var(--bs-form-valid-border-color);\n padding-left: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: left calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-left: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) left calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n padding-left: 4.125rem;\n background-position: left 0.75rem center, center left 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n\n.was-validated .form-control-color:valid, .form-control-color.is-valid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n background-color: var(--bs-form-valid-color);\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: var(--bs-form-valid-color);\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n margin-right: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,\n.was-validated .input-group > .form-select:not(:focus):valid,\n.input-group > .form-select:not(:focus).is-valid,\n.was-validated .input-group > .form-floating:not(:focus-within):valid,\n.input-group > .form-floating:not(:focus-within).is-valid {\n z-index: 3;\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-invalid-color);\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-danger);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n padding-left: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: left calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-left: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) left calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n padding-left: 4.125rem;\n background-position: left 0.75rem center, center left 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n\n.was-validated .form-control-color:invalid, .form-control-color.is-invalid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n background-color: var(--bs-form-invalid-color);\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: var(--bs-form-invalid-color);\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n margin-right: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,\n.was-validated .input-group > .form-select:not(:focus):invalid,\n.input-group > .form-select:not(:focus).is-invalid,\n.was-validated .input-group > .form-floating:not(:focus-within):invalid,\n.input-group > .form-floating:not(:focus-within).is-invalid {\n z-index: 4;\n}\n\n.btn {\n --bs-btn-padding-x: 0.75rem;\n --bs-btn-padding-y: 0.375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n --bs-btn-disabled-opacity: 0.65;\n --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);\n display: inline-block;\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n.btn:hover {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n}\n.btn-check + .btn:hover {\n color: var(--bs-btn-color);\n background-color: var(--bs-btn-bg);\n border-color: var(--bs-btn-border-color);\n}\n.btn:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:focus-visible + .btn {\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show {\n color: var(--bs-btn-active-color);\n background-color: var(--bs-btn-active-bg);\n border-color: var(--bs-btn-active-border-color);\n}\n.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible {\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:checked:focus-visible + .btn {\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n}\n\n.btn-primary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0b5ed7;\n --bs-btn-hover-border-color: #0a58ca;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0a58ca;\n --bs-btn-active-border-color: #0a53be;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #0d6efd;\n --bs-btn-disabled-border-color: #0d6efd;\n}\n\n.btn-secondary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #5c636a;\n --bs-btn-hover-border-color: #565e64;\n --bs-btn-focus-shadow-rgb: 130, 138, 145;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #565e64;\n --bs-btn-active-border-color: #51585e;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #6c757d;\n --bs-btn-disabled-border-color: #6c757d;\n}\n\n.btn-success {\n --bs-btn-color: #fff;\n --bs-btn-bg: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #157347;\n --bs-btn-hover-border-color: #146c43;\n --bs-btn-focus-shadow-rgb: 60, 153, 110;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #146c43;\n --bs-btn-active-border-color: #13653f;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #198754;\n --bs-btn-disabled-border-color: #198754;\n}\n\n.btn-info {\n --bs-btn-color: #000;\n --bs-btn-bg: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #31d2f2;\n --bs-btn-hover-border-color: #25cff2;\n --bs-btn-focus-shadow-rgb: 11, 172, 204;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #3dd5f3;\n --bs-btn-active-border-color: #25cff2;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #0dcaf0;\n --bs-btn-disabled-border-color: #0dcaf0;\n}\n\n.btn-warning {\n --bs-btn-color: #000;\n --bs-btn-bg: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffca2c;\n --bs-btn-hover-border-color: #ffc720;\n --bs-btn-focus-shadow-rgb: 217, 164, 6;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffcd39;\n --bs-btn-active-border-color: #ffc720;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #ffc107;\n --bs-btn-disabled-border-color: #ffc107;\n}\n\n.btn-danger {\n --bs-btn-color: #fff;\n --bs-btn-bg: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #bb2d3b;\n --bs-btn-hover-border-color: #b02a37;\n --bs-btn-focus-shadow-rgb: 225, 83, 97;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #b02a37;\n --bs-btn-active-border-color: #a52834;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #dc3545;\n --bs-btn-disabled-border-color: #dc3545;\n}\n\n.btn-light {\n --bs-btn-color: #000;\n --bs-btn-bg: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #d3d4d5;\n --bs-btn-hover-border-color: #c6c7c8;\n --bs-btn-focus-shadow-rgb: 211, 212, 213;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #c6c7c8;\n --bs-btn-active-border-color: #babbbc;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #f8f9fa;\n --bs-btn-disabled-border-color: #f8f9fa;\n}\n\n.btn-dark {\n --bs-btn-color: #fff;\n --bs-btn-bg: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #424649;\n --bs-btn-hover-border-color: #373b3e;\n --bs-btn-focus-shadow-rgb: 66, 70, 73;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #4d5154;\n --bs-btn-active-border-color: #373b3e;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #212529;\n --bs-btn-disabled-border-color: #212529;\n}\n\n.btn-outline-primary {\n --bs-btn-color: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0d6efd;\n --bs-btn-hover-border-color: #0d6efd;\n --bs-btn-focus-shadow-rgb: 13, 110, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0d6efd;\n --bs-btn-active-border-color: #0d6efd;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0d6efd;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0d6efd;\n --bs-gradient: none;\n}\n\n.btn-outline-secondary {\n --bs-btn-color: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #6c757d;\n --bs-btn-hover-border-color: #6c757d;\n --bs-btn-focus-shadow-rgb: 108, 117, 125;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #6c757d;\n --bs-btn-active-border-color: #6c757d;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #6c757d;\n --bs-gradient: none;\n}\n\n.btn-outline-success {\n --bs-btn-color: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #198754;\n --bs-btn-hover-border-color: #198754;\n --bs-btn-focus-shadow-rgb: 25, 135, 84;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #198754;\n --bs-btn-active-border-color: #198754;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #198754;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #198754;\n --bs-gradient: none;\n}\n\n.btn-outline-info {\n --bs-btn-color: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #0dcaf0;\n --bs-btn-hover-border-color: #0dcaf0;\n --bs-btn-focus-shadow-rgb: 13, 202, 240;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #0dcaf0;\n --bs-btn-active-border-color: #0dcaf0;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0dcaf0;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0dcaf0;\n --bs-gradient: none;\n}\n\n.btn-outline-warning {\n --bs-btn-color: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffc107;\n --bs-btn-hover-border-color: #ffc107;\n --bs-btn-focus-shadow-rgb: 255, 193, 7;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffc107;\n --bs-btn-active-border-color: #ffc107;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #ffc107;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #ffc107;\n --bs-gradient: none;\n}\n\n.btn-outline-danger {\n --bs-btn-color: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #dc3545;\n --bs-btn-hover-border-color: #dc3545;\n --bs-btn-focus-shadow-rgb: 220, 53, 69;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #dc3545;\n --bs-btn-active-border-color: #dc3545;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #dc3545;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #dc3545;\n --bs-gradient: none;\n}\n\n.btn-outline-light {\n --bs-btn-color: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #f8f9fa;\n --bs-btn-hover-border-color: #f8f9fa;\n --bs-btn-focus-shadow-rgb: 248, 249, 250;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #f8f9fa;\n --bs-btn-active-border-color: #f8f9fa;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #f8f9fa;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #f8f9fa;\n --bs-gradient: none;\n}\n\n.btn-outline-dark {\n --bs-btn-color: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #212529;\n --bs-btn-hover-border-color: #212529;\n --bs-btn-focus-shadow-rgb: 33, 37, 41;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #212529;\n --bs-btn-active-border-color: #212529;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #212529;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #212529;\n --bs-gradient: none;\n}\n\n.btn-link {\n --bs-btn-font-weight: 400;\n --bs-btn-color: var(--bs-link-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-color: transparent;\n --bs-btn-hover-color: var(--bs-link-hover-color);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-active-color: var(--bs-link-hover-color);\n --bs-btn-active-border-color: transparent;\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-border-color: transparent;\n --bs-btn-box-shadow: 0 0 0 #000;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n text-decoration: underline;\n}\n.btn-link:focus-visible {\n color: var(--bs-btn-color);\n}\n.btn-link:hover {\n color: var(--bs-btn-hover-color);\n}\n\n.btn-lg, .btn-group-lg > .btn {\n --bs-btn-padding-y: 0.5rem;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 1.25rem;\n --bs-btn-border-radius: var(--bs-border-radius-lg);\n}\n\n.btn-sm, .btn-group-sm > .btn {\n --bs-btn-padding-y: 0.25rem;\n --bs-btn-padding-x: 0.5rem;\n --bs-btn-font-size: 0.875rem;\n --bs-btn-border-radius: var(--bs-border-radius-sm);\n}\n\n.fade {\n transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\n}\n.fade:not(.show) {\n opacity: 0;\n}\n\n.collapse:not(.show) {\n display: none;\n}\n\n.collapsing {\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n.collapsing.collapse-horizontal {\n width: 0;\n height: auto;\n transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .collapsing.collapse-horizontal {\n transition: none;\n }\n}\n\n.dropup,\n.dropend,\n.dropdown,\n.dropstart,\n.dropup-center,\n.dropdown-center {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n.dropdown-toggle::after {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-left: 0.3em solid transparent;\n border-bottom: 0;\n border-right: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n margin-right: 0;\n}\n\n.dropdown-menu {\n --bs-dropdown-zindex: 1000;\n --bs-dropdown-min-width: 10rem;\n --bs-dropdown-padding-x: 0;\n --bs-dropdown-padding-y: 0.5rem;\n --bs-dropdown-spacer: 0.125rem;\n --bs-dropdown-font-size: 1rem;\n --bs-dropdown-color: var(--bs-body-color);\n --bs-dropdown-bg: var(--bs-body-bg);\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-border-radius: var(--bs-border-radius);\n --bs-dropdown-border-width: var(--bs-border-width);\n --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-divider-margin-y: 0.5rem;\n --bs-dropdown-box-shadow: var(--bs-box-shadow);\n --bs-dropdown-link-color: var(--bs-body-color);\n --bs-dropdown-link-hover-color: var(--bs-body-color);\n --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: var(--bs-tertiary-color);\n --bs-dropdown-item-padding-x: 1rem;\n --bs-dropdown-item-padding-y: 0.25rem;\n --bs-dropdown-header-color: #6c757d;\n --bs-dropdown-header-padding-x: 1rem;\n --bs-dropdown-header-padding-y: 0.5rem;\n position: absolute;\n z-index: var(--bs-dropdown-zindex);\n display: none;\n min-width: var(--bs-dropdown-min-width);\n padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);\n margin: 0;\n font-size: var(--bs-dropdown-font-size);\n color: var(--bs-dropdown-color);\n text-align: right;\n list-style: none;\n background-color: var(--bs-dropdown-bg);\n background-clip: padding-box;\n border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);\n border-radius: var(--bs-dropdown-border-radius);\n}\n.dropdown-menu[data-bs-popper] {\n top: 100%;\n right: 0;\n margin-top: var(--bs-dropdown-spacer);\n}\n\n.dropdown-menu-start {\n --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n left: auto;\n right: 0;\n}\n\n.dropdown-menu-end {\n --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n left: 0;\n right: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-start {\n --bs-position: start;\n }\n .dropdown-menu-sm-start[data-bs-popper] {\n left: auto;\n right: 0;\n }\n .dropdown-menu-sm-end {\n --bs-position: end;\n }\n .dropdown-menu-sm-end[data-bs-popper] {\n left: 0;\n right: auto;\n }\n}\n@media (min-width: 768px) {\n .dropdown-menu-md-start {\n --bs-position: start;\n }\n .dropdown-menu-md-start[data-bs-popper] {\n left: auto;\n right: 0;\n }\n .dropdown-menu-md-end {\n --bs-position: end;\n }\n .dropdown-menu-md-end[data-bs-popper] {\n left: 0;\n right: auto;\n }\n}\n@media (min-width: 992px) {\n .dropdown-menu-lg-start {\n --bs-position: start;\n }\n .dropdown-menu-lg-start[data-bs-popper] {\n left: auto;\n right: 0;\n }\n .dropdown-menu-lg-end {\n --bs-position: end;\n }\n .dropdown-menu-lg-end[data-bs-popper] {\n left: 0;\n right: auto;\n }\n}\n@media (min-width: 1200px) {\n .dropdown-menu-xl-start {\n --bs-position: start;\n }\n .dropdown-menu-xl-start[data-bs-popper] {\n left: auto;\n right: 0;\n }\n .dropdown-menu-xl-end {\n --bs-position: end;\n }\n .dropdown-menu-xl-end[data-bs-popper] {\n left: 0;\n right: auto;\n }\n}\n@media (min-width: 1400px) {\n .dropdown-menu-xxl-start {\n --bs-position: start;\n }\n .dropdown-menu-xxl-start[data-bs-popper] {\n left: auto;\n right: 0;\n }\n .dropdown-menu-xxl-end {\n --bs-position: end;\n }\n .dropdown-menu-xxl-end[data-bs-popper] {\n left: 0;\n right: auto;\n }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: var(--bs-dropdown-spacer);\n}\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-left: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-right: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n margin-right: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n top: 0;\n left: auto;\n right: 100%;\n margin-top: 0;\n margin-right: var(--bs-dropdown-spacer);\n}\n.dropend .dropdown-toggle::after {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-left: 0;\n border-bottom: 0.3em solid transparent;\n border-right: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n margin-right: 0;\n}\n.dropend .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n top: 0;\n left: 100%;\n right: auto;\n margin-top: 0;\n margin-left: var(--bs-dropdown-spacer);\n}\n.dropstart .dropdown-toggle::after {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n display: none;\n}\n.dropstart .dropdown-toggle::before {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-left: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n margin-right: 0;\n}\n.dropstart .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-divider {\n height: 0;\n margin: var(--bs-dropdown-divider-margin-y) 0;\n overflow: hidden;\n border-top: 1px solid var(--bs-dropdown-divider-bg);\n opacity: 1;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n clear: both;\n font-weight: 400;\n color: var(--bs-dropdown-link-color);\n text-align: inherit;\n text-decoration: none;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n border-radius: var(--bs-dropdown-item-border-radius, 0);\n}\n.dropdown-item:hover, .dropdown-item:focus {\n color: var(--bs-dropdown-link-hover-color);\n background-color: var(--bs-dropdown-link-hover-bg);\n}\n.dropdown-item.active, .dropdown-item:active {\n color: var(--bs-dropdown-link-active-color);\n text-decoration: none;\n background-color: var(--bs-dropdown-link-active-bg);\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: var(--bs-dropdown-link-disabled-color);\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);\n margin-bottom: 0;\n font-size: 0.875rem;\n color: var(--bs-dropdown-header-color);\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n color: var(--bs-dropdown-link-color);\n}\n\n.dropdown-menu-dark {\n --bs-dropdown-color: #dee2e6;\n --bs-dropdown-bg: #343a40;\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-box-shadow: ;\n --bs-dropdown-link-color: #dee2e6;\n --bs-dropdown-link-hover-color: #fff;\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: #adb5bd;\n --bs-dropdown-header-color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group {\n border-radius: var(--bs-border-radius);\n}\n.btn-group > :not(.btn-check:first-child) + .btn,\n.btn-group > .btn-group:not(:first-child) {\n margin-right: calc(var(--bs-border-width) * -1);\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn.dropdown-toggle-split:first-child,\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-left: 0.5625rem;\n padding-right: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n margin-right: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-left: 0.375rem;\n padding-right: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: calc(var(--bs-border-width) * -1);\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group-vertical > .btn ~ .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n\n.nav {\n --bs-nav-link-padding-x: 1rem;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-link-color);\n --bs-nav-link-hover-color: var(--bs-link-hover-color);\n --bs-nav-link-disabled-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding-right: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);\n font-size: var(--bs-nav-link-font-size);\n font-weight: var(--bs-nav-link-font-weight);\n color: var(--bs-nav-link-color);\n text-decoration: none;\n background: none;\n border: 0;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .nav-link {\n transition: none;\n }\n}\n.nav-link:hover, .nav-link:focus {\n color: var(--bs-nav-link-hover-color);\n}\n.nav-link:focus-visible {\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.nav-link.disabled, .nav-link:disabled {\n color: var(--bs-nav-link-disabled-color);\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n --bs-nav-tabs-border-width: var(--bs-border-width);\n --bs-nav-tabs-border-color: var(--bs-border-color);\n --bs-nav-tabs-border-radius: var(--bs-border-radius);\n --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);\n --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);\n --bs-nav-tabs-link-active-bg: var(--bs-body-bg);\n --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);\n border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color);\n}\n.nav-tabs .nav-link {\n margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));\n border: var(--bs-nav-tabs-border-width) solid transparent;\n border-top-right-radius: var(--bs-nav-tabs-border-radius);\n border-top-left-radius: var(--bs-nav-tabs-border-radius);\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n isolation: isolate;\n border-color: var(--bs-nav-tabs-link-hover-border-color);\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: var(--bs-nav-tabs-link-active-color);\n background-color: var(--bs-nav-tabs-link-active-bg);\n border-color: var(--bs-nav-tabs-link-active-border-color);\n}\n.nav-tabs .dropdown-menu {\n margin-top: calc(-1 * var(--bs-nav-tabs-border-width));\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n\n.nav-pills {\n --bs-nav-pills-border-radius: var(--bs-border-radius);\n --bs-nav-pills-link-active-color: #fff;\n --bs-nav-pills-link-active-bg: #0d6efd;\n}\n.nav-pills .nav-link {\n border-radius: var(--bs-nav-pills-border-radius);\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: var(--bs-nav-pills-link-active-color);\n background-color: var(--bs-nav-pills-link-active-bg);\n}\n\n.nav-underline {\n --bs-nav-underline-gap: 1rem;\n --bs-nav-underline-border-width: 0.125rem;\n --bs-nav-underline-link-active-color: var(--bs-emphasis-color);\n gap: var(--bs-nav-underline-gap);\n}\n.nav-underline .nav-link {\n padding-left: 0;\n padding-right: 0;\n border-bottom: var(--bs-nav-underline-border-width) solid transparent;\n}\n.nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n border-bottom-color: currentcolor;\n}\n.nav-underline .nav-link.active,\n.nav-underline .show > .nav-link {\n font-weight: 700;\n color: var(--bs-nav-underline-link-active-color);\n border-bottom-color: currentcolor;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n width: 100%;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n --bs-navbar-padding-x: 0;\n --bs-navbar-padding-y: 0.5rem;\n --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);\n --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);\n --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);\n --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-padding-y: 0.3125rem;\n --bs-navbar-brand-margin-end: 1rem;\n --bs-navbar-brand-font-size: 1.25rem;\n --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-nav-link-padding-x: 0.5rem;\n --bs-navbar-toggler-padding-y: 0.25rem;\n --bs-navbar-toggler-padding-x: 0.75rem;\n --bs-navbar-toggler-font-size: 1.25rem;\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);\n --bs-navbar-toggler-border-radius: var(--bs-border-radius);\n --bs-navbar-toggler-focus-width: 0.25rem;\n --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl,\n.navbar > .container-xxl {\n display: flex;\n flex-wrap: inherit;\n align-items: center;\n justify-content: space-between;\n}\n.navbar-brand {\n padding-top: var(--bs-navbar-brand-padding-y);\n padding-bottom: var(--bs-navbar-brand-padding-y);\n margin-left: var(--bs-navbar-brand-margin-end);\n font-size: var(--bs-navbar-brand-font-size);\n color: var(--bs-navbar-brand-color);\n text-decoration: none;\n white-space: nowrap;\n}\n.navbar-brand:hover, .navbar-brand:focus {\n color: var(--bs-navbar-brand-hover-color);\n}\n\n.navbar-nav {\n --bs-nav-link-padding-x: 0;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-navbar-color);\n --bs-nav-link-hover-color: var(--bs-navbar-hover-color);\n --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);\n display: flex;\n flex-direction: column;\n padding-right: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n color: var(--bs-navbar-active-color);\n}\n.navbar-nav .dropdown-menu {\n position: static;\n}\n\n.navbar-text {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-navbar-color);\n}\n.navbar-text a,\n.navbar-text a:hover,\n.navbar-text a:focus {\n color: var(--bs-navbar-active-color);\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);\n font-size: var(--bs-navbar-toggler-font-size);\n line-height: 1;\n color: var(--bs-navbar-color);\n background-color: transparent;\n border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);\n border-radius: var(--bs-navbar-toggler-border-radius);\n transition: var(--bs-navbar-toggler-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .navbar-toggler {\n transition: none;\n }\n}\n.navbar-toggler:hover {\n text-decoration: none;\n}\n.navbar-toggler:focus {\n text-decoration: none;\n outline: 0;\n box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n background-image: var(--bs-navbar-toggler-icon-bg);\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100%;\n}\n\n.navbar-nav-scroll {\n max-height: var(--bs-scroll-height, 75vh);\n overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-left: var(--bs-navbar-nav-link-padding-x);\n padding-right: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-sm .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n .navbar-expand-sm .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-left: var(--bs-navbar-nav-link-padding-x);\n padding-right: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-md .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n .navbar-expand-md .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-left: var(--bs-navbar-nav-link-padding-x);\n padding-right: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-lg .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n .navbar-expand-lg .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-left: var(--bs-navbar-nav-link-padding-x);\n padding-right: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-xl .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xl .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 1400px) {\n .navbar-expand-xxl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xxl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xxl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xxl .navbar-nav .nav-link {\n padding-left: var(--bs-navbar-nav-link-padding-x);\n padding-right: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-xxl .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-xxl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xxl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xxl .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-xxl .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-xxl .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n.navbar-expand {\n flex-wrap: nowrap;\n justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n padding-left: var(--bs-navbar-nav-link-padding-x);\n padding-right: var(--bs-navbar-nav-link-padding-x);\n}\n.navbar-expand .navbar-nav-scroll {\n overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n display: none;\n}\n.navbar-expand .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n}\n.navbar-expand .offcanvas .offcanvas-header {\n display: none;\n}\n.navbar-expand .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n}\n\n.navbar-dark,\n.navbar[data-bs-theme=dark] {\n --bs-navbar-color: rgba(255, 255, 255, 0.55);\n --bs-navbar-hover-color: rgba(255, 255, 255, 0.75);\n --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);\n --bs-navbar-active-color: #fff;\n --bs-navbar-brand-color: #fff;\n --bs-navbar-brand-hover-color: #fff;\n --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n[data-bs-theme=dark] .navbar-toggler-icon {\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.card {\n --bs-card-spacer-y: 1rem;\n --bs-card-spacer-x: 1rem;\n --bs-card-title-spacer-y: 0.5rem;\n --bs-card-title-color: ;\n --bs-card-subtitle-color: ;\n --bs-card-border-width: var(--bs-border-width);\n --bs-card-border-color: var(--bs-border-color-translucent);\n --bs-card-border-radius: var(--bs-border-radius);\n --bs-card-box-shadow: ;\n --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-card-cap-padding-y: 0.5rem;\n --bs-card-cap-padding-x: 1rem;\n --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);\n --bs-card-cap-color: ;\n --bs-card-height: ;\n --bs-card-color: ;\n --bs-card-bg: var(--bs-body-bg);\n --bs-card-img-overlay-padding: 1rem;\n --bs-card-group-margin: 0.75rem;\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n height: var(--bs-card-height);\n color: var(--bs-body-color);\n word-wrap: break-word;\n background-color: var(--bs-card-bg);\n background-clip: border-box;\n border: var(--bs-card-border-width) solid var(--bs-card-border-color);\n border-radius: var(--bs-card-border-radius);\n}\n.card > hr {\n margin-left: 0;\n margin-right: 0;\n}\n.card > .list-group {\n border-top: inherit;\n border-bottom: inherit;\n}\n.card > .list-group:first-child {\n border-top-width: 0;\n border-top-right-radius: var(--bs-card-inner-border-radius);\n border-top-left-radius: var(--bs-card-inner-border-radius);\n}\n.card > .list-group:last-child {\n border-bottom-width: 0;\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n border-top: 0;\n}\n\n.card-body {\n flex: 1 1 auto;\n padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);\n color: var(--bs-card-color);\n}\n\n.card-title {\n margin-bottom: var(--bs-card-title-spacer-y);\n color: var(--bs-card-title-color);\n}\n\n.card-subtitle {\n margin-top: calc(-0.5 * var(--bs-card-title-spacer-y));\n margin-bottom: 0;\n color: var(--bs-card-subtitle-color);\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link + .card-link {\n margin-right: var(--bs-card-spacer-x);\n}\n\n.card-header {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n margin-bottom: 0;\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-header:first-child {\n border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0;\n}\n\n.card-footer {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-footer:last-child {\n border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);\n}\n\n.card-header-tabs {\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n border-bottom: 0;\n}\n.card-header-tabs .nav-link.active {\n background-color: var(--bs-card-bg);\n border-bottom-color: var(--bs-card-bg);\n}\n\n.card-header-pills {\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n padding: var(--bs-card-img-overlay-padding);\n border-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n width: 100%;\n}\n\n.card-img,\n.card-img-top {\n border-top-right-radius: var(--bs-card-inner-border-radius);\n border-top-left-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-bottom {\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-group > .card {\n margin-bottom: var(--bs-card-group-margin);\n}\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group > .card {\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-right: 0;\n border-right: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n}\n\n.accordion {\n --bs-accordion-color: var(--bs-body-color);\n --bs-accordion-bg: var(--bs-body-bg);\n --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;\n --bs-accordion-border-color: var(--bs-border-color);\n --bs-accordion-border-width: var(--bs-border-width);\n --bs-accordion-border-radius: var(--bs-border-radius);\n --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-accordion-btn-padding-x: 1.25rem;\n --bs-accordion-btn-padding-y: 1rem;\n --bs-accordion-btn-color: var(--bs-body-color);\n --bs-accordion-btn-bg: var(--bs-accordion-bg);\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e\");\n --bs-accordion-btn-icon-width: 1.25rem;\n --bs-accordion-btn-icon-transform: rotate(-180deg);\n --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e\");\n --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-accordion-body-padding-x: 1.25rem;\n --bs-accordion-body-padding-y: 1rem;\n --bs-accordion-active-color: var(--bs-primary-text-emphasis);\n --bs-accordion-active-bg: var(--bs-primary-bg-subtle);\n}\n\n.accordion-button {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);\n font-size: 1rem;\n color: var(--bs-accordion-btn-color);\n text-align: right;\n background-color: var(--bs-accordion-btn-bg);\n border: 0;\n border-radius: 0;\n overflow-anchor: none;\n transition: var(--bs-accordion-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button {\n transition: none;\n }\n}\n.accordion-button:not(.collapsed) {\n color: var(--bs-accordion-active-color);\n background-color: var(--bs-accordion-active-bg);\n box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);\n}\n.accordion-button:not(.collapsed)::after {\n background-image: var(--bs-accordion-btn-active-icon);\n transform: var(--bs-accordion-btn-icon-transform);\n}\n.accordion-button::after {\n flex-shrink: 0;\n width: var(--bs-accordion-btn-icon-width);\n height: var(--bs-accordion-btn-icon-width);\n margin-right: auto;\n content: \"\";\n background-image: var(--bs-accordion-btn-icon);\n background-repeat: no-repeat;\n background-size: var(--bs-accordion-btn-icon-width);\n transition: var(--bs-accordion-btn-icon-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button::after {\n transition: none;\n }\n}\n.accordion-button:hover {\n z-index: 2;\n}\n.accordion-button:focus {\n z-index: 3;\n outline: 0;\n box-shadow: var(--bs-accordion-btn-focus-box-shadow);\n}\n\n.accordion-header {\n margin-bottom: 0;\n}\n\n.accordion-item {\n color: var(--bs-accordion-color);\n background-color: var(--bs-accordion-bg);\n border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);\n}\n.accordion-item:first-of-type {\n border-top-right-radius: var(--bs-accordion-border-radius);\n border-top-left-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:first-of-type > .accordion-header .accordion-button {\n border-top-right-radius: var(--bs-accordion-inner-border-radius);\n border-top-left-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:not(:first-of-type) {\n border-top: 0;\n}\n.accordion-item:last-of-type {\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:last-of-type > .accordion-header .accordion-button.collapsed {\n border-bottom-left-radius: var(--bs-accordion-inner-border-radius);\n border-bottom-right-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:last-of-type > .accordion-collapse {\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n}\n\n.accordion-body {\n padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);\n}\n\n.accordion-flush > .accordion-item {\n border-left: 0;\n border-right: 0;\n border-radius: 0;\n}\n.accordion-flush > .accordion-item:first-child {\n border-top: 0;\n}\n.accordion-flush > .accordion-item:last-child {\n border-bottom: 0;\n}\n.accordion-flush > .accordion-item > .accordion-header .accordion-button, .accordion-flush > .accordion-item > .accordion-header .accordion-button.collapsed {\n border-radius: 0;\n}\n.accordion-flush > .accordion-item > .accordion-collapse {\n border-radius: 0;\n}\n\n[data-bs-theme=dark] .accordion-button::after {\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.breadcrumb {\n --bs-breadcrumb-padding-x: 0;\n --bs-breadcrumb-padding-y: 0;\n --bs-breadcrumb-margin-bottom: 1rem;\n --bs-breadcrumb-bg: ;\n --bs-breadcrumb-border-radius: ;\n --bs-breadcrumb-divider-color: var(--bs-secondary-color);\n --bs-breadcrumb-item-padding-x: 0.5rem;\n --bs-breadcrumb-item-active-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);\n margin-bottom: var(--bs-breadcrumb-margin-bottom);\n font-size: var(--bs-breadcrumb-font-size);\n list-style: none;\n background-color: var(--bs-breadcrumb-bg);\n border-radius: var(--bs-breadcrumb-border-radius);\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-right: var(--bs-breadcrumb-item-padding-x);\n}\n.breadcrumb-item + .breadcrumb-item::before {\n float: right;\n padding-left: var(--bs-breadcrumb-item-padding-x);\n color: var(--bs-breadcrumb-divider-color);\n content: var(--bs-breadcrumb-divider, \"/\") ;\n}\n.breadcrumb-item.active {\n color: var(--bs-breadcrumb-item-active-color);\n}\n\n.pagination {\n --bs-pagination-padding-x: 0.75rem;\n --bs-pagination-padding-y: 0.375rem;\n --bs-pagination-font-size: 1rem;\n --bs-pagination-color: var(--bs-link-color);\n --bs-pagination-bg: var(--bs-body-bg);\n --bs-pagination-border-width: var(--bs-border-width);\n --bs-pagination-border-color: var(--bs-border-color);\n --bs-pagination-border-radius: var(--bs-border-radius);\n --bs-pagination-hover-color: var(--bs-link-hover-color);\n --bs-pagination-hover-bg: var(--bs-tertiary-bg);\n --bs-pagination-hover-border-color: var(--bs-border-color);\n --bs-pagination-focus-color: var(--bs-link-hover-color);\n --bs-pagination-focus-bg: var(--bs-secondary-bg);\n --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-pagination-active-color: #fff;\n --bs-pagination-active-bg: #0d6efd;\n --bs-pagination-active-border-color: #0d6efd;\n --bs-pagination-disabled-color: var(--bs-secondary-color);\n --bs-pagination-disabled-bg: var(--bs-secondary-bg);\n --bs-pagination-disabled-border-color: var(--bs-border-color);\n display: flex;\n padding-right: 0;\n list-style: none;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);\n font-size: var(--bs-pagination-font-size);\n color: var(--bs-pagination-color);\n text-decoration: none;\n background-color: var(--bs-pagination-bg);\n border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .page-link {\n transition: none;\n }\n}\n.page-link:hover {\n z-index: 2;\n color: var(--bs-pagination-hover-color);\n background-color: var(--bs-pagination-hover-bg);\n border-color: var(--bs-pagination-hover-border-color);\n}\n.page-link:focus {\n z-index: 3;\n color: var(--bs-pagination-focus-color);\n background-color: var(--bs-pagination-focus-bg);\n outline: 0;\n box-shadow: var(--bs-pagination-focus-box-shadow);\n}\n.page-link.active, .active > .page-link {\n z-index: 3;\n color: var(--bs-pagination-active-color);\n background-color: var(--bs-pagination-active-bg);\n border-color: var(--bs-pagination-active-border-color);\n}\n.page-link.disabled, .disabled > .page-link {\n color: var(--bs-pagination-disabled-color);\n pointer-events: none;\n background-color: var(--bs-pagination-disabled-bg);\n border-color: var(--bs-pagination-disabled-border-color);\n}\n\n.page-item:not(:first-child) .page-link {\n margin-right: calc(var(--bs-border-width) * -1);\n}\n.page-item:first-child .page-link {\n border-top-right-radius: var(--bs-pagination-border-radius);\n border-bottom-right-radius: var(--bs-pagination-border-radius);\n}\n.page-item:last-child .page-link {\n border-top-left-radius: var(--bs-pagination-border-radius);\n border-bottom-left-radius: var(--bs-pagination-border-radius);\n}\n\n.pagination-lg {\n --bs-pagination-padding-x: 1.5rem;\n --bs-pagination-padding-y: 0.75rem;\n --bs-pagination-font-size: 1.25rem;\n --bs-pagination-border-radius: var(--bs-border-radius-lg);\n}\n\n.pagination-sm {\n --bs-pagination-padding-x: 0.5rem;\n --bs-pagination-padding-y: 0.25rem;\n --bs-pagination-font-size: 0.875rem;\n --bs-pagination-border-radius: var(--bs-border-radius-sm);\n}\n\n.badge {\n --bs-badge-padding-x: 0.65em;\n --bs-badge-padding-y: 0.35em;\n --bs-badge-font-size: 0.75em;\n --bs-badge-font-weight: 700;\n --bs-badge-color: #fff;\n --bs-badge-border-radius: var(--bs-border-radius);\n display: inline-block;\n padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);\n font-size: var(--bs-badge-font-size);\n font-weight: var(--bs-badge-font-weight);\n line-height: 1;\n color: var(--bs-badge-color);\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: var(--bs-badge-border-radius);\n}\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.alert {\n --bs-alert-bg: transparent;\n --bs-alert-padding-x: 1rem;\n --bs-alert-padding-y: 1rem;\n --bs-alert-margin-bottom: 1rem;\n --bs-alert-color: inherit;\n --bs-alert-border-color: transparent;\n --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);\n --bs-alert-border-radius: var(--bs-border-radius);\n --bs-alert-link-color: inherit;\n position: relative;\n padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);\n margin-bottom: var(--bs-alert-margin-bottom);\n color: var(--bs-alert-color);\n background-color: var(--bs-alert-bg);\n border: var(--bs-alert-border);\n border-radius: var(--bs-alert-border-radius);\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n color: var(--bs-alert-link-color);\n}\n\n.alert-dismissible {\n padding-left: 3rem;\n}\n.alert-dismissible .btn-close {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n --bs-alert-color: var(--bs-primary-text-emphasis);\n --bs-alert-bg: var(--bs-primary-bg-subtle);\n --bs-alert-border-color: var(--bs-primary-border-subtle);\n --bs-alert-link-color: var(--bs-primary-text-emphasis);\n}\n\n.alert-secondary {\n --bs-alert-color: var(--bs-secondary-text-emphasis);\n --bs-alert-bg: var(--bs-secondary-bg-subtle);\n --bs-alert-border-color: var(--bs-secondary-border-subtle);\n --bs-alert-link-color: var(--bs-secondary-text-emphasis);\n}\n\n.alert-success {\n --bs-alert-color: var(--bs-success-text-emphasis);\n --bs-alert-bg: var(--bs-success-bg-subtle);\n --bs-alert-border-color: var(--bs-success-border-subtle);\n --bs-alert-link-color: var(--bs-success-text-emphasis);\n}\n\n.alert-info {\n --bs-alert-color: var(--bs-info-text-emphasis);\n --bs-alert-bg: var(--bs-info-bg-subtle);\n --bs-alert-border-color: var(--bs-info-border-subtle);\n --bs-alert-link-color: var(--bs-info-text-emphasis);\n}\n\n.alert-warning {\n --bs-alert-color: var(--bs-warning-text-emphasis);\n --bs-alert-bg: var(--bs-warning-bg-subtle);\n --bs-alert-border-color: var(--bs-warning-border-subtle);\n --bs-alert-link-color: var(--bs-warning-text-emphasis);\n}\n\n.alert-danger {\n --bs-alert-color: var(--bs-danger-text-emphasis);\n --bs-alert-bg: var(--bs-danger-bg-subtle);\n --bs-alert-border-color: var(--bs-danger-border-subtle);\n --bs-alert-link-color: var(--bs-danger-text-emphasis);\n}\n\n.alert-light {\n --bs-alert-color: var(--bs-light-text-emphasis);\n --bs-alert-bg: var(--bs-light-bg-subtle);\n --bs-alert-border-color: var(--bs-light-border-subtle);\n --bs-alert-link-color: var(--bs-light-text-emphasis);\n}\n\n.alert-dark {\n --bs-alert-color: var(--bs-dark-text-emphasis);\n --bs-alert-bg: var(--bs-dark-bg-subtle);\n --bs-alert-border-color: var(--bs-dark-border-subtle);\n --bs-alert-link-color: var(--bs-dark-text-emphasis);\n}\n\n@keyframes progress-bar-stripes {\n 0% {\n background-position-x: 1rem;\n }\n}\n.progress,\n.progress-stacked {\n --bs-progress-height: 1rem;\n --bs-progress-font-size: 0.75rem;\n --bs-progress-bg: var(--bs-secondary-bg);\n --bs-progress-border-radius: var(--bs-border-radius);\n --bs-progress-box-shadow: var(--bs-box-shadow-inset);\n --bs-progress-bar-color: #fff;\n --bs-progress-bar-bg: #0d6efd;\n --bs-progress-bar-transition: width 0.6s ease;\n display: flex;\n height: var(--bs-progress-height);\n overflow: hidden;\n font-size: var(--bs-progress-font-size);\n background-color: var(--bs-progress-bg);\n border-radius: var(--bs-progress-border-radius);\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: var(--bs-progress-bar-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-progress-bar-bg);\n transition: var(--bs-progress-bar-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: var(--bs-progress-height) var(--bs-progress-height);\n}\n\n.progress-stacked > .progress {\n overflow: visible;\n}\n\n.progress-stacked > .progress > .progress-bar {\n width: 100%;\n}\n\n.progress-bar-animated {\n animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.list-group {\n --bs-list-group-color: var(--bs-body-color);\n --bs-list-group-bg: var(--bs-body-bg);\n --bs-list-group-border-color: var(--bs-border-color);\n --bs-list-group-border-width: var(--bs-border-width);\n --bs-list-group-border-radius: var(--bs-border-radius);\n --bs-list-group-item-padding-x: 1rem;\n --bs-list-group-item-padding-y: 0.5rem;\n --bs-list-group-action-color: var(--bs-secondary-color);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-tertiary-bg);\n --bs-list-group-action-active-color: var(--bs-body-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-bg);\n --bs-list-group-disabled-color: var(--bs-secondary-color);\n --bs-list-group-disabled-bg: var(--bs-body-bg);\n --bs-list-group-active-color: #fff;\n --bs-list-group-active-bg: #0d6efd;\n --bs-list-group-active-border-color: #0d6efd;\n display: flex;\n flex-direction: column;\n padding-right: 0;\n margin-bottom: 0;\n border-radius: var(--bs-list-group-border-radius);\n}\n\n.list-group-numbered {\n list-style-type: none;\n counter-reset: section;\n}\n.list-group-numbered > .list-group-item::before {\n content: counters(section, \".\") \". \";\n counter-increment: section;\n}\n\n.list-group-item-action {\n width: 100%;\n color: var(--bs-list-group-action-color);\n text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: var(--bs-list-group-action-hover-color);\n text-decoration: none;\n background-color: var(--bs-list-group-action-hover-bg);\n}\n.list-group-item-action:active {\n color: var(--bs-list-group-action-active-color);\n background-color: var(--bs-list-group-action-active-bg);\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);\n color: var(--bs-list-group-color);\n text-decoration: none;\n background-color: var(--bs-list-group-bg);\n border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);\n}\n.list-group-item:first-child {\n border-top-right-radius: inherit;\n border-top-left-radius: inherit;\n}\n.list-group-item:last-child {\n border-bottom-left-radius: inherit;\n border-bottom-right-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n color: var(--bs-list-group-disabled-color);\n pointer-events: none;\n background-color: var(--bs-list-group-disabled-bg);\n}\n.list-group-item.active {\n z-index: 2;\n color: var(--bs-list-group-active-color);\n background-color: var(--bs-list-group-active-bg);\n border-color: var(--bs-list-group-active-border-color);\n}\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n margin-top: calc(-1 * var(--bs-list-group-border-width));\n border-top-width: var(--bs-list-group-border-width);\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n border-bottom-right-radius: var(--bs-list-group-border-radius);\n border-top-left-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n border-top-left-radius: var(--bs-list-group-border-radius);\n border-bottom-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item.active {\n margin-top: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-right-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n margin-right: calc(-1 * var(--bs-list-group-border-width));\n border-right-width: var(--bs-list-group-border-width);\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {\n border-bottom-right-radius: var(--bs-list-group-border-radius);\n border-top-left-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {\n border-top-left-radius: var(--bs-list-group-border-radius);\n border-bottom-right-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-right-width: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n margin-right: calc(-1 * var(--bs-list-group-border-width));\n border-right-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {\n border-bottom-right-radius: var(--bs-list-group-border-radius);\n border-top-left-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {\n border-top-left-radius: var(--bs-list-group-border-radius);\n border-bottom-right-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-right-width: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n margin-right: calc(-1 * var(--bs-list-group-border-width));\n border-right-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {\n border-bottom-right-radius: var(--bs-list-group-border-radius);\n border-top-left-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {\n border-top-left-radius: var(--bs-list-group-border-radius);\n border-bottom-right-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-right-width: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n margin-right: calc(-1 * var(--bs-list-group-border-width));\n border-right-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {\n border-bottom-right-radius: var(--bs-list-group-border-radius);\n border-top-left-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {\n border-top-left-radius: var(--bs-list-group-border-radius);\n border-bottom-right-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-right-width: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n margin-right: calc(-1 * var(--bs-list-group-border-width));\n border-right-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 1400px) {\n .list-group-horizontal-xxl {\n flex-direction: row;\n }\n .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) {\n border-bottom-right-radius: var(--bs-list-group-border-radius);\n border-top-left-radius: 0;\n }\n .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) {\n border-top-left-radius: var(--bs-list-group-border-radius);\n border-bottom-right-radius: 0;\n }\n .list-group-horizontal-xxl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-right-width: 0;\n }\n .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n margin-right: calc(-1 * var(--bs-list-group-border-width));\n border-right-width: var(--bs-list-group-border-width);\n }\n}\n.list-group-flush {\n border-radius: 0;\n}\n.list-group-flush > .list-group-item {\n border-width: 0 0 var(--bs-list-group-border-width);\n}\n.list-group-flush > .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n --bs-list-group-color: var(--bs-primary-text-emphasis);\n --bs-list-group-bg: var(--bs-primary-bg-subtle);\n --bs-list-group-border-color: var(--bs-primary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-primary-border-subtle);\n --bs-list-group-active-color: var(--bs-primary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-primary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-primary-text-emphasis);\n}\n\n.list-group-item-secondary {\n --bs-list-group-color: var(--bs-secondary-text-emphasis);\n --bs-list-group-bg: var(--bs-secondary-bg-subtle);\n --bs-list-group-border-color: var(--bs-secondary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-active-color: var(--bs-secondary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-secondary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis);\n}\n\n.list-group-item-success {\n --bs-list-group-color: var(--bs-success-text-emphasis);\n --bs-list-group-bg: var(--bs-success-bg-subtle);\n --bs-list-group-border-color: var(--bs-success-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-success-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-success-border-subtle);\n --bs-list-group-active-color: var(--bs-success-bg-subtle);\n --bs-list-group-active-bg: var(--bs-success-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-success-text-emphasis);\n}\n\n.list-group-item-info {\n --bs-list-group-color: var(--bs-info-text-emphasis);\n --bs-list-group-bg: var(--bs-info-bg-subtle);\n --bs-list-group-border-color: var(--bs-info-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-info-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-info-border-subtle);\n --bs-list-group-active-color: var(--bs-info-bg-subtle);\n --bs-list-group-active-bg: var(--bs-info-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-info-text-emphasis);\n}\n\n.list-group-item-warning {\n --bs-list-group-color: var(--bs-warning-text-emphasis);\n --bs-list-group-bg: var(--bs-warning-bg-subtle);\n --bs-list-group-border-color: var(--bs-warning-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-warning-border-subtle);\n --bs-list-group-active-color: var(--bs-warning-bg-subtle);\n --bs-list-group-active-bg: var(--bs-warning-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-warning-text-emphasis);\n}\n\n.list-group-item-danger {\n --bs-list-group-color: var(--bs-danger-text-emphasis);\n --bs-list-group-bg: var(--bs-danger-bg-subtle);\n --bs-list-group-border-color: var(--bs-danger-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-danger-border-subtle);\n --bs-list-group-active-color: var(--bs-danger-bg-subtle);\n --bs-list-group-active-bg: var(--bs-danger-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-danger-text-emphasis);\n}\n\n.list-group-item-light {\n --bs-list-group-color: var(--bs-light-text-emphasis);\n --bs-list-group-bg: var(--bs-light-bg-subtle);\n --bs-list-group-border-color: var(--bs-light-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-light-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-light-border-subtle);\n --bs-list-group-active-color: var(--bs-light-bg-subtle);\n --bs-list-group-active-bg: var(--bs-light-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-light-text-emphasis);\n}\n\n.list-group-item-dark {\n --bs-list-group-color: var(--bs-dark-text-emphasis);\n --bs-list-group-bg: var(--bs-dark-bg-subtle);\n --bs-list-group-border-color: var(--bs-dark-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-dark-border-subtle);\n --bs-list-group-active-color: var(--bs-dark-bg-subtle);\n --bs-list-group-active-bg: var(--bs-dark-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-dark-text-emphasis);\n}\n\n.btn-close {\n --bs-btn-close-color: #000;\n --bs-btn-close-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e\");\n --bs-btn-close-opacity: 0.5;\n --bs-btn-close-hover-opacity: 0.75;\n --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-btn-close-focus-opacity: 1;\n --bs-btn-close-disabled-opacity: 0.25;\n --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);\n box-sizing: content-box;\n width: 1em;\n height: 1em;\n padding: 0.25em 0.25em;\n color: var(--bs-btn-close-color);\n background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;\n border: 0;\n border-radius: 0.375rem;\n opacity: var(--bs-btn-close-opacity);\n}\n.btn-close:hover {\n color: var(--bs-btn-close-color);\n text-decoration: none;\n opacity: var(--bs-btn-close-hover-opacity);\n}\n.btn-close:focus {\n outline: 0;\n box-shadow: var(--bs-btn-close-focus-shadow);\n opacity: var(--bs-btn-close-focus-opacity);\n}\n.btn-close:disabled, .btn-close.disabled {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n opacity: var(--bs-btn-close-disabled-opacity);\n}\n\n.btn-close-white {\n filter: var(--bs-btn-close-white-filter);\n}\n\n[data-bs-theme=dark] .btn-close {\n filter: var(--bs-btn-close-white-filter);\n}\n\n.toast {\n --bs-toast-zindex: 1090;\n --bs-toast-padding-x: 0.75rem;\n --bs-toast-padding-y: 0.5rem;\n --bs-toast-spacing: 1.5rem;\n --bs-toast-max-width: 350px;\n --bs-toast-font-size: 0.875rem;\n --bs-toast-color: ;\n --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-border-width: var(--bs-border-width);\n --bs-toast-border-color: var(--bs-border-color-translucent);\n --bs-toast-border-radius: var(--bs-border-radius);\n --bs-toast-box-shadow: var(--bs-box-shadow);\n --bs-toast-header-color: var(--bs-secondary-color);\n --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-header-border-color: var(--bs-border-color-translucent);\n width: var(--bs-toast-max-width);\n max-width: 100%;\n font-size: var(--bs-toast-font-size);\n color: var(--bs-toast-color);\n pointer-events: auto;\n background-color: var(--bs-toast-bg);\n background-clip: padding-box;\n border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);\n box-shadow: var(--bs-toast-box-shadow);\n border-radius: var(--bs-toast-border-radius);\n}\n.toast.showing {\n opacity: 0;\n}\n.toast:not(.show) {\n display: none;\n}\n\n.toast-container {\n --bs-toast-zindex: 1090;\n position: absolute;\n z-index: var(--bs-toast-zindex);\n width: -webkit-max-content;\n width: -moz-max-content;\n width: max-content;\n max-width: 100%;\n pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n margin-bottom: var(--bs-toast-spacing);\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);\n color: var(--bs-toast-header-color);\n background-color: var(--bs-toast-header-bg);\n background-clip: padding-box;\n border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);\n border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n}\n.toast-header .btn-close {\n margin-left: calc(-0.5 * var(--bs-toast-padding-x));\n margin-right: var(--bs-toast-padding-x);\n}\n\n.toast-body {\n padding: var(--bs-toast-padding-x);\n word-wrap: break-word;\n}\n\n.modal {\n --bs-modal-zindex: 1055;\n --bs-modal-width: 500px;\n --bs-modal-padding: 1rem;\n --bs-modal-margin: 0.5rem;\n --bs-modal-color: ;\n --bs-modal-bg: var(--bs-body-bg);\n --bs-modal-border-color: var(--bs-border-color-translucent);\n --bs-modal-border-width: var(--bs-border-width);\n --bs-modal-border-radius: var(--bs-border-radius-lg);\n --bs-modal-box-shadow: var(--bs-box-shadow-sm);\n --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));\n --bs-modal-header-padding-x: 1rem;\n --bs-modal-header-padding-y: 1rem;\n --bs-modal-header-padding: 1rem 1rem;\n --bs-modal-header-border-color: var(--bs-border-color);\n --bs-modal-header-border-width: var(--bs-border-width);\n --bs-modal-title-line-height: 1.5;\n --bs-modal-footer-gap: 0.5rem;\n --bs-modal-footer-bg: ;\n --bs-modal-footer-border-color: var(--bs-border-color);\n --bs-modal-footer-border-width: var(--bs-border-width);\n position: fixed;\n top: 0;\n right: 0;\n z-index: var(--bs-modal-zindex);\n display: none;\n width: 100%;\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: var(--bs-modal-margin);\n pointer-events: none;\n}\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n.modal.show .modal-dialog {\n transform: none;\n}\n.modal.modal-static .modal-dialog {\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n height: calc(100% - var(--bs-modal-margin) * 2);\n}\n.modal-dialog-scrollable .modal-content {\n max-height: 100%;\n overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - var(--bs-modal-margin) * 2);\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n color: var(--bs-modal-color);\n pointer-events: auto;\n background-color: var(--bs-modal-bg);\n background-clip: padding-box;\n border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);\n border-radius: var(--bs-modal-border-radius);\n outline: 0;\n}\n\n.modal-backdrop {\n --bs-backdrop-zindex: 1050;\n --bs-backdrop-bg: #000;\n --bs-backdrop-opacity: 0.5;\n position: fixed;\n top: 0;\n right: 0;\n z-index: var(--bs-backdrop-zindex);\n width: 100vw;\n height: 100vh;\n background-color: var(--bs-backdrop-bg);\n}\n.modal-backdrop.fade {\n opacity: 0;\n}\n.modal-backdrop.show {\n opacity: var(--bs-backdrop-opacity);\n}\n\n.modal-header {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n padding: var(--bs-modal-header-padding);\n border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);\n border-top-right-radius: var(--bs-modal-inner-border-radius);\n border-top-left-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-header .btn-close {\n padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5);\n margin: calc(-0.5 * var(--bs-modal-header-padding-y)) auto calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x));\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: var(--bs-modal-title-line-height);\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: var(--bs-modal-padding);\n}\n\n.modal-footer {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5);\n background-color: var(--bs-modal-footer-bg);\n border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);\n border-bottom-left-radius: var(--bs-modal-inner-border-radius);\n border-bottom-right-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-footer > * {\n margin: calc(var(--bs-modal-footer-gap) * 0.5);\n}\n\n@media (min-width: 576px) {\n .modal {\n --bs-modal-margin: 1.75rem;\n --bs-modal-box-shadow: var(--bs-box-shadow);\n }\n .modal-dialog {\n max-width: var(--bs-modal-width);\n margin-left: auto;\n margin-right: auto;\n }\n .modal-sm {\n --bs-modal-width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n --bs-modal-width: 800px;\n }\n}\n@media (min-width: 1200px) {\n .modal-xl {\n --bs-modal-width: 1140px;\n }\n}\n.modal-fullscreen {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n}\n.modal-fullscreen .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n}\n.modal-fullscreen .modal-header,\n.modal-fullscreen .modal-footer {\n border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n overflow-y: auto;\n}\n\n@media (max-width: 575.98px) {\n .modal-fullscreen-sm-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-sm-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-header,\n .modal-fullscreen-sm-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 767.98px) {\n .modal-fullscreen-md-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-md-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-header,\n .modal-fullscreen-md-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 991.98px) {\n .modal-fullscreen-lg-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-lg-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-header,\n .modal-fullscreen-lg-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 1199.98px) {\n .modal-fullscreen-xl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-xl-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-header,\n .modal-fullscreen-xl-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 1399.98px) {\n .modal-fullscreen-xxl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-xxl-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-xxl-down .modal-header,\n .modal-fullscreen-xxl-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-xxl-down .modal-body {\n overflow-y: auto;\n }\n}\n.tooltip {\n --bs-tooltip-zindex: 1080;\n --bs-tooltip-max-width: 200px;\n --bs-tooltip-padding-x: 0.5rem;\n --bs-tooltip-padding-y: 0.25rem;\n --bs-tooltip-margin: ;\n --bs-tooltip-font-size: 0.875rem;\n --bs-tooltip-color: var(--bs-body-bg);\n --bs-tooltip-bg: var(--bs-emphasis-color);\n --bs-tooltip-border-radius: var(--bs-border-radius);\n --bs-tooltip-opacity: 0.9;\n --bs-tooltip-arrow-width: 0.8rem;\n --bs-tooltip-arrow-height: 0.4rem;\n z-index: var(--bs-tooltip-zindex);\n display: block;\n margin: var(--bs-tooltip-margin);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: right;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n white-space: normal;\n word-spacing: normal;\n line-break: auto;\n font-size: var(--bs-tooltip-font-size);\n word-wrap: break-word;\n opacity: 0;\n}\n.tooltip.show {\n opacity: var(--bs-tooltip-opacity);\n}\n.tooltip .tooltip-arrow {\n display: block;\n width: var(--bs-tooltip-arrow-width);\n height: var(--bs-tooltip-arrow-height);\n}\n.tooltip .tooltip-arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n bottom: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n top: -1px;\n border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-top-color: var(--bs-tooltip-bg);\n}\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n left: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n right: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-right-color: var(--bs-tooltip-bg);\n}\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n top: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n bottom: -1px;\n border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-bottom-color: var(--bs-tooltip-bg);\n}\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n right: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n left: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-left-color: var(--bs-tooltip-bg);\n}\n.tooltip-inner {\n max-width: var(--bs-tooltip-max-width);\n padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);\n color: var(--bs-tooltip-color);\n text-align: center;\n background-color: var(--bs-tooltip-bg);\n border-radius: var(--bs-tooltip-border-radius);\n}\n\n.popover {\n --bs-popover-zindex: 1070;\n --bs-popover-max-width: 276px;\n --bs-popover-font-size: 0.875rem;\n --bs-popover-bg: var(--bs-body-bg);\n --bs-popover-border-width: var(--bs-border-width);\n --bs-popover-border-color: var(--bs-border-color-translucent);\n --bs-popover-border-radius: var(--bs-border-radius-lg);\n --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));\n --bs-popover-box-shadow: var(--bs-box-shadow);\n --bs-popover-header-padding-x: 1rem;\n --bs-popover-header-padding-y: 0.5rem;\n --bs-popover-header-font-size: 1rem;\n --bs-popover-header-color: inherit;\n --bs-popover-header-bg: var(--bs-secondary-bg);\n --bs-popover-body-padding-x: 1rem;\n --bs-popover-body-padding-y: 1rem;\n --bs-popover-body-color: var(--bs-body-color);\n --bs-popover-arrow-width: 1rem;\n --bs-popover-arrow-height: 0.5rem;\n --bs-popover-arrow-border: var(--bs-popover-border-color);\n z-index: var(--bs-popover-zindex);\n display: block;\n max-width: var(--bs-popover-max-width);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: right;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n white-space: normal;\n word-spacing: normal;\n line-break: auto;\n font-size: var(--bs-popover-font-size);\n word-wrap: break-word;\n background-color: var(--bs-popover-bg);\n background-clip: padding-box;\n border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-radius: var(--bs-popover-border-radius);\n}\n.popover .popover-arrow {\n display: block;\n width: var(--bs-popover-arrow-width);\n height: var(--bs-popover-arrow-height);\n}\n.popover .popover-arrow::before, .popover .popover-arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n border-width: 0;\n}\n\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n bottom: 0;\n border-top-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n bottom: var(--bs-popover-border-width);\n border-top-color: var(--bs-popover-bg);\n}\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n left: 0;\n border-right-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n left: var(--bs-popover-border-width);\n border-right-color: var(--bs-popover-bg);\n}\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n top: 0;\n border-bottom-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n top: var(--bs-popover-border-width);\n border-bottom-color: var(--bs-popover-bg);\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n position: absolute;\n top: 0;\n right: 50%;\n display: block;\n width: var(--bs-popover-arrow-width);\n margin-right: calc(-0.5 * var(--bs-popover-arrow-width));\n content: \"\";\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);\n}\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n right: 0;\n border-left-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n right: var(--bs-popover-border-width);\n border-left-color: var(--bs-popover-bg);\n}\n.popover-header {\n padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);\n margin-bottom: 0;\n font-size: var(--bs-popover-header-font-size);\n color: var(--bs-popover-header-color);\n background-color: var(--bs-popover-header-bg);\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-top-right-radius: var(--bs-popover-inner-border-radius);\n border-top-left-radius: var(--bs-popover-inner-border-radius);\n}\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);\n color: var(--bs-popover-body-color);\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: right;\n width: 100%;\n margin-left: -100%;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n transform: translateX(-100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n transform: translateX(100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n z-index: 1;\n opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-start,\n .carousel-fade .active.carousel-item-end {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n padding: 0;\n color: #fff;\n text-align: center;\n background: none;\n border: 0;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n right: 0;\n}\n\n.carousel-control-next {\n left: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n background-repeat: no-repeat;\n background-position: 50%;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n position: absolute;\n left: 0;\n bottom: 0;\n right: 0;\n z-index: 2;\n display: flex;\n justify-content: center;\n padding: 0;\n margin-left: 15%;\n margin-bottom: 1rem;\n margin-right: 15%;\n}\n.carousel-indicators [data-bs-target] {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n padding: 0;\n margin-left: 3px;\n margin-right: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: 0.5;\n transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators [data-bs-target] {\n transition: none;\n }\n}\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n left: 15%;\n bottom: 1.25rem;\n right: 15%;\n padding-top: 1.25rem;\n padding-bottom: 1.25rem;\n color: #fff;\n text-align: center;\n}\n\n.carousel-dark .carousel-control-prev-icon,\n.carousel-dark .carousel-control-next-icon {\n filter: invert(1) grayscale(100);\n}\n.carousel-dark .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n.carousel-dark .carousel-caption {\n color: #000;\n}\n\n[data-bs-theme=dark] .carousel .carousel-control-prev-icon,\n[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon,\n[data-bs-theme=dark].carousel .carousel-control-next-icon {\n filter: invert(1) grayscale(100);\n}\n[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption {\n color: #000;\n}\n\n.spinner-grow,\n.spinner-border {\n display: inline-block;\n width: var(--bs-spinner-width);\n height: var(--bs-spinner-height);\n vertical-align: var(--bs-spinner-vertical-align);\n border-radius: 50%;\n animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg) ;\n }\n}\n.spinner-border {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-border-width: 0.25em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-border;\n border: var(--bs-spinner-border-width) solid currentcolor;\n border-left-color: transparent;\n}\n\n.spinner-border-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n --bs-spinner-border-width: 0.2em;\n}\n\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n transform: none;\n }\n}\n.spinner-grow {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-grow;\n background-color: currentcolor;\n opacity: 0;\n}\n\n.spinner-grow-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner-border,\n .spinner-grow {\n --bs-spinner-animation-speed: 1.5s;\n }\n}\n.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {\n --bs-offcanvas-zindex: 1045;\n --bs-offcanvas-width: 400px;\n --bs-offcanvas-height: 30vh;\n --bs-offcanvas-padding-x: 1rem;\n --bs-offcanvas-padding-y: 1rem;\n --bs-offcanvas-color: var(--bs-body-color);\n --bs-offcanvas-bg: var(--bs-body-bg);\n --bs-offcanvas-border-width: var(--bs-border-width);\n --bs-offcanvas-border-color: var(--bs-border-color-translucent);\n --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);\n --bs-offcanvas-transition: transform 0.3s ease-in-out;\n --bs-offcanvas-title-line-height: 1.5;\n}\n\n@media (max-width: 575.98px) {\n .offcanvas-sm {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-sm {\n transition: none;\n }\n}\n@media (max-width: 575.98px) {\n .offcanvas-sm.offcanvas-start {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-sm.offcanvas-end {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-sm.offcanvas-top {\n top: 0;\n left: 0;\n right: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-sm.offcanvas-bottom {\n left: 0;\n right: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {\n visibility: visible;\n }\n}\n@media (min-width: 576px) {\n .offcanvas-sm {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-sm .offcanvas-header {\n display: none;\n }\n .offcanvas-sm .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 767.98px) {\n .offcanvas-md {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-md {\n transition: none;\n }\n}\n@media (max-width: 767.98px) {\n .offcanvas-md.offcanvas-start {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-md.offcanvas-end {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-md.offcanvas-top {\n top: 0;\n left: 0;\n right: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-md.offcanvas-bottom {\n left: 0;\n right: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {\n visibility: visible;\n }\n}\n@media (min-width: 768px) {\n .offcanvas-md {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-md .offcanvas-header {\n display: none;\n }\n .offcanvas-md .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 991.98px) {\n .offcanvas-lg {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-lg {\n transition: none;\n }\n}\n@media (max-width: 991.98px) {\n .offcanvas-lg.offcanvas-start {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-lg.offcanvas-end {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-lg.offcanvas-top {\n top: 0;\n left: 0;\n right: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-lg.offcanvas-bottom {\n left: 0;\n right: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {\n visibility: visible;\n }\n}\n@media (min-width: 992px) {\n .offcanvas-lg {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-lg .offcanvas-header {\n display: none;\n }\n .offcanvas-lg .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 1199.98px) {\n .offcanvas-xl {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xl {\n transition: none;\n }\n}\n@media (max-width: 1199.98px) {\n .offcanvas-xl.offcanvas-start {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-xl.offcanvas-end {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-xl.offcanvas-top {\n top: 0;\n left: 0;\n right: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-xl.offcanvas-bottom {\n left: 0;\n right: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {\n visibility: visible;\n }\n}\n@media (min-width: 1200px) {\n .offcanvas-xl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-xl .offcanvas-header {\n display: none;\n }\n .offcanvas-xl .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 1399.98px) {\n .offcanvas-xxl {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xxl {\n transition: none;\n }\n}\n@media (max-width: 1399.98px) {\n .offcanvas-xxl.offcanvas-start {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-xxl.offcanvas-end {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-xxl.offcanvas-top {\n top: 0;\n left: 0;\n right: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-xxl.offcanvas-bottom {\n left: 0;\n right: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show {\n visibility: visible;\n }\n}\n@media (min-width: 1400px) {\n .offcanvas-xxl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-xxl .offcanvas-header {\n display: none;\n }\n .offcanvas-xxl .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n.offcanvas {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .offcanvas {\n transition: none;\n }\n}\n.offcanvas.offcanvas-start {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n}\n.offcanvas.offcanvas-end {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n}\n.offcanvas.offcanvas-top {\n top: 0;\n left: 0;\n right: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n}\n.offcanvas.offcanvas-bottom {\n left: 0;\n right: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n}\n.offcanvas.showing, .offcanvas.show:not(.hiding) {\n transform: none;\n}\n.offcanvas.showing, .offcanvas.hiding, .offcanvas.show {\n visibility: visible;\n}\n\n.offcanvas-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n.offcanvas-backdrop.fade {\n opacity: 0;\n}\n.offcanvas-backdrop.show {\n opacity: 0.5;\n}\n\n.offcanvas-header {\n display: flex;\n align-items: center;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n}\n.offcanvas-header .btn-close {\n padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);\n margin: calc(-0.5 * var(--bs-offcanvas-padding-y)) auto calc(-0.5 * var(--bs-offcanvas-padding-y)) calc(-0.5 * var(--bs-offcanvas-padding-x));\n}\n\n.offcanvas-title {\n margin-bottom: 0;\n line-height: var(--bs-offcanvas-title-line-height);\n}\n\n.offcanvas-body {\n flex-grow: 1;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n overflow-y: auto;\n}\n\n.placeholder {\n display: inline-block;\n min-height: 1em;\n vertical-align: middle;\n cursor: wait;\n background-color: currentcolor;\n opacity: 0.5;\n}\n.placeholder.btn::before {\n display: inline-block;\n content: \"\";\n}\n\n.placeholder-xs {\n min-height: 0.6em;\n}\n\n.placeholder-sm {\n min-height: 0.8em;\n}\n\n.placeholder-lg {\n min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@keyframes placeholder-glow {\n 50% {\n opacity: 0.2;\n }\n}\n.placeholder-wave {\n -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n -webkit-mask-size: 200% 100%;\n mask-size: 200% 100%;\n animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n 100% {\n -webkit-mask-position: -200% 0%;\n mask-position: -200% 0%;\n }\n}\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.text-bg-primary {\n color: #fff !important;\n background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-secondary {\n color: #fff !important;\n background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-success {\n color: #fff !important;\n background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-info {\n color: #000 !important;\n background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-warning {\n color: #000 !important;\n background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-danger {\n color: #fff !important;\n background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-light {\n color: #000 !important;\n background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-dark {\n color: #fff !important;\n background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.link-primary {\n color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-primary:hover, .link-primary:focus {\n color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-secondary {\n color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-secondary:hover, .link-secondary:focus {\n color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-success {\n color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-success:hover, .link-success:focus {\n color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-info {\n color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-info:hover, .link-info:focus {\n color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-warning {\n color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-warning:hover, .link-warning:focus {\n color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-danger {\n color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-danger:hover, .link-danger:focus {\n color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-light {\n color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-light:hover, .link-light:focus {\n color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-dark {\n color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-dark:hover, .link-dark:focus {\n color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-body-emphasis {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-body-emphasis:hover, .link-body-emphasis:focus {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;\n}\n\n.focus-ring:focus {\n outline: 0;\n box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);\n}\n\n.icon-link {\n display: inline-flex;\n gap: 0.375rem;\n align-items: center;\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));\n text-underline-offset: 0.25em;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.icon-link > .bi {\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n fill: currentcolor;\n transition: 0.2s ease-in-out transform;\n}\n@media (prefers-reduced-motion: reduce) {\n .icon-link > .bi {\n transition: none;\n }\n}\n\n.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n transform: var(--bs-icon-link-transform, translate3d(-0.25em, 0, 0));\n}\n\n.ratio {\n position: relative;\n width: 100%;\n}\n.ratio::before {\n display: block;\n padding-top: var(--bs-aspect-ratio);\n content: \"\";\n}\n.ratio > * {\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n height: 100%;\n}\n\n.ratio-1x1 {\n --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n --bs-aspect-ratio: 75%;\n}\n\n.ratio-16x9 {\n --bs-aspect-ratio: 56.25%;\n}\n\n.ratio-21x9 {\n --bs-aspect-ratio: 42.8571428571%;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n left: 0;\n bottom: 0;\n right: 0;\n z-index: 1030;\n}\n\n.sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n}\n\n.sticky-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n}\n\n@media (min-width: 576px) {\n .sticky-sm-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-sm-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 768px) {\n .sticky-md-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-md-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 992px) {\n .sticky-lg-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-lg-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 1200px) {\n .sticky-xl-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-xl-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 1400px) {\n .sticky-xxl-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-xxl-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n.hstack {\n display: flex;\n flex-direction: row;\n align-items: center;\n align-self: stretch;\n}\n\n.vstack {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n.visually-hidden:not(caption),\n.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n position: absolute !important;\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n z-index: 1;\n content: \"\";\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.vr {\n display: inline-block;\n align-self: stretch;\n width: var(--bs-border-width);\n min-height: 1em;\n background-color: currentcolor;\n opacity: 0.25;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.float-start {\n float: right !important;\n}\n\n.float-end {\n float: left !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n.object-fit-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n}\n\n.object-fit-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n}\n\n.object-fit-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n}\n\n.object-fit-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n}\n\n.object-fit-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n}\n\n.opacity-0 {\n opacity: 0 !important;\n}\n\n.opacity-25 {\n opacity: 0.25 !important;\n}\n\n.opacity-50 {\n opacity: 0.5 !important;\n}\n\n.opacity-75 {\n opacity: 0.75 !important;\n}\n\n.opacity-100 {\n opacity: 1 !important;\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.overflow-visible {\n overflow: visible !important;\n}\n\n.overflow-scroll {\n overflow: scroll !important;\n}\n\n.overflow-x-auto {\n overflow-x: auto !important;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden !important;\n}\n\n.overflow-x-visible {\n overflow-x: visible !important;\n}\n\n.overflow-x-scroll {\n overflow-x: scroll !important;\n}\n\n.overflow-y-auto {\n overflow-y: auto !important;\n}\n\n.overflow-y-hidden {\n overflow-y: hidden !important;\n}\n\n.overflow-y-visible {\n overflow-y: visible !important;\n}\n\n.overflow-y-scroll {\n overflow-y: scroll !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.shadow {\n box-shadow: var(--bs-box-shadow) !important;\n}\n\n.shadow-sm {\n box-shadow: var(--bs-box-shadow-sm) !important;\n}\n\n.shadow-lg {\n box-shadow: var(--bs-box-shadow-lg) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.focus-ring-primary {\n --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-secondary {\n --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-success {\n --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-info {\n --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-warning {\n --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-danger {\n --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-light {\n --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-dark {\n --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity));\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important;\n}\n\n.top-0 {\n top: 0 !important;\n}\n\n.top-50 {\n top: 50% !important;\n}\n\n.top-100 {\n top: 100% !important;\n}\n\n.bottom-0 {\n bottom: 0 !important;\n}\n\n.bottom-50 {\n bottom: 50% !important;\n}\n\n.bottom-100 {\n bottom: 100% !important;\n}\n\n.start-0 {\n right: 0 !important;\n}\n\n.start-50 {\n right: 50% !important;\n}\n\n.start-100 {\n right: 100% !important;\n}\n\n.end-0 {\n left: 0 !important;\n}\n\n.end-50 {\n left: 50% !important;\n}\n\n.end-100 {\n left: 100% !important;\n}\n\n.translate-middle {\n transform: translate(50%, -50%) !important;\n}\n\n.translate-middle-x {\n transform: translateX(50%) !important;\n}\n\n.translate-middle-y {\n transform: translateY(-50%) !important;\n}\n\n.border {\n border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top {\n border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-end {\n border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-end-0 {\n border-left: 0 !important;\n}\n\n.border-bottom {\n border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-start {\n border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-start-0 {\n border-right: 0 !important;\n}\n\n.border-primary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-secondary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-success {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-info {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-warning {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-danger {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-light {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-dark {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-black {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-white {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-primary-subtle {\n border-color: var(--bs-primary-border-subtle) !important;\n}\n\n.border-secondary-subtle {\n border-color: var(--bs-secondary-border-subtle) !important;\n}\n\n.border-success-subtle {\n border-color: var(--bs-success-border-subtle) !important;\n}\n\n.border-info-subtle {\n border-color: var(--bs-info-border-subtle) !important;\n}\n\n.border-warning-subtle {\n border-color: var(--bs-warning-border-subtle) !important;\n}\n\n.border-danger-subtle {\n border-color: var(--bs-danger-border-subtle) !important;\n}\n\n.border-light-subtle {\n border-color: var(--bs-light-border-subtle) !important;\n}\n\n.border-dark-subtle {\n border-color: var(--bs-dark-border-subtle) !important;\n}\n\n.border-1 {\n border-width: 1px !important;\n}\n\n.border-2 {\n border-width: 2px !important;\n}\n\n.border-3 {\n border-width: 3px !important;\n}\n\n.border-4 {\n border-width: 4px !important;\n}\n\n.border-5 {\n border-width: 5px !important;\n}\n\n.border-opacity-10 {\n --bs-border-opacity: 0.1;\n}\n\n.border-opacity-25 {\n --bs-border-opacity: 0.25;\n}\n\n.border-opacity-50 {\n --bs-border-opacity: 0.5;\n}\n\n.border-opacity-75 {\n --bs-border-opacity: 0.75;\n}\n\n.border-opacity-100 {\n --bs-border-opacity: 1;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.mx-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n}\n\n.mx-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n}\n\n.mx-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-left: 0 !important;\n}\n\n.me-1 {\n margin-left: 0.25rem !important;\n}\n\n.me-2 {\n margin-left: 0.5rem !important;\n}\n\n.me-3 {\n margin-left: 1rem !important;\n}\n\n.me-4 {\n margin-left: 1.5rem !important;\n}\n\n.me-5 {\n margin-left: 3rem !important;\n}\n\n.me-auto {\n margin-left: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-right: 0 !important;\n}\n\n.ms-1 {\n margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n margin-right: 1rem !important;\n}\n\n.ms-4 {\n margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n margin-right: 3rem !important;\n}\n\n.ms-auto {\n margin-right: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.px-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n}\n\n.px-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n}\n\n.px-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.px-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.px-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-left: 0 !important;\n}\n\n.pe-1 {\n padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n padding-left: 1rem !important;\n}\n\n.pe-4 {\n padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n padding-left: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-right: 0 !important;\n}\n\n.ps-1 {\n padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n padding-right: 1rem !important;\n}\n\n.ps-4 {\n padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n padding-right: 3rem !important;\n}\n\n.gap-0 {\n gap: 0 !important;\n}\n\n.gap-1 {\n gap: 0.25rem !important;\n}\n\n.gap-2 {\n gap: 0.5rem !important;\n}\n\n.gap-3 {\n gap: 1rem !important;\n}\n\n.gap-4 {\n gap: 1.5rem !important;\n}\n\n.gap-5 {\n gap: 3rem !important;\n}\n\n.row-gap-0 {\n row-gap: 0 !important;\n}\n\n.row-gap-1 {\n row-gap: 0.25rem !important;\n}\n\n.row-gap-2 {\n row-gap: 0.5rem !important;\n}\n\n.row-gap-3 {\n row-gap: 1rem !important;\n}\n\n.row-gap-4 {\n row-gap: 1.5rem !important;\n}\n\n.row-gap-5 {\n row-gap: 3rem !important;\n}\n\n.column-gap-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n}\n\n.column-gap-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n}\n\n.column-gap-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n}\n\n.column-gap-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n}\n\n.column-gap-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n}\n\n.column-gap-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n}\n\n.font-monospace {\n font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n font-size: 1.25rem !important;\n}\n\n.fs-6 {\n font-size: 1rem !important;\n}\n\n.fst-italic {\n font-style: italic !important;\n}\n\n.fst-normal {\n font-style: normal !important;\n}\n\n.fw-lighter {\n font-weight: lighter !important;\n}\n\n.fw-light {\n font-weight: 300 !important;\n}\n\n.fw-normal {\n font-weight: 400 !important;\n}\n\n.fw-medium {\n font-weight: 500 !important;\n}\n\n.fw-semibold {\n font-weight: 600 !important;\n}\n\n.fw-bold {\n font-weight: 700 !important;\n}\n\n.fw-bolder {\n font-weight: bolder !important;\n}\n\n.lh-1 {\n line-height: 1 !important;\n}\n\n.lh-sm {\n line-height: 1.25 !important;\n}\n\n.lh-base {\n line-height: 1.5 !important;\n}\n\n.lh-lg {\n line-height: 2 !important;\n}\n\n.text-start {\n text-align: right !important;\n}\n\n.text-end {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-decoration-underline {\n text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n text-decoration: line-through !important;\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n.text-primary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-black-50 {\n --bs-text-opacity: 1;\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n --bs-text-opacity: 1;\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-body-secondary {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-body-tertiary {\n --bs-text-opacity: 1;\n color: var(--bs-tertiary-color) !important;\n}\n\n.text-body-emphasis {\n --bs-text-opacity: 1;\n color: var(--bs-emphasis-color) !important;\n}\n\n.text-reset {\n --bs-text-opacity: 1;\n color: inherit !important;\n}\n\n.text-opacity-25 {\n --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n --bs-text-opacity: 1;\n}\n\n.text-primary-emphasis {\n color: var(--bs-primary-text-emphasis) !important;\n}\n\n.text-secondary-emphasis {\n color: var(--bs-secondary-text-emphasis) !important;\n}\n\n.text-success-emphasis {\n color: var(--bs-success-text-emphasis) !important;\n}\n\n.text-info-emphasis {\n color: var(--bs-info-text-emphasis) !important;\n}\n\n.text-warning-emphasis {\n color: var(--bs-warning-text-emphasis) !important;\n}\n\n.text-danger-emphasis {\n color: var(--bs-danger-text-emphasis) !important;\n}\n\n.text-light-emphasis {\n color: var(--bs-light-text-emphasis) !important;\n}\n\n.text-dark-emphasis {\n color: var(--bs-dark-text-emphasis) !important;\n}\n\n.link-opacity-10 {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-10-hover:hover {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-25 {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-25-hover:hover {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-50 {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-50-hover:hover {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-75 {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-75-hover:hover {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-100 {\n --bs-link-opacity: 1;\n}\n\n.link-opacity-100-hover:hover {\n --bs-link-opacity: 1;\n}\n\n.link-offset-1 {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-1-hover:hover {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-2 {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-2-hover:hover {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-3 {\n text-underline-offset: 0.375em !important;\n}\n\n.link-offset-3-hover:hover {\n text-underline-offset: 0.375em !important;\n}\n\n.link-underline-primary {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-secondary {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-success {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-info {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-warning {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-danger {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-light {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-dark {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-underline-opacity-0 {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-0-hover:hover {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-10 {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-10-hover:hover {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-25 {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-25-hover:hover {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-50 {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-50-hover:hover {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-75 {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-75-hover:hover {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-100 {\n --bs-link-underline-opacity: 1;\n}\n\n.link-underline-opacity-100-hover:hover {\n --bs-link-underline-opacity: 1;\n}\n\n.bg-primary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n --bs-bg-opacity: 1;\n background-color: transparent !important;\n}\n\n.bg-body-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body-tertiary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-opacity-10 {\n --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n --bs-bg-opacity: 1;\n}\n\n.bg-primary-subtle {\n background-color: var(--bs-primary-bg-subtle) !important;\n}\n\n.bg-secondary-subtle {\n background-color: var(--bs-secondary-bg-subtle) !important;\n}\n\n.bg-success-subtle {\n background-color: var(--bs-success-bg-subtle) !important;\n}\n\n.bg-info-subtle {\n background-color: var(--bs-info-bg-subtle) !important;\n}\n\n.bg-warning-subtle {\n background-color: var(--bs-warning-bg-subtle) !important;\n}\n\n.bg-danger-subtle {\n background-color: var(--bs-danger-bg-subtle) !important;\n}\n\n.bg-light-subtle {\n background-color: var(--bs-light-bg-subtle) !important;\n}\n\n.bg-dark-subtle {\n background-color: var(--bs-dark-bg-subtle) !important;\n}\n\n.bg-gradient {\n background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n -webkit-user-select: all !important;\n -moz-user-select: all !important;\n user-select: all !important;\n}\n\n.user-select-auto {\n -webkit-user-select: auto !important;\n -moz-user-select: auto !important;\n user-select: auto !important;\n}\n\n.user-select-none {\n -webkit-user-select: none !important;\n -moz-user-select: none !important;\n user-select: none !important;\n}\n\n.pe-none {\n pointer-events: none !important;\n}\n\n.pe-auto {\n pointer-events: auto !important;\n}\n\n.rounded {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.rounded-1 {\n border-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-2 {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-3 {\n border-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-4 {\n border-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-5 {\n border-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-top {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-0 {\n border-top-right-radius: 0 !important;\n border-top-left-radius: 0 !important;\n}\n\n.rounded-top-1 {\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-top-2 {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-3 {\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-top-4 {\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-top-5 {\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-top-circle {\n border-top-right-radius: 50% !important;\n border-top-left-radius: 50% !important;\n}\n\n.rounded-top-pill {\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-end {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-0 {\n border-top-left-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n}\n\n.rounded-end-1 {\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-end-2 {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-3 {\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-end-4 {\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-end-5 {\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-end-circle {\n border-top-left-radius: 50% !important;\n border-bottom-left-radius: 50% !important;\n}\n\n.rounded-end-pill {\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-bottom {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-0 {\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n}\n\n.rounded-bottom-1 {\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-bottom-2 {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-3 {\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-bottom-4 {\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-bottom-5 {\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-bottom-circle {\n border-bottom-left-radius: 50% !important;\n border-bottom-right-radius: 50% !important;\n}\n\n.rounded-bottom-pill {\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-start {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-0 {\n border-bottom-right-radius: 0 !important;\n border-top-right-radius: 0 !important;\n}\n\n.rounded-start-1 {\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-start-2 {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-3 {\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-start-4 {\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-start-5 {\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-start-circle {\n border-bottom-right-radius: 50% !important;\n border-top-right-radius: 50% !important;\n}\n\n.rounded-start-pill {\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n.z-n1 {\n z-index: -1 !important;\n}\n\n.z-0 {\n z-index: 0 !important;\n}\n\n.z-1 {\n z-index: 1 !important;\n}\n\n.z-2 {\n z-index: 2 !important;\n}\n\n.z-3 {\n z-index: 3 !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-start {\n float: right !important;\n }\n .float-sm-end {\n float: left !important;\n }\n .float-sm-none {\n float: none !important;\n }\n .object-fit-sm-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-sm-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-sm-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-sm-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-sm-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-sm-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-left: 0 !important;\n }\n .me-sm-1 {\n margin-left: 0.25rem !important;\n }\n .me-sm-2 {\n margin-left: 0.5rem !important;\n }\n .me-sm-3 {\n margin-left: 1rem !important;\n }\n .me-sm-4 {\n margin-left: 1.5rem !important;\n }\n .me-sm-5 {\n margin-left: 3rem !important;\n }\n .me-sm-auto {\n margin-left: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-right: 0 !important;\n }\n .ms-sm-1 {\n margin-right: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-right: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-right: 1rem !important;\n }\n .ms-sm-4 {\n margin-right: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-right: 3rem !important;\n }\n .ms-sm-auto {\n margin-right: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-sm-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-sm-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-sm-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-sm-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-sm-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-left: 0 !important;\n }\n .pe-sm-1 {\n padding-left: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-left: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-left: 1rem !important;\n }\n .pe-sm-4 {\n padding-left: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-left: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-right: 0 !important;\n }\n .ps-sm-1 {\n padding-right: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-right: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-right: 1rem !important;\n }\n .ps-sm-4 {\n padding-right: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-right: 3rem !important;\n }\n .gap-sm-0 {\n gap: 0 !important;\n }\n .gap-sm-1 {\n gap: 0.25rem !important;\n }\n .gap-sm-2 {\n gap: 0.5rem !important;\n }\n .gap-sm-3 {\n gap: 1rem !important;\n }\n .gap-sm-4 {\n gap: 1.5rem !important;\n }\n .gap-sm-5 {\n gap: 3rem !important;\n }\n .row-gap-sm-0 {\n row-gap: 0 !important;\n }\n .row-gap-sm-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-sm-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-sm-3 {\n row-gap: 1rem !important;\n }\n .row-gap-sm-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-sm-5 {\n row-gap: 3rem !important;\n }\n .column-gap-sm-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-sm-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-sm-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-sm-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-sm-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-sm-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-sm-start {\n text-align: right !important;\n }\n .text-sm-end {\n text-align: left !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n@media (min-width: 768px) {\n .float-md-start {\n float: right !important;\n }\n .float-md-end {\n float: left !important;\n }\n .float-md-none {\n float: none !important;\n }\n .object-fit-md-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-md-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-md-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-md-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-md-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-md-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-md-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-md-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-md-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-md-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-md-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-left: 0 !important;\n }\n .me-md-1 {\n margin-left: 0.25rem !important;\n }\n .me-md-2 {\n margin-left: 0.5rem !important;\n }\n .me-md-3 {\n margin-left: 1rem !important;\n }\n .me-md-4 {\n margin-left: 1.5rem !important;\n }\n .me-md-5 {\n margin-left: 3rem !important;\n }\n .me-md-auto {\n margin-left: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-right: 0 !important;\n }\n .ms-md-1 {\n margin-right: 0.25rem !important;\n }\n .ms-md-2 {\n margin-right: 0.5rem !important;\n }\n .ms-md-3 {\n margin-right: 1rem !important;\n }\n .ms-md-4 {\n margin-right: 1.5rem !important;\n }\n .ms-md-5 {\n margin-right: 3rem !important;\n }\n .ms-md-auto {\n margin-right: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-md-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-md-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-md-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-md-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-md-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-left: 0 !important;\n }\n .pe-md-1 {\n padding-left: 0.25rem !important;\n }\n .pe-md-2 {\n padding-left: 0.5rem !important;\n }\n .pe-md-3 {\n padding-left: 1rem !important;\n }\n .pe-md-4 {\n padding-left: 1.5rem !important;\n }\n .pe-md-5 {\n padding-left: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-right: 0 !important;\n }\n .ps-md-1 {\n padding-right: 0.25rem !important;\n }\n .ps-md-2 {\n padding-right: 0.5rem !important;\n }\n .ps-md-3 {\n padding-right: 1rem !important;\n }\n .ps-md-4 {\n padding-right: 1.5rem !important;\n }\n .ps-md-5 {\n padding-right: 3rem !important;\n }\n .gap-md-0 {\n gap: 0 !important;\n }\n .gap-md-1 {\n gap: 0.25rem !important;\n }\n .gap-md-2 {\n gap: 0.5rem !important;\n }\n .gap-md-3 {\n gap: 1rem !important;\n }\n .gap-md-4 {\n gap: 1.5rem !important;\n }\n .gap-md-5 {\n gap: 3rem !important;\n }\n .row-gap-md-0 {\n row-gap: 0 !important;\n }\n .row-gap-md-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-md-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-md-3 {\n row-gap: 1rem !important;\n }\n .row-gap-md-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-md-5 {\n row-gap: 3rem !important;\n }\n .column-gap-md-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-md-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-md-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-md-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-md-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-md-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-md-start {\n text-align: right !important;\n }\n .text-md-end {\n text-align: left !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n@media (min-width: 992px) {\n .float-lg-start {\n float: right !important;\n }\n .float-lg-end {\n float: left !important;\n }\n .float-lg-none {\n float: none !important;\n }\n .object-fit-lg-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-lg-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-lg-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-lg-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-lg-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-lg-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-left: 0 !important;\n }\n .me-lg-1 {\n margin-left: 0.25rem !important;\n }\n .me-lg-2 {\n margin-left: 0.5rem !important;\n }\n .me-lg-3 {\n margin-left: 1rem !important;\n }\n .me-lg-4 {\n margin-left: 1.5rem !important;\n }\n .me-lg-5 {\n margin-left: 3rem !important;\n }\n .me-lg-auto {\n margin-left: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-right: 0 !important;\n }\n .ms-lg-1 {\n margin-right: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-right: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-right: 1rem !important;\n }\n .ms-lg-4 {\n margin-right: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-right: 3rem !important;\n }\n .ms-lg-auto {\n margin-right: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-lg-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-lg-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-lg-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-lg-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-lg-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-left: 0 !important;\n }\n .pe-lg-1 {\n padding-left: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-left: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-left: 1rem !important;\n }\n .pe-lg-4 {\n padding-left: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-left: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-right: 0 !important;\n }\n .ps-lg-1 {\n padding-right: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-right: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-right: 1rem !important;\n }\n .ps-lg-4 {\n padding-right: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-right: 3rem !important;\n }\n .gap-lg-0 {\n gap: 0 !important;\n }\n .gap-lg-1 {\n gap: 0.25rem !important;\n }\n .gap-lg-2 {\n gap: 0.5rem !important;\n }\n .gap-lg-3 {\n gap: 1rem !important;\n }\n .gap-lg-4 {\n gap: 1.5rem !important;\n }\n .gap-lg-5 {\n gap: 3rem !important;\n }\n .row-gap-lg-0 {\n row-gap: 0 !important;\n }\n .row-gap-lg-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-lg-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-lg-3 {\n row-gap: 1rem !important;\n }\n .row-gap-lg-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-lg-5 {\n row-gap: 3rem !important;\n }\n .column-gap-lg-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-lg-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-lg-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-lg-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-lg-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-lg-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-lg-start {\n text-align: right !important;\n }\n .text-lg-end {\n text-align: left !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .float-xl-start {\n float: right !important;\n }\n .float-xl-end {\n float: left !important;\n }\n .float-xl-none {\n float: none !important;\n }\n .object-fit-xl-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-xl-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-xl-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-xl-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-xl-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-left: 0 !important;\n }\n .me-xl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xl-3 {\n margin-left: 1rem !important;\n }\n .me-xl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xl-5 {\n margin-left: 3rem !important;\n }\n .me-xl-auto {\n margin-left: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-right: 0 !important;\n }\n .ms-xl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-right: 1rem !important;\n }\n .ms-xl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-right: 3rem !important;\n }\n .ms-xl-auto {\n margin-right: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-left: 0 !important;\n }\n .pe-xl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-left: 1rem !important;\n }\n .pe-xl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-left: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-right: 0 !important;\n }\n .ps-xl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-right: 1rem !important;\n }\n .ps-xl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-right: 3rem !important;\n }\n .gap-xl-0 {\n gap: 0 !important;\n }\n .gap-xl-1 {\n gap: 0.25rem !important;\n }\n .gap-xl-2 {\n gap: 0.5rem !important;\n }\n .gap-xl-3 {\n gap: 1rem !important;\n }\n .gap-xl-4 {\n gap: 1.5rem !important;\n }\n .gap-xl-5 {\n gap: 3rem !important;\n }\n .row-gap-xl-0 {\n row-gap: 0 !important;\n }\n .row-gap-xl-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-xl-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-xl-3 {\n row-gap: 1rem !important;\n }\n .row-gap-xl-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-xl-5 {\n row-gap: 3rem !important;\n }\n .column-gap-xl-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-xl-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-xl-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-xl-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-xl-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-xl-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-xl-start {\n text-align: right !important;\n }\n .text-xl-end {\n text-align: left !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1400px) {\n .float-xxl-start {\n float: right !important;\n }\n .float-xxl-end {\n float: left !important;\n }\n .float-xxl-none {\n float: none !important;\n }\n .object-fit-xxl-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-xxl-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-xxl-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-xxl-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-xxl-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xxl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xxl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xxl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-left: 0 !important;\n }\n .me-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-left: 1rem !important;\n }\n .me-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-left: 3rem !important;\n }\n .me-xxl-auto {\n margin-left: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-right: 0 !important;\n }\n .ms-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-right: 1rem !important;\n }\n .ms-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-right: 3rem !important;\n }\n .ms-xxl-auto {\n margin-right: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xxl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xxl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-left: 0 !important;\n }\n .pe-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-left: 1rem !important;\n }\n .pe-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-left: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-right: 0 !important;\n }\n .ps-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-right: 1rem !important;\n }\n .ps-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-right: 3rem !important;\n }\n .gap-xxl-0 {\n gap: 0 !important;\n }\n .gap-xxl-1 {\n gap: 0.25rem !important;\n }\n .gap-xxl-2 {\n gap: 0.5rem !important;\n }\n .gap-xxl-3 {\n gap: 1rem !important;\n }\n .gap-xxl-4 {\n gap: 1.5rem !important;\n }\n .gap-xxl-5 {\n gap: 3rem !important;\n }\n .row-gap-xxl-0 {\n row-gap: 0 !important;\n }\n .row-gap-xxl-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-xxl-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-xxl-3 {\n row-gap: 1rem !important;\n }\n .row-gap-xxl-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-xxl-5 {\n row-gap: 3rem !important;\n }\n .column-gap-xxl-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-xxl-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-xxl-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-xxl-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-xxl-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-xxl-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-xxl-start {\n text-align: right !important;\n }\n .text-xxl-end {\n text-align: left !important;\n }\n .text-xxl-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .fs-1 {\n font-size: 2.5rem !important;\n }\n .fs-2 {\n font-size: 2rem !important;\n }\n .fs-3 {\n font-size: 1.75rem !important;\n }\n .fs-4 {\n font-size: 1.5rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.rtl.css.map */","// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n color: var(--#{$prefix}highlight-color);\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`