diff --git a/Directory.Packages.props b/Directory.Packages.props index 306e69d2e..4558148f5 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -20,6 +20,8 @@ + + @@ -135,6 +137,7 @@ + @@ -156,6 +159,7 @@ + @@ -280,7 +284,7 @@ - + diff --git a/aspnet-core/LINGYUN.MicroService.All.sln b/aspnet-core/LINGYUN.MicroService.All.sln index 39b63554f..3f4365364 100644 --- a/aspnet-core/LINGYUN.MicroService.All.sln +++ b/aspnet-core/LINGYUN.MicroService.All.sln @@ -400,8 +400,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TextTemplating. EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Localization", "framework\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj", "{995DB1CE-A2FC-4468-A521-4207FD587EC5}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Account.Templates", "modules\account\LINGYUN.Abp.Account.Templates\LINGYUN.Abp.Account.Templates.csproj", "{AFFBE8EE-1B92-4CDF-8A4F-4000B78A0154}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "caching-management", "caching-management", "{63FCC71F-1CEF-44D3-B95B-23EE58DE8C95}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.CachingManagement.Domain", "modules\caching-management\LINGYUN.Abp.CachingManagement.Domain\LINGYUN.Abp.CachingManagement.Domain.csproj", "{7D6AE2BB-7DBF-4FC8-A1F5-C004D139B278}" @@ -777,6 +775,48 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.HttpApi.Cl EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Emailing.Platform.Tests", "tests\LINGYUN.Abp.Emailing.Platform.Tests\LINGYUN.Abp.Emailing.Platform.Tests.csproj", "{80F44B5B-F8FF-47FA-9A77-BE2D176B2721}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "gdpr", "gdpr", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.Domain.Shared", "modules\gdpr\LINGYUN.Abp.Gdpr.Domain.Shared\LINGYUN.Abp.Gdpr.Domain.Shared.csproj", "{DD365101-E8FC-6516-2883-B9CA024B36FA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.Domain", "modules\gdpr\LINGYUN.Abp.Gdpr.Domain\LINGYUN.Abp.Gdpr.Domain.csproj", "{C330BADD-59A0-A3CD-E839-A0D4C2C636EE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.Domain.Identity", "modules\gdpr\LINGYUN.Abp.Gdpr.Domain.Identity\LINGYUN.Abp.Gdpr.Domain.Identity.csproj", "{F1C6C6B6-5B99-5AA6-7F76-27560C111605}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.Application.Contracts", "modules\gdpr\LINGYUN.Abp.Gdpr.Application.Contracts\LINGYUN.Abp.Gdpr.Application.Contracts.csproj", "{459DA653-F12A-65B5-41EF-A5877B1C38BA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.Application", "modules\gdpr\LINGYUN.Abp.Gdpr.Application\LINGYUN.Abp.Gdpr.Application.csproj", "{9DD70A99-41A6-8598-553E-2B5AB6277035}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.EntityFrameworkCore", "modules\gdpr\LINGYUN.Abp.Gdpr.EntityFrameworkCore\LINGYUN.Abp.Gdpr.EntityFrameworkCore.csproj", "{016CCD97-3551-B6C7-FC6C-FF1CB7F84B88}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.HttpApi", "modules\gdpr\LINGYUN.Abp.Gdpr.HttpApi\LINGYUN.Abp.Gdpr.HttpApi.csproj", "{F92EBAA6-5BCF-1B7D-FB5E-CDD9F61CA147}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Encryption.SM4", "framework\security\LINGYUN.Abp.Encryption.SM4\LINGYUN.Abp.Encryption.SM4.csproj", "{AE00DA82-B33A-CAF7-D9CD-D5E26608741B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Account.Web", "modules\account\LINGYUN.Abp.Account.Web\LINGYUN.Abp.Account.Web.csproj", "{F9A0D88F-53AE-4AC7-8E15-163C34386E7C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Account.Web.IdentityServer", "modules\account\LINGYUN.Abp.Account.Web.IdentityServer\LINGYUN.Abp.Account.Web.IdentityServer.csproj", "{0FF0A04C-B580-4A56-9171-CF2988B5DE5A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Account.Emailing", "modules\account\LINGYUN.Abp.Account.Emailing\LINGYUN.Abp.Account.Emailing.csproj", "{29A87F09-CC03-4DB8-B584-98073AB50AA4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Account.Web.OpenIddict", "modules\account\LINGYUN.Abp.Account.Web.OpenIddict\LINGYUN.Abp.Account.Web.OpenIddict.csproj", "{F810C8A8-1256-440F-BAAF-7F3588291963}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Account.HttpApi.Client", "modules\account\LINGYUN.Abp.Account.HttpApi.Client\LINGYUN.Abp.Account.HttpApi.Client.csproj", "{FFBE3EC6-F11B-4B7C-9BAF-AFBBB12BEF59}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.HttpApi.Client", "modules\gdpr\LINGYUN.Abp.Gdpr.HttpApi.Client\LINGYUN.Abp.Gdpr.HttpApi.Client.csproj", "{C95DE287-9D21-4DCD-9281-A060B6D99774}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.Web", "modules\gdpr\LINGYUN.Abp.Gdpr.Web\LINGYUN.Abp.Gdpr.Web.csproj", "{96748DAE-D367-48C0-B64E-2F25010EAC4D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "exporter", "exporter", "{A4633711-7FB6-411A-8D08-BB9A0A778046}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Exporter.Core", "framework\exporter\LINGYUN.Abp.Exporter.Core\LINGYUN.Abp.Exporter.Core.csproj", "{5A0063BF-EE72-E688-84C6-9E3CE0616C94}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Exporter.MiniExcel", "framework\exporter\LINGYUN.Abp.Exporter.MiniExcel\LINGYUN.Abp.Exporter.MiniExcel.csproj", "{ECE61F58-1AEC-1E4F-1543-76C2242B6F70}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Exporter.MagicodesIE.Excel", "framework\exporter\LINGYUN.Abp.Exporter.MagicodesIE.Excel\LINGYUN.Abp.Exporter.MagicodesIE.Excel.csproj", "{B7B63E08-8F62-34F6-FEA5-063267F1FC85}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Auditing.HttpApi.Client", "modules\auditing\LINGYUN.Abp.Auditing.HttpApi.Client\LINGYUN.Abp.Auditing.HttpApi.Client.csproj", "{7C48C1CA-7E53-4261-A477-454DD3A8402C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1399,10 +1439,6 @@ Global {995DB1CE-A2FC-4468-A521-4207FD587EC5}.Debug|Any CPU.Build.0 = Debug|Any CPU {995DB1CE-A2FC-4468-A521-4207FD587EC5}.Release|Any CPU.ActiveCfg = Release|Any CPU {995DB1CE-A2FC-4468-A521-4207FD587EC5}.Release|Any CPU.Build.0 = Release|Any CPU - {AFFBE8EE-1B92-4CDF-8A4F-4000B78A0154}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AFFBE8EE-1B92-4CDF-8A4F-4000B78A0154}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AFFBE8EE-1B92-4CDF-8A4F-4000B78A0154}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AFFBE8EE-1B92-4CDF-8A4F-4000B78A0154}.Release|Any CPU.Build.0 = Release|Any CPU {7D6AE2BB-7DBF-4FC8-A1F5-C004D139B278}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7D6AE2BB-7DBF-4FC8-A1F5-C004D139B278}.Debug|Any CPU.Build.0 = Debug|Any CPU {7D6AE2BB-7DBF-4FC8-A1F5-C004D139B278}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -1999,6 +2035,82 @@ Global {80F44B5B-F8FF-47FA-9A77-BE2D176B2721}.Debug|Any CPU.Build.0 = Debug|Any CPU {80F44B5B-F8FF-47FA-9A77-BE2D176B2721}.Release|Any CPU.ActiveCfg = Release|Any CPU {80F44B5B-F8FF-47FA-9A77-BE2D176B2721}.Release|Any CPU.Build.0 = Release|Any CPU + {DD365101-E8FC-6516-2883-B9CA024B36FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD365101-E8FC-6516-2883-B9CA024B36FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD365101-E8FC-6516-2883-B9CA024B36FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD365101-E8FC-6516-2883-B9CA024B36FA}.Release|Any CPU.Build.0 = Release|Any CPU + {C330BADD-59A0-A3CD-E839-A0D4C2C636EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C330BADD-59A0-A3CD-E839-A0D4C2C636EE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C330BADD-59A0-A3CD-E839-A0D4C2C636EE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C330BADD-59A0-A3CD-E839-A0D4C2C636EE}.Release|Any CPU.Build.0 = Release|Any CPU + {F1C6C6B6-5B99-5AA6-7F76-27560C111605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1C6C6B6-5B99-5AA6-7F76-27560C111605}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1C6C6B6-5B99-5AA6-7F76-27560C111605}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F1C6C6B6-5B99-5AA6-7F76-27560C111605}.Release|Any CPU.Build.0 = Release|Any CPU + {459DA653-F12A-65B5-41EF-A5877B1C38BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {459DA653-F12A-65B5-41EF-A5877B1C38BA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {459DA653-F12A-65B5-41EF-A5877B1C38BA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {459DA653-F12A-65B5-41EF-A5877B1C38BA}.Release|Any CPU.Build.0 = Release|Any CPU + {9DD70A99-41A6-8598-553E-2B5AB6277035}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9DD70A99-41A6-8598-553E-2B5AB6277035}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9DD70A99-41A6-8598-553E-2B5AB6277035}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9DD70A99-41A6-8598-553E-2B5AB6277035}.Release|Any CPU.Build.0 = Release|Any CPU + {016CCD97-3551-B6C7-FC6C-FF1CB7F84B88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {016CCD97-3551-B6C7-FC6C-FF1CB7F84B88}.Debug|Any CPU.Build.0 = Debug|Any CPU + {016CCD97-3551-B6C7-FC6C-FF1CB7F84B88}.Release|Any CPU.ActiveCfg = Release|Any CPU + {016CCD97-3551-B6C7-FC6C-FF1CB7F84B88}.Release|Any CPU.Build.0 = Release|Any CPU + {F92EBAA6-5BCF-1B7D-FB5E-CDD9F61CA147}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F92EBAA6-5BCF-1B7D-FB5E-CDD9F61CA147}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F92EBAA6-5BCF-1B7D-FB5E-CDD9F61CA147}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F92EBAA6-5BCF-1B7D-FB5E-CDD9F61CA147}.Release|Any CPU.Build.0 = Release|Any CPU + {AE00DA82-B33A-CAF7-D9CD-D5E26608741B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AE00DA82-B33A-CAF7-D9CD-D5E26608741B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AE00DA82-B33A-CAF7-D9CD-D5E26608741B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AE00DA82-B33A-CAF7-D9CD-D5E26608741B}.Release|Any CPU.Build.0 = Release|Any CPU + {F9A0D88F-53AE-4AC7-8E15-163C34386E7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F9A0D88F-53AE-4AC7-8E15-163C34386E7C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F9A0D88F-53AE-4AC7-8E15-163C34386E7C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F9A0D88F-53AE-4AC7-8E15-163C34386E7C}.Release|Any CPU.Build.0 = Release|Any CPU + {0FF0A04C-B580-4A56-9171-CF2988B5DE5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0FF0A04C-B580-4A56-9171-CF2988B5DE5A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0FF0A04C-B580-4A56-9171-CF2988B5DE5A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0FF0A04C-B580-4A56-9171-CF2988B5DE5A}.Release|Any CPU.Build.0 = Release|Any CPU + {29A87F09-CC03-4DB8-B584-98073AB50AA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {29A87F09-CC03-4DB8-B584-98073AB50AA4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {29A87F09-CC03-4DB8-B584-98073AB50AA4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {29A87F09-CC03-4DB8-B584-98073AB50AA4}.Release|Any CPU.Build.0 = Release|Any CPU + {F810C8A8-1256-440F-BAAF-7F3588291963}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F810C8A8-1256-440F-BAAF-7F3588291963}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F810C8A8-1256-440F-BAAF-7F3588291963}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F810C8A8-1256-440F-BAAF-7F3588291963}.Release|Any CPU.Build.0 = Release|Any CPU + {FFBE3EC6-F11B-4B7C-9BAF-AFBBB12BEF59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FFBE3EC6-F11B-4B7C-9BAF-AFBBB12BEF59}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FFBE3EC6-F11B-4B7C-9BAF-AFBBB12BEF59}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FFBE3EC6-F11B-4B7C-9BAF-AFBBB12BEF59}.Release|Any CPU.Build.0 = Release|Any CPU + {C95DE287-9D21-4DCD-9281-A060B6D99774}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C95DE287-9D21-4DCD-9281-A060B6D99774}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C95DE287-9D21-4DCD-9281-A060B6D99774}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C95DE287-9D21-4DCD-9281-A060B6D99774}.Release|Any CPU.Build.0 = Release|Any CPU + {96748DAE-D367-48C0-B64E-2F25010EAC4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {96748DAE-D367-48C0-B64E-2F25010EAC4D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {96748DAE-D367-48C0-B64E-2F25010EAC4D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {96748DAE-D367-48C0-B64E-2F25010EAC4D}.Release|Any CPU.Build.0 = Release|Any CPU + {5A0063BF-EE72-E688-84C6-9E3CE0616C94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5A0063BF-EE72-E688-84C6-9E3CE0616C94}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5A0063BF-EE72-E688-84C6-9E3CE0616C94}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5A0063BF-EE72-E688-84C6-9E3CE0616C94}.Release|Any CPU.Build.0 = Release|Any CPU + {ECE61F58-1AEC-1E4F-1543-76C2242B6F70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ECE61F58-1AEC-1E4F-1543-76C2242B6F70}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ECE61F58-1AEC-1E4F-1543-76C2242B6F70}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ECE61F58-1AEC-1E4F-1543-76C2242B6F70}.Release|Any CPU.Build.0 = Release|Any CPU + {B7B63E08-8F62-34F6-FEA5-063267F1FC85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B7B63E08-8F62-34F6-FEA5-063267F1FC85}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B7B63E08-8F62-34F6-FEA5-063267F1FC85}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B7B63E08-8F62-34F6-FEA5-063267F1FC85}.Release|Any CPU.Build.0 = Release|Any CPU + {7C48C1CA-7E53-4261-A477-454DD3A8402C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7C48C1CA-7E53-4261-A477-454DD3A8402C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C48C1CA-7E53-4261-A477-454DD3A8402C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7C48C1CA-7E53-4261-A477-454DD3A8402C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -2192,7 +2304,6 @@ Global {130F8ED1-A64F-48DE-BF43-18EAD19CAF63} = {ABD89F39-62D9-439E-8662-BE4F36BFA04F} {A53FE09E-6B1C-46C0-9422-C313D14AE9E4} = {ABD89F39-62D9-439E-8662-BE4F36BFA04F} {995DB1CE-A2FC-4468-A521-4207FD587EC5} = {90E88EAC-4291-4406-8D88-EFDF61B11292} - {AFFBE8EE-1B92-4CDF-8A4F-4000B78A0154} = {9E72FEB9-A626-4312-892B-CDD043879758} {63FCC71F-1CEF-44D3-B95B-23EE58DE8C95} = {D52D5A11-78EF-4154-8298-267738A6715B} {7D6AE2BB-7DBF-4FC8-A1F5-C004D139B278} = {63FCC71F-1CEF-44D3-B95B-23EE58DE8C95} {920867B4-4740-4074-9B49-14002B272A63} = {63FCC71F-1CEF-44D3-B95B-23EE58DE8C95} @@ -2375,6 +2486,27 @@ Global {856B4ACA-BD13-417F-A6E2-0F401F877189} = {370D7CD5-1E17-4F3D-BBFA-03429F6D4F2F} {B52B199C-0E1C-4CE9-B066-71D26F618424} = {F4923692-D343-4318-AECA-96F580B1A563} {80F44B5B-F8FF-47FA-9A77-BE2D176B2721} = {370D7CD5-1E17-4F3D-BBFA-03429F6D4F2F} + {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {D52D5A11-78EF-4154-8298-267738A6715B} + {DD365101-E8FC-6516-2883-B9CA024B36FA} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {C330BADD-59A0-A3CD-E839-A0D4C2C636EE} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {F1C6C6B6-5B99-5AA6-7F76-27560C111605} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {459DA653-F12A-65B5-41EF-A5877B1C38BA} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {9DD70A99-41A6-8598-553E-2B5AB6277035} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {016CCD97-3551-B6C7-FC6C-FF1CB7F84B88} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {F92EBAA6-5BCF-1B7D-FB5E-CDD9F61CA147} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {AE00DA82-B33A-CAF7-D9CD-D5E26608741B} = {9D1302BE-3886-49F8-B0CD-35D2AC1E5A37} + {F9A0D88F-53AE-4AC7-8E15-163C34386E7C} = {9E72FEB9-A626-4312-892B-CDD043879758} + {0FF0A04C-B580-4A56-9171-CF2988B5DE5A} = {9E72FEB9-A626-4312-892B-CDD043879758} + {29A87F09-CC03-4DB8-B584-98073AB50AA4} = {9E72FEB9-A626-4312-892B-CDD043879758} + {F810C8A8-1256-440F-BAAF-7F3588291963} = {9E72FEB9-A626-4312-892B-CDD043879758} + {FFBE3EC6-F11B-4B7C-9BAF-AFBBB12BEF59} = {9E72FEB9-A626-4312-892B-CDD043879758} + {C95DE287-9D21-4DCD-9281-A060B6D99774} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {96748DAE-D367-48C0-B64E-2F25010EAC4D} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {A4633711-7FB6-411A-8D08-BB9A0A778046} = {C5CAD011-DF84-4914-939C-0C029DCEF26F} + {5A0063BF-EE72-E688-84C6-9E3CE0616C94} = {A4633711-7FB6-411A-8D08-BB9A0A778046} + {ECE61F58-1AEC-1E4F-1543-76C2242B6F70} = {A4633711-7FB6-411A-8D08-BB9A0A778046} + {B7B63E08-8F62-34F6-FEA5-063267F1FC85} = {A4633711-7FB6-411A-8D08-BB9A0A778046} + {7C48C1CA-7E53-4261-A477-454DD3A8402C} = {67DAB2A0-D407-4CAB-8414-AE3D0AC52FC4} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/AbpAccountWebIdentityServerModule.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/AbpAccountWebIdentityServerModule.cs new file mode 100644 index 000000000..207966e60 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/AbpAccountWebIdentityServerModule.cs @@ -0,0 +1,28 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; +using VoloAbpAccountWebIdentityServerModule = Volo.Abp.Account.Web.AbpAccountWebIdentityServerModule; + +namespace LINGYUN.Abp.Account.Web.IdentityServer; + +[DependsOn( + typeof(AbpAccountWebModule), + typeof(VoloAbpAccountWebIdentityServerModule))] +public class AbpAccountWebIdentityServerModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpAccountWebIdentityServerModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/FodyWeavers.xml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/FodyWeavers.xsd b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + '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/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/LINGYUN.Abp.Account.Web.IdentityServer.csproj b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/LINGYUN.Abp.Account.Web.IdentityServer.csproj new file mode 100644 index 000000000..0c0554570 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/LINGYUN.Abp.Account.Web.IdentityServer.csproj @@ -0,0 +1,26 @@ + + + + + + + net9.0 + LINGYUN.Abp.Account.Web.IdentityServer + LINGYUN.Abp.Account.Web.IdentityServer + false + false + false + LINGYUN.Abp.Account.Web.IdentityServer + Library + + + + + + + + + + + + diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs similarity index 95% rename from aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs index 006ebd069..29a46ffd6 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs @@ -1,68 +1,68 @@ -using IdentityServer4.Services; -using IdentityServer4.Stores; -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 IdentityOptions = Microsoft.AspNetCore.Identity.IdentityOptions; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - /// - /// 重写登录模型,实现双因素登录 - /// - [Dependency(ReplaceServices = true)] - [ExposeServices(typeof(LoginModel), typeof(IdentityServerSupportedLoginModel))] - public class TwoFactorSupportedLoginModel : IdentityServerSupportedLoginModel - { - public TwoFactorSupportedLoginModel( - IAuthenticationSchemeProvider schemeProvider, - IOptions accountOptions, - IOptions identityOptions, - IIdentityServerInteractionService interaction, - IdentityDynamicClaimsPrincipalContributorCache identityDynamicClaimsPrincipalContributorCache, - IClientStore clientStore, - IEventService identityServerEvents) - : base(schemeProvider, accountOptions, identityOptions, identityDynamicClaimsPrincipalContributorCache, interaction, clientStore, identityServerEvents) - { - - } - - 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 - })); - } - } -} +using IdentityServer4.Services; +using IdentityServer4.Stores; +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 IdentityOptions = Microsoft.AspNetCore.Identity.IdentityOptions; + +namespace LINGYUN.Abp.Account.Web.IdentityServer.Pages.Account +{ + /// + /// 重写登录模型,实现双因素登录 + /// + [Dependency(ReplaceServices = true)] + [ExposeServices(typeof(LoginModel), typeof(IdentityServerSupportedLoginModel))] + public class TwoFactorSupportedLoginModel : IdentityServerSupportedLoginModel + { + public TwoFactorSupportedLoginModel( + IAuthenticationSchemeProvider schemeProvider, + IOptions accountOptions, + IOptions identityOptions, + IIdentityServerInteractionService interaction, + IdentityDynamicClaimsPrincipalContributorCache identityDynamicClaimsPrincipalContributorCache, + IClientStore clientStore, + IEventService identityServerEvents) + : base(schemeProvider, accountOptions, identityOptions, identityDynamicClaimsPrincipalContributorCache, interaction, clientStore, identityServerEvents) + { + + } + + 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/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Pages/_ViewImports.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Pages/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Properties/launchSettings.json b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Properties/launchSettings.json new file mode 100644 index 000000000..14eb87dfc --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "LINGYUN.Abp.Account.Web.IdentityServer": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:56712;http://localhost:56713" + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/AbpAccountWebOpenIddictModule.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/AbpAccountWebOpenIddictModule.cs new file mode 100644 index 000000000..88dc73415 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/AbpAccountWebOpenIddictModule.cs @@ -0,0 +1,28 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; +using VoloAbpAccountWebOpenIddictModule = Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule; + +namespace LINGYUN.Abp.Account.Web.OpenIddict; + +[DependsOn( + typeof(AbpAccountWebModule), + typeof(VoloAbpAccountWebOpenIddictModule))] +public class AbpAccountWebOpenIddictModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpAccountWebOpenIddictModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/FodyWeavers.xml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/FodyWeavers.xsd b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + '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/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/LINGYUN.Abp.Account.Web.OpenIddict.csproj b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/LINGYUN.Abp.Account.Web.OpenIddict.csproj new file mode 100644 index 000000000..ad062b9c9 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/LINGYUN.Abp.Account.Web.OpenIddict.csproj @@ -0,0 +1,26 @@ + + + + + + + net9.0 + LINGYUN.Abp.Account.Web.OpenIddict + LINGYUN.Abp.Account.Web.OpenIddict + false + false + false + LINGYUN.Abp.Account.Web.OpenIddict + Library + + + + + + + + + + + + diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/TwoFactorSupportedLoginModel.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Pages/Account/TwoFactorSupportedLoginModel.cs similarity index 88% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/TwoFactorSupportedLoginModel.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Pages/Account/TwoFactorSupportedLoginModel.cs index 3d5a2f9e0..376372223 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/TwoFactorSupportedLoginModel.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Pages/Account/TwoFactorSupportedLoginModel.cs @@ -1,70 +1,64 @@ -using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using OpenIddict.Server.AspNetCore; -using OpenIddict.Server; -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; -using System.Diagnostics; -using Volo.Abp.Account.Settings; -using Volo.Abp.Settings; -using LINGYUN.Abp.Identity.Session; - -namespace LY.MicroService.AuthServer.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 - })); - } - } -} +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 LINGYUN.Abp.Account.Web.OpenIddict.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/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Pages/_ViewImports.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Pages/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Properties/launchSettings.json b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Properties/launchSettings.json new file mode 100644 index 000000000..cc22df07b --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "LINGYUN.Abp.Account.Web.OpenIddict": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:65279;http://localhost:65280" + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/AbpAccountWebModule.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/AbpAccountWebModule.cs new file mode 100644 index 000000000..c026dcd3c --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/AbpAccountWebModule.cs @@ -0,0 +1,89 @@ +using LINGYUN.Abp.Account.Emailing; +using LINGYUN.Abp.Account.Web.ProfileManagement; +using LINGYUN.Abp.Identity; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Account.Localization; +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.AspNetCore.Mvc.UI.Packages.QRCode; +using Volo.Abp.AutoMapper; +using Volo.Abp.Modularity; +using Volo.Abp.Sms; +using Volo.Abp.VirtualFileSystem; +using VoloAbpAccountWebModule = Volo.Abp.Account.Web.AbpAccountWebModule; + +namespace LINGYUN.Abp.Account.Web; + +[DependsOn( + typeof(AbpSmsModule), + typeof(VoloAbpAccountWebModule), + typeof(AbpIdentityDomainModule), + typeof(AbpAccountEmailingModule), + typeof(AbpAccountApplicationContractsModule))] +public class AbpAccountWebModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + context.Services.PreConfigure(options => + { + options.AddAssemblyResource(typeof(AccountResource), typeof(AbpAccountWebModule).Assembly); + }); + + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpAccountWebModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + ConfigureProfileManagementPage(); + + context.Services.AddAutoMapperObjectMapper(); + Configure(options => + { + options.AddMaps(validate: true); + }); + } + + private void ConfigureProfileManagementPage() + { + Configure(options => + { + options.Contributors.Add(new SessionManagementPageContributor()); + }); + + Configure(options => + { + options.ScriptBundles + .Configure(typeof(ManageModel).FullName, + configuration => + { + // Client Proxies + configuration.AddFiles("/client-proxies/account-proxy.js"); + + // Session + configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/Session/Index.js"); + + // Authenticator + configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.js"); + + // SecurityLog + configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js"); + + // TwoFactor + configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.js"); + + // QrCode + configuration.AddContributors(typeof(QRCodeScriptContributor)); + }); + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/FodyWeavers.xml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/FodyWeavers.xsd b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + '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/modules/account/LINGYUN.Abp.Account.Web/LINGYUN.Abp.Account.Web.csproj b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/LINGYUN.Abp.Account.Web.csproj new file mode 100644 index 000000000..de3a3d203 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/LINGYUN.Abp.Account.Web.csproj @@ -0,0 +1,50 @@ + + + + + + + net9.0 + LINGYUN.Abp.Account.Web + LINGYUN.Abp.Account.Web + false + false + false + true + LINGYUN.Abp.Account.Web + true + Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/AccountProfileAuthenticatorManagementGroupViewComponent.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/AccountProfileAuthenticatorManagementGroupViewComponent.cs new file mode 100644 index 000000000..a4b8bddca --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/AccountProfileAuthenticatorManagementGroupViewComponent.cs @@ -0,0 +1,44 @@ +using Microsoft.AspNetCore.Mvc; +using System.ComponentModel.DataAnnotations; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Authenticator; + +public class AccountProfileAuthenticatorManagementGroupViewComponent : AbpViewComponent +{ + protected IMyProfileAppService ProfileAppService { get; } + + public AccountProfileAuthenticatorManagementGroupViewComponent( + IMyProfileAppService profileAppService) + { + ProfileAppService = profileAppService; + } + + public async virtual Task InvokeAsync() + { + var authenticatorDto = await ProfileAppService.GetAuthenticatorAsync(); + + var model = new AuthenticatorModel + { + AuthenticatorUri = authenticatorDto.AuthenticatorUri, + IsAuthenticated = authenticatorDto.IsAuthenticated, + SharedKey = authenticatorDto.SharedKey, + }; + + return View("~/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.cshtml", model); + } + + public class AuthenticatorModel + { + public bool IsAuthenticated { get; set; } + + public string SharedKey { get; set; } + + public string AuthenticatorUri { get; set; } + + [Required] + [StringLength(6)] + public string AuthenticatorCode { get; set; } + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.cshtml new file mode 100644 index 000000000..347085fbe --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.cshtml @@ -0,0 +1,17 @@ +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.Account.Localization +@using Volo.Abp.Localization + +@inject IHtmlLocalizer L + +@model LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Authenticator.AccountProfileAuthenticatorManagementGroupViewComponent.AuthenticatorModel + + + + + + @L["Authenticator"] + + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.js b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.js new file mode 100644 index 000000000..9ac3ccf0c --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.js @@ -0,0 +1,5 @@ +$(function () { + var ul = abp.localization.getResource('AbpUi'); + + abp.log.warn('Please implement your own authentication procedure!'); +}); diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml similarity index 88% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml index 181e7500b..69e0b47c3 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml @@ -15,7 +15,7 @@ @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); @@ -25,7 +25,7 @@

@L["PersonalSettings"]


- + @@ -39,41 +39,41 @@ - - - - - +
+ +
+ + @if (CurrentUser.EmailVerified) { - + } - else + else { - @**@ - @L["Validation"].Value + @L["Validation"] } - - +
+
+
- @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); + @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 + } + else { - } - } + } + } } diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js similarity index 100% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs new file mode 100644 index 000000000..e97018d72 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs @@ -0,0 +1,19 @@ +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.Account.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/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml new file mode 100644 index 000000000..9cc605220 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml @@ -0,0 +1,22 @@ +@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/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js new file mode 100644 index 000000000..25da32da7 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js @@ -0,0 +1,73 @@ +$(function () { + var ul = abp.localization.getResource('AbpUi'); + var l = abp.localization.getResource('AbpAuditLogging'); + var dataTable = $('#SecurityLogTable').DataTable( + abp.libs.datatables.normalizeConfiguration({ + serverSide: true, + paging: true, + searching: false, + scrollX: true, + ajax: abp.libs.datatables.createAjax(labp.account.mySecurityLog.getList), + columnDefs: [ + { + title: ul('Actions'), + rowAction: { + items: + [ + { + text: ul('Delete'), + confirmMessage: function () { + return ul('ItemWillBeDeletedMessage'); + }, + action: function (data) { + labp.account.mySecurityLog + .delete(data.record.id) + .then(function () { + abp.notify.info( + ul('DeletedSuccessfully') + ); + dataTable.ajax.reload(); + }); + } + } + ] + } + }, + { + title: l('DisplayName:CreationTime'), + data: "creationTime", + render: function (data) { + return luxon + .DateTime + .fromISO(data, { + locale: abp.localization.currentCulture.name + }).toLocaleString(luxon.DateTime.DATETIME_FULL_WITH_SECONDS); + } + }, + { + title: l('DisplayName:Identity'), + data: "identity" + }, + { + title: l('DisplayName:ClientId'), + data: "clientId" + }, + { + title: l('DisplayName:ClientIpAddress'), + data: "clientIpAddress" + }, + { + title: l('DisplayName:ApplicationName'), + data: "applicationName" + }, + { + title: l('DisplayName:Actions'), + data: "action" + }, + { + title: l('DisplayName:BrowserInfo'), + data: "browserInfo" + }] + }) + ); +}); diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/AccountProfileSessionManagementGroupViewComponent.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/AccountProfileSessionManagementGroupViewComponent.cs new file mode 100644 index 000000000..487de3ad7 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/AccountProfileSessionManagementGroupViewComponent.cs @@ -0,0 +1,19 @@ +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Session; + +public class AccountProfileSessionManagementGroupViewComponent : AbpViewComponent +{ + public AccountProfileSessionManagementGroupViewComponent() + { + } + + public async virtual Task InvokeAsync() + { + await Task.CompletedTask; + + return View("~/Pages/Account/Components/ProfileManagementGroup/Session/Index.cshtml"); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/Index.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/Index.cshtml new file mode 100644 index 000000000..7e02f6af2 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/Index.cshtml @@ -0,0 +1,22 @@ +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.Account.Localization +@using Volo.Abp.Localization + +@inject IHtmlLocalizer L + +@section scripts { + +} + + + + + + @L["PersonalSessions"] + + + + + + + diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/Index.js b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/Index.js new file mode 100644 index 000000000..06bc346f4 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/Index.js @@ -0,0 +1,60 @@ +$(function () { + var ul = abp.localization.getResource('AbpUi'); + var il = abp.localization.getResource('AbpIdentity'); + var dataTable = $('#SessionsTable').DataTable( + abp.libs.datatables.normalizeConfiguration({ + serverSide: true, + paging: true, + searching: false, + scrollX: true, + ajax: abp.libs.datatables.createAjax(labp.account.myProfile.getSessions), + 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/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/AccountProfileTwoFactorManagementGroupViewComponent.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/AccountProfileTwoFactorManagementGroupViewComponent.cs new file mode 100644 index 000000000..478514775 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/AccountProfileTwoFactorManagementGroupViewComponent.cs @@ -0,0 +1,33 @@ +using Microsoft.AspNetCore.Mvc; +using System.ComponentModel; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.TwoFactor; + +public class AccountProfileTwoFactorManagementGroupViewComponent : AbpViewComponent +{ + protected IMyProfileAppService ProfileAppService { get; } + + public AccountProfileTwoFactorManagementGroupViewComponent(IMyProfileAppService profileAppService) + { + ProfileAppService = profileAppService; + } + + public async virtual Task InvokeAsync() + { + var dto = await ProfileAppService.GetTwoFactorEnabledAsync(); + var model = new ChangeTwoFactorModel + { + TwoFactorEnabled = dto.Enabled + }; + + return View("~/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.cshtml", model); + } + + public class ChangeTwoFactorModel + { + [DisplayName("TwoFactor:Enabled")] + public bool TwoFactorEnabled { get; set; } + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.cshtml new file mode 100644 index 000000000..bef826803 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.cshtml @@ -0,0 +1,17 @@ +@using Volo.Abp.Account.Localization +@using Microsoft.AspNetCore.Mvc.Localization +@inject IHtmlLocalizer L +@model LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.TwoFactor.AccountProfileTwoFactorManagementGroupViewComponent.ChangeTwoFactorModel + +@section scripts { + +} + + + + @L["TwoFactor"] + + + + + 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 new file mode 100644 index 000000000..f12e05a37 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.js @@ -0,0 +1,17 @@ +$(function () { + var ul = abp.localization.getResource("AbpUi"); + $("#TwoFactorEnabled").change(function () { + var isChecked = $(this).is(':checked'); + abp.ui.setBusy({ busy: true }); + labp.account.myProfile + .changeTwoFactorEnabled({ + enabled: isChecked + }) + .then(function () { + abp.notify.success(ul("SavedSuccessfully")); + }) + .done(function () { + abp.ui.clearBusy(); + }); + }); +}); diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirm.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirm.cshtml similarity index 90% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirm.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirm.cshtml index db421091d..1e5aa47f9 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirm.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirm.cshtml @@ -2,7 +2,7 @@ @inject IHtmlLocalizer L @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Account.Localization -@model LY.MicroService.AuthServer.Pages.Account.EmailConfirmModel +@model LINGYUN.Abp.Account.Web.Pages.Account.EmailConfirmModel @inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout
diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirm.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirm.cshtml.cs similarity index 94% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirm.cshtml.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirm.cshtml.cs index 8b9257684..78324b1a0 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirm.cshtml.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirm.cshtml.cs @@ -1,74 +1,74 @@ -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.AuthServer.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 - }); - } - } -} +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 LINGYUN.Abp.Account.Web.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.AuthServer/Pages/Account/EmailConfirmConfirmation.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirmConfirmation.cshtml similarity index 83% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirmConfirmation.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirmConfirmation.cshtml index 17c6d33e1..cc9f87815 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirmConfirmation.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirmConfirmation.cshtml @@ -1,13 +1,13 @@ -@page -@model LY.MicroService.AuthServer.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"] -
-
+@page +@model LINGYUN.Abp.Account.Web.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.AuthServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirmConfirmation.cshtml.cs similarity index 88% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirmConfirmation.cshtml.cs index f6dfe0f8d..334a7d8fe 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirmConfirmation.cshtml.cs @@ -1,23 +1,23 @@ -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using System.Threading.Tasks; -using Volo.Abp.Account.Web.Pages.Account; - -namespace LY.MicroService.AuthServer.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(); - } -} +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp.Account.Web.Pages.Account; + +namespace LINGYUN.Abp.Account.Web.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.AuthServer/Pages/Account/SendCode.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendCode.cshtml similarity index 94% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendCode.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendCode.cshtml index ba2c014bc..86c228904 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendCode.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendCode.cshtml @@ -1,7 +1,7 @@ @page @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Account.Localization -@model LY.MicroService.AuthServer.Pages.Account.SendCodeModel +@model LINGYUN.Abp.Account.Web.Pages.Account.SendCodeModel @inject IHtmlLocalizer L
diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendCode.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendCode.cshtml.cs similarity index 96% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendCode.cshtml.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendCode.cshtml.cs index 6c748df76..2bb13dd6d 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendCode.cshtml.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendCode.cshtml.cs @@ -1,128 +1,128 @@ -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.AuthServer.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; } - } -} +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 LINGYUN.Abp.Account.Web.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.AuthServer/Pages/Account/SendEmailConfirm.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendEmailConfirm.cshtml similarity index 89% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendEmailConfirm.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendEmailConfirm.cshtml index a111160f8..018dbb60c 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendEmailConfirm.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendEmailConfirm.cshtml @@ -2,7 +2,7 @@ @inject IHtmlLocalizer L @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Account.Localization -@model LY.MicroService.AuthServer.Pages.Account.SendEmailConfirmModel +@model LINGYUN.Abp.Account.Web.Pages.Account.SendEmailConfirmModel @inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout
diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendEmailConfirm.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendEmailConfirm.cshtml.cs similarity index 90% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendEmailConfirm.cshtml.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendEmailConfirm.cshtml.cs index 54e2f699e..871fc5e95 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendEmailConfirm.cshtml.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendEmailConfirm.cshtml.cs @@ -1,75 +1,73 @@ -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.AuthServer.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 - }); - } - } -} +using Microsoft.AspNetCore.Mvc; +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 LINGYUN.Abp.Account.Web.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/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/UseRecoveryCode.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/UseRecoveryCode.cshtml new file mode 100644 index 000000000..1e86bdc0e --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/UseRecoveryCode.cshtml @@ -0,0 +1,4 @@ +@page +@model LINGYUN.Abp.Account.Web.Pages.Account.UseRecoveryCodeModel +@{ +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/UseRecoveryCode.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/UseRecoveryCode.cshtml.cs new file mode 100644 index 000000000..daf972526 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/UseRecoveryCode.cshtml.cs @@ -0,0 +1,11 @@ +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace LINGYUN.Abp.Account.Web.Pages.Account +{ + public class UseRecoveryCodeModel : PageModel + { + public void OnGet() + { + } + } +} diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyAuthenticatorCode.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyAuthenticatorCode.cshtml similarity index 93% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyAuthenticatorCode.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyAuthenticatorCode.cshtml index f149d3d6c..c2990e066 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyAuthenticatorCode.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyAuthenticatorCode.cshtml @@ -1,7 +1,7 @@ @page @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Account.Localization -@model LY.MicroService.AuthServer.Pages.Account.VerifyAuthenticatorCodeModel +@model LINGYUN.Abp.Account.Web.Pages.Account.VerifyAuthenticatorCodeModel @inject IHtmlLocalizer L
diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyAuthenticatorCode.cshtml.cs similarity index 97% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyAuthenticatorCode.cshtml.cs index 0742c5c0d..5704b5923 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyAuthenticatorCode.cshtml.cs @@ -4,7 +4,7 @@ using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Volo.Abp.Account.Web.Pages.Account; -namespace LY.MicroService.AuthServer.Pages.Account +namespace LINGYUN.Abp.Account.Web.Pages.Account { public class VerifyAuthenticatorCodeModel : AccountPageModel { diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyCode.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyCode.cshtml similarity index 95% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyCode.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyCode.cshtml index 76eb753d5..1de054f64 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyCode.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyCode.cshtml @@ -2,7 +2,7 @@ @inject IHtmlLocalizer L @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Account.Localization -@model LY.MicroService.AuthServer.Pages.Account.VerifyCodeModel +@model LINGYUN.Abp.Account.Web.Pages.Account.VerifyCodeModel
diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyCode.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyCode.cshtml.cs similarity index 97% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyCode.cshtml.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyCode.cshtml.cs index 0d4881dbc..13a63c7be 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyCode.cshtml.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyCode.cshtml.cs @@ -1,4 +1,3 @@ -using LINGYUN.Abp.Identity.Session; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using System.ComponentModel.DataAnnotations; @@ -7,7 +6,7 @@ using Volo.Abp.Account.Localization; using Volo.Abp.Account.Web.Pages.Account; using Volo.Abp.Identity; -namespace LY.MicroService.AuthServer.Pages.Account +namespace LINGYUN.Abp.Account.Web.Pages.Account { public class VerifyCodeModel : AccountPageModel { diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/_ViewImports.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/ProfileManagement/SessionManagementPageContributor.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/ProfileManagement/SessionManagementPageContributor.cs new file mode 100644 index 000000000..b653d8bf9 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/ProfileManagement/SessionManagementPageContributor.cs @@ -0,0 +1,53 @@ +using LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Authenticator; +using LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.SecurityLog; +using LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Session; +using LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.TwoFactor; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using System.Threading.Tasks; +using Volo.Abp.Account.Localization; +using Volo.Abp.Account.Web.ProfileManagement; + +namespace LINGYUN.Abp.Account.Web.ProfileManagement; + +public class SessionManagementPageContributor : IProfileManagementPageContributor +{ + public virtual Task ConfigureAsync(ProfileManagementPageCreationContext context) + { + var l = context.ServiceProvider.GetRequiredService>(); + + context.Groups.Add( + new ProfileManagementPageGroup( + "LINGYUN.Abp.Account.Session", + l["ProfileTab:Session"], + typeof(AccountProfileSessionManagementGroupViewComponent) + ) + ); + + context.Groups.Add( + new ProfileManagementPageGroup( + "LINGYUN.Abp.Account.TwoFactor", + l["ProfileTab:TwoFactor"], + typeof(AccountProfileTwoFactorManagementGroupViewComponent) + ) + ); + + context.Groups.Add( + new ProfileManagementPageGroup( + "LINGYUN.Abp.Account.SecurityLog", + l["ProfileTab:SecurityLog"], + typeof(AccountProfileSecurityLogManagementGroupViewComponent) + ) + ); + + context.Groups.Add( + new ProfileManagementPageGroup( + "LINGYUN.Abp.Account.Authenticator", + l["ProfileTab:Authenticator"], + typeof(AccountProfileAuthenticatorManagementGroupViewComponent) + ) + ); + + return Task.CompletedTask; + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Properties/launchSettings.json b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Properties/launchSettings.json new file mode 100644 index 000000000..c3fbbfa10 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "LINGYUN.Abp.Account.Web": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:51246;http://localhost:51247" + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/wwwroot/client-proxies/account-proxy.js b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/wwwroot/client-proxies/account-proxy.js new file mode 100644 index 000000000..7e3210226 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/wwwroot/client-proxies/account-proxy.js @@ -0,0 +1,329 @@ +/* This file is automatically generated by ABP framework to use MVC Controllers from javascript. */ + + +// module account + +(function(){ + + // controller labp.account.account + + (function(){ + + abp.utils.createNamespace(window, 'labp.account.account'); + + labp.account.account.register = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/wechat/register', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.account.resetPassword = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/phone/reset-password', + type: 'PUT', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.account.sendPhoneSigninCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/phone/send-signin-code', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.account.sendEmailSigninCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/email/send-signin-code', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.account.sendPhoneRegisterCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/phone/send-register-code', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.account.sendPhoneResetPasswordCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/phone/send-password-reset-code', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.account.getTwoFactorProviders = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/two-factor-providers' + abp.utils.buildQueryString([{ name: 'userId', value: input.userId }]) + '', + type: 'GET' + }, ajaxParams)); + }; + + })(); + + // controller labp.account.myClaim + + (function(){ + + abp.utils.createNamespace(window, 'labp.account.myClaim'); + + labp.account.myClaim.changeAvatar = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-claim/change-avatar', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myClaim.getState = function(claimType, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-claim/state/' + claimType + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.account.myClaim.reset = function(claimType, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-claim/reset/' + claimType + '', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + })(); + + // controller labp.account.myProfile + + (function(){ + + abp.utils.createNamespace(window, 'labp.account.myProfile'); + + labp.account.myProfile.getSessions = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/sessions' + abp.utils.buildQueryString([{ name: 'device', value: input.device }, { name: 'clientId', value: input.clientId }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.account.myProfile.revokeSession = function(sessionId, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/sessions/' + sessionId + '/revoke', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + labp.account.myProfile.getTwoFactorEnabled = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/two-factor', + type: 'GET' + }, ajaxParams)); + }; + + labp.account.myProfile.changeTwoFactorEnabled = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/change-two-factor', + type: 'PUT', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myProfile.sendChangePhoneNumberCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/send-phone-number-change-code', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myProfile.changePhoneNumber = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/change-phone-number', + type: 'PUT', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myProfile.sendEmailConfirmLink = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/send-email-confirm-link', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myProfile.confirmEmail = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/confirm-email', + type: 'PUT', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myProfile.getAuthenticator = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/authenticator', + type: 'GET' + }, ajaxParams)); + }; + + labp.account.myProfile.verifyAuthenticatorCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/verify-authenticator-code', + type: 'POST', + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myProfile.resetAuthenticator = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/reset-authenticator', + type: 'POST', + dataType: null + }, ajaxParams)); + }; + + })(); + + // controller labp.account.mySecurityLog + + (function(){ + + abp.utils.createNamespace(window, 'labp.account.mySecurityLog'); + + labp.account.mySecurityLog['delete'] = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/security-logs/' + id + '', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + labp.account.mySecurityLog.get = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/security-logs/' + id + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.account.mySecurityLog.getList = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/security-logs' + 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: '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)); + }; + + })(); + + // controller volo.abp.account.account + + (function(){ + + abp.utils.createNamespace(window, 'volo.abp.account.account'); + + volo.abp.account.account.register = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/register', + type: 'POST', + data: JSON.stringify(input) + }, ajaxParams)); + }; + + volo.abp.account.account.sendPasswordResetCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/send-password-reset-code', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + volo.abp.account.account.verifyPasswordResetToken = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/verify-password-reset-token', + type: 'POST', + data: JSON.stringify(input) + }, ajaxParams)); + }; + + volo.abp.account.account.resetPassword = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/reset-password', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + })(); + + // controller volo.abp.account.dynamicClaims + + (function(){ + + abp.utils.createNamespace(window, 'volo.abp.account.dynamicClaims'); + + volo.abp.account.dynamicClaims.refresh = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/dynamic-claims/refresh', + type: 'POST', + dataType: null + }, ajaxParams)); + }; + + })(); + + // controller volo.abp.account.profile + + (function(){ + + abp.utils.createNamespace(window, 'volo.abp.account.profile'); + + volo.abp.account.profile.get = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile', + type: 'GET' + }, ajaxParams)); + }; + + volo.abp.account.profile.update = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile', + type: 'PUT', + data: JSON.stringify(input) + }, ajaxParams)); + }; + + volo.abp.account.profile.changePassword = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/change-password', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + })(); + +})(); + + diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/AbpGdprUserMenuContributor.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/AbpGdprUserMenuContributor.cs new file mode 100644 index 000000000..7fddbefae --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/AbpGdprUserMenuContributor.cs @@ -0,0 +1,29 @@ +using LINGYUN.Abp.Gdpr.Localization; +using System.Threading.Tasks; +using Volo.Abp.UI.Navigation; + +namespace LINGYUN.Abp.Gdpr.Web; + +public class AbpGdprUserMenuContributor : IMenuContributor +{ + public virtual Task ConfigureMenuAsync(MenuConfigurationContext context) + { + if (context.Menu.Name != StandardMenus.User) + { + return Task.CompletedTask; + } + + + var gdprResource = context.GetLocalizer(); + + context.Menu.AddItem( + new ApplicationMenuItem( + "Account.Delete", + gdprResource["DeletePersonalAccount"], + url: "~/Account/Delete", + icon: "fa fa-remove", + order: int.MaxValue - 999)); + + return Task.CompletedTask; + } +} diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/AbpGdprWebModule.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/AbpGdprWebModule.cs new file mode 100644 index 000000000..dad0afe7b --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/AbpGdprWebModule.cs @@ -0,0 +1,88 @@ +using LINGYUN.Abp.Gdpr.Localization; +using LINGYUN.Abp.Gdpr.Web.Pages.Account; +using LINGYUN.Abp.Gdpr.Web.Pages.Account.Components.ProfileManagementGroup.Gdpr; +using LINGYUN.Abp.Gdpr.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.AutoMapper; +using Volo.Abp.Http.ProxyScripting.Generators.JQuery; +using Volo.Abp.Modularity; +using Volo.Abp.UI.Navigation; +using Volo.Abp.VirtualFileSystem; + +namespace LINGYUN.Abp.Gdpr.Web; + +[DependsOn( + typeof(AbpAccountWebModule), + typeof(AbpGdprApplicationContractsModule))] +public class AbpGdprWebModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + context.Services.PreConfigure(options => + { + options.AddAssemblyResource(typeof(GdprResource), typeof(AbpGdprWebModule).Assembly); + }); + + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpGdprWebModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.MenuContributors.Add(new AbpGdprUserMenuContributor()); + }); + + ConfigureProfileManagementPage(); + + context.Services.AddAutoMapperObjectMapper(); + Configure(options => + { + options.AddMaps(validate: true); + }); + + Configure(options => + { + options.DisableModule(GdprRemoteServiceConsts.ModuleName); + }); + } + + private void ConfigureProfileManagementPage() + { + Configure(options => + { + options.Contributors.Add(new GdprManagementPageContributor()); + }); + + Configure(options => + { + options.ScriptBundles + .Configure(typeof(ManageModel).FullName, + configuration => + { + configuration.AddFiles("/client-proxies/gdpr-proxy.js"); + configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.js"); + }); + options.ScriptBundles + .Configure(typeof(DeleteModel).FullName, + configuration => + { + configuration.AddFiles("/client-proxies/gdpr-proxy.js"); + configuration.AddFiles("/Pages/Account/Delete.js"); + }); + }); + } +} diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/FodyWeavers.xml b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/FodyWeavers.xsd b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + '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/modules/gdpr/LINGYUN.Abp.Gdpr.Web/LINGYUN.Abp.Gdpr.Web.csproj b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/LINGYUN.Abp.Gdpr.Web.csproj new file mode 100644 index 000000000..a8e8aa05c --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/LINGYUN.Abp.Gdpr.Web.csproj @@ -0,0 +1,39 @@ + + + + + + + net9.0 + LINGYUN.Abp.Gdpr.Web + LINGYUN.Abp.Gdpr.Web + false + false + false + true + LINGYUN.Abp.Gdpr.Web + true + Library + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/AccountProfileGdprManagementGroupViewComponent.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/AccountProfileGdprManagementGroupViewComponent.cs new file mode 100644 index 000000000..7eff622a1 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/AccountProfileGdprManagementGroupViewComponent.cs @@ -0,0 +1,19 @@ +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.Gdpr.Web.Pages.Account.Components.ProfileManagementGroup.Gdpr; + +public class AccountProfileGdprManagementGroupViewComponent : AbpViewComponent +{ + public AccountProfileGdprManagementGroupViewComponent() + { + } + + public async virtual Task InvokeAsync() + { + await Task.CompletedTask; + + return View("~/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.cshtml"); + } +} diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.cshtml b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.cshtml new file mode 100644 index 000000000..20903ec68 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.cshtml @@ -0,0 +1,31 @@ +@using LINGYUN.Abp.Gdpr.Web.Pages.Account.Components.ProfileManagementGroup.Gdpr +@using Microsoft.AspNetCore.Mvc.Localization +@using LINGYUN.Abp.Gdpr.Localization +@using Volo.Abp.Localization + +@inject IHtmlLocalizer L + + + + + + @L["PersonalData"] + + + + + + + + + + + + + diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.js b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.js new file mode 100644 index 000000000..0266bf89c --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.js @@ -0,0 +1,108 @@ +$(function () { + var ul = abp.localization.getResource('AbpUi'); + var gl = abp.localization.getResource('AbpGdpr'); + + var dataTable = $('#PersonalDataTable').DataTable( + abp.libs.datatables.normalizeConfiguration({ + serverSide: true, + paging: true, + searching: false, + scrollX: true, + ajax: abp.libs.datatables.createAjax(labp.gdpr.gdprRequest.getList), + columnDefs: [ + { + title: ul('Actions'), + rowAction: { + items: + [ + { + text: gl('Download'), + visible: function (data) { + const now = luxon.DateTime.now(); + const readyTime = luxon.DateTime.fromISO(data.readyTime, { + locale: abp.localization.currentCulture.name + }); + return now >= readyTime; + }, + action: function (data) { + var downloadWindow = window.open( + abp.appPath + 'api/gdpr/requests/personal-data/download/' + data.record.id + '', + "_blank" + ); + downloadWindow.focus(); + } + }, + { + text: ul('Delete'), + confirmMessage: function () { + return ul('ItemWillBeDeletedMessage'); + }, + action: function (data) { + labp.gdpr.gdprRequest + .delete(data.record.id) + .then(function () { + abp.notify.info( + ul('DeletedSuccessfully') + ); + dataTable.ajax.reload(); + }); + } + } + ] + } + }, + { + title: gl('DisplayName:ReadyTime'), + data: "readyTime", + render: function (data) { + return luxon + .DateTime + .fromISO(data, { + locale: abp.localization.currentCulture.name + }).toLocaleString(luxon.DateTime.DATETIME_FULL_WITH_SECONDS); + } + }, + { + title: gl('DisplayName:CreationTime'), + data: "creationTime", + render: function (data) { + return luxon + .DateTime + .fromISO(data, { + locale: abp.localization.currentCulture.name + }).toLocaleString(luxon.DateTime.DATETIME_FULL_WITH_SECONDS); + } + }] + }) + ); + + $('#RequestPersonalDataButton').click(function (e) { + e.preventDefault(); + labp.gdpr.gdprRequest + .preparePersonalData() + .then(function () { + abp.notify.success( + gl('PersonalDataPrepareRequestReceived') + ); + dataTable.ajax.reload(); + }); + }); + $('#DeletePersonalDataButton').click(function (e) { + e.preventDefault(); + abp.message.confirm( + gl('DeletePersonalDataWarning'), + function (confirm) { + if (confirm) { + labp.gdpr.gdprRequest + .deletePersonalData() + .then(function () { + abp.notify.success( + gl('PersonalDataDeleteRequestReceived') + ); + dataTable.ajax.reload(); + }); + } + } + ); + }); +}); diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.cshtml b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.cshtml new file mode 100644 index 000000000..3f7807f34 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.cshtml @@ -0,0 +1,38 @@ +@page +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.Account.Localization +@using LINGYUN.Abp.Gdpr.Localization +@using LINGYUN.Abp.Gdpr.Web.Pages.Account +@using Volo.Abp.AspNetCore.Mvc.UI.Theming +@inject IThemeManager ThemeManager +@inject IHtmlLocalizer L +@inject IHtmlLocalizer AL +@model DeleteModel +@{ + Layout = ThemeManager.CurrentTheme.GetApplicationLayout(); +} +@section scripts { + +} + +@if (!Model.ReturnUrl.IsNullOrWhiteSpace()) +{ + + + + @AL["ReturnToApplication"] + + + +} + +
+ + + + + +
diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.cshtml.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.cshtml.cs new file mode 100644 index 000000000..3b6dd610a --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.cshtml.cs @@ -0,0 +1,38 @@ +using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Threading.Tasks; +using Volo.Abp.Account.Web.Pages.Account; + +namespace LINGYUN.Abp.Gdpr.Web.Pages.Account; + +public class DeleteModel : AccountPageModel +{ + [HiddenInput] + [BindProperty(SupportsGet = true)] + public string ReturnUrl { get; set; } + + public DeleteModel() + { + } + + public virtual async Task OnGetAsync() + { + if (ReturnUrl != null) + { + if (!Url.IsLocalUrl(ReturnUrl) && + !ReturnUrl.StartsWith(UriHelper.BuildAbsolute(Request.Scheme, Request.Host, Request.PathBase).RemovePostFix("/")) && + !await AppUrlProvider.IsRedirectAllowedUrlAsync(ReturnUrl)) + { + ReturnUrl = null; + } + } + + return Page(); + } + + public virtual Task OnPostAsync() + { + return Task.FromResult(Page()); + } +} diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.js b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.js new file mode 100644 index 000000000..85697d5f9 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.js @@ -0,0 +1,22 @@ +$(function () { + var l = abp.localization.getResource('AbpGdpr'); + + $('#DeletePersonalAccountButton').click(function (e) { + e.preventDefault(); + abp.message.confirm( + l('DeletePersonalAccountWarning'), + function (confirm) { + if (confirm) { + labp.gdpr.gdprRequest + .deletePersonalAccount() + .then(function () { + abp.notify.success( + l('PersonalAccountDeleteRequestReceived') + ); + $(location).attr('href', '/Account/Login'); + }); + } + } + ); + }); +}); diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/_ViewImports.cshtml b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/ProfileManagement/GdprManagementPageContributor.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/ProfileManagement/GdprManagementPageContributor.cs new file mode 100644 index 000000000..1e843cde9 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/ProfileManagement/GdprManagementPageContributor.cs @@ -0,0 +1,26 @@ +using LINGYUN.Abp.Gdpr.Localization; +using LINGYUN.Abp.Gdpr.Web.Pages.Account.Components.ProfileManagementGroup.Gdpr; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using System.Threading.Tasks; +using Volo.Abp.Account.Web.ProfileManagement; + +namespace LINGYUN.Abp.Gdpr.Web.ProfileManagement; + +public class GdprManagementPageContributor : IProfileManagementPageContributor +{ + public virtual Task ConfigureAsync(ProfileManagementPageCreationContext context) + { + var l = context.ServiceProvider.GetRequiredService>(); + + context.Groups.Add( + new ProfileManagementPageGroup( + "LINGYUN.Abp.Account.Gdpr", + l["PersonalData"], + typeof(AccountProfileGdprManagementGroupViewComponent) + ) + ); + + return Task.CompletedTask; + } +} diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Properties/launchSettings.json b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Properties/launchSettings.json new file mode 100644 index 000000000..aaeb392a6 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "LINGYUN.Abp.Gdpr.Web": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:64471;http://localhost:64472" + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/wwwroot/client-proxies/gdpr-proxy.js b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/wwwroot/client-proxies/gdpr-proxy.js new file mode 100644 index 000000000..7ca75c2e5 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/wwwroot/client-proxies/gdpr-proxy.js @@ -0,0 +1,71 @@ +/* This file is automatically generated by ABP framework to use MVC Controllers from javascript. */ + + +// module gdpr + +(function(){ + + // controller labp.gdpr.gdprRequest + + (function(){ + + abp.utils.createNamespace(window, 'labp.gdpr.gdprRequest'); + + labp.gdpr.gdprRequest['delete'] = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests/' + id + '', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + labp.gdpr.gdprRequest.deletePersonalAccount = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests/personal-account', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + labp.gdpr.gdprRequest.deletePersonalData = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests/personal-data', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + labp.gdpr.gdprRequest.get = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests/' + id + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.gdpr.gdprRequest.getList = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests' + abp.utils.buildQueryString([{ name: 'creationTime', value: input.creationTime }, { name: 'readyTime', value: input.readyTime }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.gdpr.gdprRequest.downloadPersonalData = function(requestId, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests/personal-data/download/' + requestId + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.gdpr.gdprRequest.preparePersonalData = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests/personal-data/prepare', + type: 'POST', + dataType: null + }, ajaxParams)); + }; + + })(); + +})(); + + diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/LINGYUN/Abp/IdentityServer/AbpIdentityServerSmsValidatorModule.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/LINGYUN/Abp/IdentityServer/AbpIdentityServerSmsModule.cs similarity index 87% rename from aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/LINGYUN/Abp/IdentityServer/AbpIdentityServerSmsValidatorModule.cs rename to aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/LINGYUN/Abp/IdentityServer/AbpIdentityServerSmsModule.cs index 7fb747160..148c94a96 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/LINGYUN/Abp/IdentityServer/AbpIdentityServerSmsValidatorModule.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/LINGYUN/Abp/IdentityServer/AbpIdentityServerSmsModule.cs @@ -9,7 +9,7 @@ using Volo.Abp.VirtualFileSystem; namespace LINGYUN.Abp.IdentityServer; [DependsOn(typeof(AbpIdentityServerDomainModule))] -public class AbpIdentityServerSmsValidatorModule : AbpModule +public class AbpIdentityServerSmsModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { @@ -23,7 +23,7 @@ public class AbpIdentityServerSmsValidatorModule : AbpModule { Configure(options => { - options.FileSets.AddEmbedded(); + options.FileSets.AddEmbedded(); }); Configure(options => diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/README.md b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/README.md index e8c684b9b..3b133f8c5 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/README.md +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/README.md @@ -24,7 +24,7 @@ IdentityServer短信验证模块,提供基于手机号和短信验证码的身 ```csharp [DependsOn( - typeof(AbpIdentityServerSmsValidatorModule) + typeof(AbpIdentityServerSmsModule) )] public class YourModule : AbpModule { diff --git a/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.Configure.cs b/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.Configure.cs index ff1ea9a9c..199d7f641 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.Configure.cs @@ -1,4 +1,6 @@ using DotNetCore.CAP; +using LINGYUN.Abp.Account.Web; +using LINGYUN.Abp.Account.Web.OpenIddict; using LINGYUN.Abp.Localization.CultureMap; using LINGYUN.Abp.OpenIddict.AspNetCore.Session; using LINGYUN.Abp.OpenIddict.LinkUser; @@ -23,6 +25,7 @@ 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; @@ -48,6 +51,7 @@ using Volo.Abp.Localization; using Volo.Abp.MultiTenancy; using Volo.Abp.OpenIddict; using Volo.Abp.Security.Claims; +using Volo.Abp.SettingManagement; using Volo.Abp.Threading; using Volo.Abp.Timing; using Volo.Abp.UI.Navigation.Urls; @@ -225,6 +229,14 @@ public partial class AuthServerModule }); } + private void ConfigureSettingManagement() + { + Configure(options => + { + options.IsDynamicSettingStoreEnabled = true; + }); + } + private void ConfigureJsonSerializer(IConfiguration configuration) { // 统一时间日期格式 diff --git a/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.cs b/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.cs index d430685df..39e3158b7 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.cs +++ b/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.cs @@ -1,47 +1,41 @@ using LINGYUN.Abp.Account; +using LINGYUN.Abp.Account.Web.OpenIddict; using LINGYUN.Abp.AspNetCore.HttpOverrides; using LINGYUN.Abp.AspNetCore.Mvc.Wrapper; using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.Authentication.QQ; using LINGYUN.Abp.Authentication.WeChat; using LINGYUN.Abp.Data.DbMigrator; +using LINGYUN.Abp.Emailing.Platform; using LINGYUN.Abp.EventBus.CAP; +using LINGYUN.Abp.Exporter.MiniExcel; +using LINGYUN.Abp.Gdpr; +using LINGYUN.Abp.Gdpr.Web; using LINGYUN.Abp.Identity.AspNetCore.Session; -using LINGYUN.Abp.Identity.EntityFrameworkCore; using LINGYUN.Abp.Identity.OrganizaztionUnits; using LINGYUN.Abp.Identity.Session.AspNetCore; using LINGYUN.Abp.Localization.CultureMap; -using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; using LINGYUN.Abp.OpenIddict.AspNetCore.Session; using LINGYUN.Abp.OpenIddict.LinkUser; using LINGYUN.Abp.OpenIddict.Portal; using LINGYUN.Abp.OpenIddict.Sms; using LINGYUN.Abp.OpenIddict.WeChat; using LINGYUN.Abp.OpenIddict.WeChat.Work; -using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; -using LINGYUN.Abp.Sms.Aliyun; -using LINGYUN.Platform.EntityFrameworkCore; +using LINGYUN.Abp.Sms.Platform; using LY.MicroService.AuthServer.EntityFrameworkCore; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Volo.Abp; -using Volo.Abp.Account.Web; using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite; using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.Autofac; using Volo.Abp.Caching.StackExchangeRedis; -using Volo.Abp.FeatureManagement.EntityFrameworkCore; -using Volo.Abp.Identity; -using Volo.Abp.MailKit; using Volo.Abp.Modularity; -using Volo.Abp.OpenIddict.EntityFrameworkCore; -using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.PermissionManagement.Identity; -using Volo.Abp.SettingManagement.EntityFrameworkCore; namespace LY.MicroService.AuthServer; @@ -49,16 +43,18 @@ namespace LY.MicroService.AuthServer; typeof(AbpSerilogEnrichersApplicationModule), typeof(AbpSerilogEnrichersUniqueIdModule), typeof(AbpAspNetCoreSerilogModule), - typeof(AbpAccountWebOpenIddictModule), typeof(AbpAccountApplicationModule), + typeof(AbpAccountHttpApiModule), + typeof(AbpAccountWebOpenIddictModule), + typeof(AbpGdprApplicationModule), + typeof(AbpGdprHttpApiModule), + typeof(AbpGdprWebModule), typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule), typeof(AbpAutofacModule), typeof(AbpCachingStackExchangeRedisModule), - typeof(AbpIdentityEntityFrameworkCoreModule), - typeof(AbpIdentityApplicationModule), typeof(AbpIdentityAspNetCoreSessionModule), typeof(AbpOpenIddictAspNetCoreSessionModule), - typeof(AbpOpenIddictEntityFrameworkCoreModule), + typeof(AbpIdentitySessionAspNetCoreModule), typeof(AbpOpenIddictSmsModule), typeof(AbpOpenIddictWeChatModule), typeof(AbpOpenIddictLinkUserModule), @@ -67,22 +63,17 @@ namespace LY.MicroService.AuthServer; typeof(AbpAuthenticationQQModule), typeof(AbpAuthenticationWeChatModule), typeof(AbpIdentityOrganizaztionUnitsModule), - typeof(PlatformEntityFrameworkCoreModule), - typeof(AbpLocalizationManagementEntityFrameworkCoreModule), typeof(AbpPermissionManagementDomainIdentityModule), - typeof(AbpPermissionManagementEntityFrameworkCoreModule), - typeof(AbpSettingManagementEntityFrameworkCoreModule), - typeof(AbpFeatureManagementEntityFrameworkCoreModule), - typeof(AbpSaasEntityFrameworkCoreModule), typeof(AuthServerMigrationsEntityFrameworkCoreModule), typeof(AbpDataDbMigratorModule), typeof(AbpAuditLoggingElasticsearchModule), // 放在 AbpIdentity 模块之后,避免被覆盖 typeof(AbpLocalizationCultureMapModule), typeof(AbpAspNetCoreMvcWrapperModule), typeof(AbpAspNetCoreHttpOverridesModule), - typeof(AbpMailKitModule), - typeof(AbpCAPEventBusModule), - typeof(AbpAliyunSmsModule) + typeof(AbpExporterMiniExcelModule), + typeof(AbpEmailingPlatformModule), + typeof(AbpSmsPlatformModule), + typeof(AbpCAPEventBusModule) )] public partial class AuthServerModule : AbpModule { @@ -110,6 +101,7 @@ public partial class AuthServerModule : AbpModule ConfigureIdentity(configuration); ConfigureVirtualFileSystem(); ConfigureFeatureManagement(); + ConfigureSettingManagement(); ConfigureLocalization(); ConfigureDataSeeder(); ConfigureUrls(configuration); diff --git a/aspnet-core/services/LY.MicroService.AuthServer/DataSeeder/AuthServerDataSeedContributor.cs b/aspnet-core/services/LY.MicroService.AuthServer/DataSeeder/AuthServerDataSeedContributor.cs index 1f1fdf5ae..4953aa03a 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/DataSeeder/AuthServerDataSeedContributor.cs +++ b/aspnet-core/services/LY.MicroService.AuthServer/DataSeeder/AuthServerDataSeedContributor.cs @@ -2,42 +2,52 @@ using LINGYUN.Abp.OpenIddict.LinkUser; using LINGYUN.Abp.OpenIddict.Sms; using LINGYUN.Abp.OpenIddict.WeChat; -using OpenIddict.Abstractions; +using OpenIddict.Abstractions; using System; -using System.Globalization; +using System.Globalization; using System.Threading.Tasks; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; using Volo.Abp.Guids; using Volo.Abp.Identity; -using Volo.Abp.MultiTenancy; - -namespace LY.MicroService.AuthServer.DataSeeder; - -public class ServerDataSeedContributor : IDataSeedContributor, ITransientDependency -{ - private readonly ICurrentTenant _currentTenant; - private readonly IGuidGenerator _guidGenerator; - private readonly IOpenIddictApplicationManager _applicationManager; - private readonly IOpenIddictScopeManager _scopeManager; - private readonly IIdentityClaimTypeRepository _claimTypeRepository; - - public ServerDataSeedContributor( - ICurrentTenant currentTenant, - IGuidGenerator guidGenerator, - IOpenIddictScopeManager scopeManager, - IOpenIddictApplicationManager applicationManager, - IIdentityClaimTypeRepository identityClaimTypeRepository) - { - _currentTenant = currentTenant; - _guidGenerator = guidGenerator; - _scopeManager = scopeManager; - _applicationManager = applicationManager; - _claimTypeRepository = identityClaimTypeRepository; - } - - public async Task SeedAsync(DataSeedContext context) - { +using Volo.Abp.MultiTenancy; +using Volo.Abp.OpenIddict.Applications; +using Volo.Abp.OpenIddict.Scopes; + +namespace LY.MicroService.AuthServer.DataSeeder; + +public class ServerDataSeedContributor : IDataSeedContributor, ITransientDependency +{ + private readonly ICurrentTenant _currentTenant; + private readonly IGuidGenerator _guidGenerator; + private readonly IOpenIddictApplicationManager _applicationManager; + private readonly IOpenIddictApplicationRepository _applicationRepository; + + private readonly IOpenIddictScopeManager _scopeManager; + private readonly IOpenIddictScopeRepository _scopeRepository; + + private readonly IIdentityClaimTypeRepository _claimTypeRepository; + + public ServerDataSeedContributor( + ICurrentTenant currentTenant, + IGuidGenerator guidGenerator, + IOpenIddictScopeManager scopeManager, + IOpenIddictScopeRepository scopeRepository, + IOpenIddictApplicationManager applicationManager, + IOpenIddictApplicationRepository applicationRepository, + IIdentityClaimTypeRepository identityClaimTypeRepository) + { + _currentTenant = currentTenant; + _guidGenerator = guidGenerator; + _scopeManager = scopeManager; + _scopeRepository = scopeRepository; + _applicationManager = applicationManager; + _applicationRepository = applicationRepository; + _claimTypeRepository = identityClaimTypeRepository; + } + + public async Task SeedAsync(DataSeedContext context) + { if (!await _claimTypeRepository.AnyAsync(IdentityConsts.ClaimType.Avatar.Name)) { await _claimTypeRepository.InsertAsync( @@ -47,129 +57,129 @@ public class ServerDataSeedContributor : IDataSeedContributor, ITransientDepende isStatic: true ) ); - } - - if (await _scopeManager.FindByNameAsync("lingyun-abp-application") == null) - { - await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor() - { - Name = "lingyun-abp-application", - DisplayName = "lingyun-abp-application", - DisplayNames = - { - [CultureInfo.GetCultureInfo("en")] = "abp application", - [CultureInfo.GetCultureInfo("zh-Hans")] = "abp application", - }, - Resources = - { - "lingyun-abp-application" - } - }); - } - - if (await _applicationManager.FindByClientIdAsync("vue-admin-client") == null) - { - await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor - { - ClientId = "vue-admin-client", - ClientSecret = "1q2w3e*", - ConsentType = OpenIddictConstants.ConsentTypes.Explicit, - DisplayName = "Vue Vben Admin Abp Application", - PostLogoutRedirectUris = - { - new Uri("https://127.0.0.1:3100/signout-callback-oidc"), - new Uri("http://127.0.0.1:3100") - }, - RedirectUris = - { - new Uri("https://127.0.0.1:3100/signin-oidc"), - new Uri("http://127.0.0.1:3100") - }, - Permissions = - { - OpenIddictConstants.Permissions.Endpoints.Authorization, - OpenIddictConstants.Permissions.Endpoints.Token, - OpenIddictConstants.Permissions.Endpoints.Device, - OpenIddictConstants.Permissions.Endpoints.Introspection, - OpenIddictConstants.Permissions.Endpoints.Revocation, - OpenIddictConstants.Permissions.Endpoints.Logout, - - OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, - OpenIddictConstants.Permissions.GrantTypes.Implicit, - OpenIddictConstants.Permissions.GrantTypes.Password, - OpenIddictConstants.Permissions.GrantTypes.RefreshToken, - OpenIddictConstants.Permissions.GrantTypes.DeviceCode, - OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, - OpenIddictConstants.Permissions.Prefixes.GrantType + WeChatTokenExtensionGrantConsts.OfficialGrantType, - OpenIddictConstants.Permissions.Prefixes.GrantType + WeChatTokenExtensionGrantConsts.MiniProgramGrantType, - OpenIddictConstants.Permissions.Prefixes.GrantType + SmsTokenExtensionGrantConsts.GrantType, - OpenIddictConstants.Permissions.Prefixes.GrantType + LinkUserTokenExtensionGrantConsts.GrantType, - - OpenIddictConstants.Permissions.ResponseTypes.Code, - OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, - OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, - OpenIddictConstants.Permissions.ResponseTypes.CodeToken, - OpenIddictConstants.Permissions.ResponseTypes.IdToken, - OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, - OpenIddictConstants.Permissions.ResponseTypes.None, - OpenIddictConstants.Permissions.ResponseTypes.Token, - - OpenIddictConstants.Permissions.Scopes.Roles, - OpenIddictConstants.Permissions.Scopes.Profile, - OpenIddictConstants.Permissions.Scopes.Email, - OpenIddictConstants.Permissions.Scopes.Address, - OpenIddictConstants.Permissions.Scopes.Phone, - OpenIddictConstants.Permissions.Prefixes.Scope + WeChatTokenExtensionGrantConsts.ProfileKey, - OpenIddictConstants.Permissions.Prefixes.Scope + "lingyun-abp-application" - } - }); - } - - if (await _applicationManager.FindByClientIdAsync("InternalServiceClient") == null) - { - await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor - { - ClientId = "InternalServiceClient", - ClientSecret = "1q2w3e*", - ClientType = OpenIddictConstants.ClientTypes.Confidential, - ConsentType = OpenIddictConstants.ConsentTypes.Explicit, - DisplayName = "Internal Service Client", - PostLogoutRedirectUris = {}, - RedirectUris = {}, - Permissions = - { - OpenIddictConstants.Permissions.Endpoints.Authorization, - OpenIddictConstants.Permissions.Endpoints.Token, - OpenIddictConstants.Permissions.Endpoints.Device, - OpenIddictConstants.Permissions.Endpoints.Introspection, - OpenIddictConstants.Permissions.Endpoints.Revocation, - OpenIddictConstants.Permissions.Endpoints.Logout, - - OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, - OpenIddictConstants.Permissions.GrantTypes.Implicit, - OpenIddictConstants.Permissions.GrantTypes.Password, - OpenIddictConstants.Permissions.GrantTypes.RefreshToken, - OpenIddictConstants.Permissions.GrantTypes.DeviceCode, - OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, - - OpenIddictConstants.Permissions.ResponseTypes.Code, - OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, - OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, - OpenIddictConstants.Permissions.ResponseTypes.CodeToken, - OpenIddictConstants.Permissions.ResponseTypes.IdToken, - OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, - OpenIddictConstants.Permissions.ResponseTypes.None, - OpenIddictConstants.Permissions.ResponseTypes.Token, - - OpenIddictConstants.Permissions.Scopes.Roles, - OpenIddictConstants.Permissions.Scopes.Profile, - OpenIddictConstants.Permissions.Scopes.Email, - OpenIddictConstants.Permissions.Scopes.Address, - OpenIddictConstants.Permissions.Scopes.Phone, - - OpenIddictConstants.Permissions.Prefixes.Scope + "lingyun-abp-application" - } - }); - } - } -} + } + + if (await _scopeRepository.FindByNameAsync("lingyun-abp-application") == null) + { + await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor() + { + Name = "lingyun-abp-application", + DisplayName = "lingyun-abp-application", + DisplayNames = + { + [CultureInfo.GetCultureInfo("en")] = "abp application", + [CultureInfo.GetCultureInfo("zh-Hans")] = "abp application", + }, + Resources = + { + "lingyun-abp-application" + } + }); + } + + if (await _applicationRepository.FindByClientIdAsync("vue-admin-client") == null) + { + await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor + { + ClientId = "vue-admin-client", + ClientSecret = "1q2w3e*", + ConsentType = OpenIddictConstants.ConsentTypes.Explicit, + DisplayName = "Vue Vben Admin Abp Application", + PostLogoutRedirectUris = + { + new Uri("https://127.0.0.1:3100/signout-callback-oidc"), + new Uri("http://127.0.0.1:3100") + }, + RedirectUris = + { + new Uri("https://127.0.0.1:3100/signin-oidc"), + new Uri("http://127.0.0.1:3100") + }, + Permissions = + { + OpenIddictConstants.Permissions.Endpoints.Authorization, + OpenIddictConstants.Permissions.Endpoints.Token, + OpenIddictConstants.Permissions.Endpoints.Device, + OpenIddictConstants.Permissions.Endpoints.Introspection, + OpenIddictConstants.Permissions.Endpoints.Revocation, + OpenIddictConstants.Permissions.Endpoints.Logout, + + OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, + OpenIddictConstants.Permissions.GrantTypes.Implicit, + OpenIddictConstants.Permissions.GrantTypes.Password, + OpenIddictConstants.Permissions.GrantTypes.RefreshToken, + OpenIddictConstants.Permissions.GrantTypes.DeviceCode, + OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, + OpenIddictConstants.Permissions.Prefixes.GrantType + WeChatTokenExtensionGrantConsts.OfficialGrantType, + OpenIddictConstants.Permissions.Prefixes.GrantType + WeChatTokenExtensionGrantConsts.MiniProgramGrantType, + OpenIddictConstants.Permissions.Prefixes.GrantType + SmsTokenExtensionGrantConsts.GrantType, + OpenIddictConstants.Permissions.Prefixes.GrantType + LinkUserTokenExtensionGrantConsts.GrantType, + + OpenIddictConstants.Permissions.ResponseTypes.Code, + OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, + OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, + OpenIddictConstants.Permissions.ResponseTypes.CodeToken, + OpenIddictConstants.Permissions.ResponseTypes.IdToken, + OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, + OpenIddictConstants.Permissions.ResponseTypes.None, + OpenIddictConstants.Permissions.ResponseTypes.Token, + + OpenIddictConstants.Permissions.Scopes.Roles, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Prefixes.Scope + WeChatTokenExtensionGrantConsts.ProfileKey, + OpenIddictConstants.Permissions.Prefixes.Scope + "lingyun-abp-application" + } + }); + } + + if (await _applicationRepository.FindByClientIdAsync("InternalServiceClient") == null) + { + await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor + { + ClientId = "InternalServiceClient", + ClientSecret = "1q2w3e*", + ClientType = OpenIddictConstants.ClientTypes.Confidential, + ConsentType = OpenIddictConstants.ConsentTypes.Explicit, + DisplayName = "Internal Service Client", + PostLogoutRedirectUris = {}, + RedirectUris = {}, + Permissions = + { + OpenIddictConstants.Permissions.Endpoints.Authorization, + OpenIddictConstants.Permissions.Endpoints.Token, + OpenIddictConstants.Permissions.Endpoints.Device, + OpenIddictConstants.Permissions.Endpoints.Introspection, + OpenIddictConstants.Permissions.Endpoints.Revocation, + OpenIddictConstants.Permissions.Endpoints.Logout, + + OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, + OpenIddictConstants.Permissions.GrantTypes.Implicit, + OpenIddictConstants.Permissions.GrantTypes.Password, + OpenIddictConstants.Permissions.GrantTypes.RefreshToken, + OpenIddictConstants.Permissions.GrantTypes.DeviceCode, + OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, + + OpenIddictConstants.Permissions.ResponseTypes.Code, + OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, + OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, + OpenIddictConstants.Permissions.ResponseTypes.CodeToken, + OpenIddictConstants.Permissions.ResponseTypes.IdToken, + OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, + OpenIddictConstants.Permissions.ResponseTypes.None, + OpenIddictConstants.Permissions.ResponseTypes.Token, + + OpenIddictConstants.Permissions.Scopes.Roles, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Phone, + + OpenIddictConstants.Permissions.Prefixes.Scope + "lingyun-abp-application" + } + }); + } + } +} 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 65737ee4a..d9e175fb3 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/LY.MicroService.AuthServer.csproj +++ b/aspnet-core/services/LY.MicroService.AuthServer/LY.MicroService.AuthServer.csproj @@ -1,4 +1,4 @@ - + @@ -44,20 +44,13 @@ runtime; build; native; contentfiles; analyzers; buildtransitive --> - - - - - - - @@ -67,7 +60,7 @@ - + @@ -77,20 +70,23 @@ + + + + + - - - - + + diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/UseRecoveryCode.cshtml b/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/UseRecoveryCode.cshtml deleted file mode 100644 index 8311a8ea5..000000000 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/UseRecoveryCode.cshtml +++ /dev/null @@ -1,4 +0,0 @@ -@page -@model LY.MicroService.AuthServer.Pages.Account.UseRecoveryCodeModel -@{ -} diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/UseRecoveryCode.cshtml.cs b/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/UseRecoveryCode.cshtml.cs deleted file mode 100644 index a66a74b31..000000000 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/UseRecoveryCode.cshtml.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.RazorPages; - -namespace LY.MicroService.AuthServer.Pages.Account -{ - public class UseRecoveryCodeModel : PageModel - { - public void OnGet() - { - } - } -} diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Index.cshtml.cs b/aspnet-core/services/LY.MicroService.AuthServer/Pages/Index.cshtml.cs index 063b7fc9f..7e54f99fd 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Index.cshtml.cs +++ b/aspnet-core/services/LY.MicroService.AuthServer/Pages/Index.cshtml.cs @@ -1,11 +1,10 @@ using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; -namespace LY.MicroService.AuthServer.Pages +namespace LY.MicroService.AuthServer.Pages; + +public class IndexModel : AbpPageModel { - public class IndexModel : AbpPageModel + public void OnGet() { - public void OnGet() - { - } } } \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.AuthServer/appsettings.Development.json b/aspnet-core/services/LY.MicroService.AuthServer/appsettings.Development.json index 5934155fe..bc78dbb5d 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.AuthServer/appsettings.Development.json @@ -6,7 +6,8 @@ "secret": "1q2w3E*", "nodes": "http://127.0.0.1:15000", "name": "AuthServer", - "tag": "AuthServer" + "tag": "AuthServer", + "configCacheEncrypt": true }, "App": { "CorsOrigins": "http://127.0.0.1:3100", @@ -44,16 +45,10 @@ } }, "ConnectionStrings": { - "Default": "Server=127.0.0.1;Database=AuthServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=AuthServer-v70;User Id=root;Password=123456;SslMode=None", - "OpenIddict": "Server=127.0.0.1;Database=AuthServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AppPlatform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None" + "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=AuthServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "CAP": { "EventBus": { @@ -86,6 +81,12 @@ "Configuration": "127.0.0.1,defaultDatabase=10", "InstanceName": "LINGYUN.Abp.Application" }, + "RemoteServices": { + "Platform": { + "BaseUrl": "http://127.0.0.1:30025", + "UseCurrentAccessToken": false + } + }, "AuthServer": { "Authority": "http://127.0.0.1:44385/", "Audience": "lingyun-abp-application", @@ -134,11 +135,11 @@ }, "Serilog": { "MinimumLevel": { - "Default": "Debug", + "Default": "Information", "Override": { "System": "Warning", "Microsoft": "Warning", - "DotNetCore": "Debug" + "DotNetCore": "Information" } }, "WriteTo": [ diff --git a/aspnet-core/services/LY.MicroService.AuthServer/appsettings.json b/aspnet-core/services/LY.MicroService.AuthServer/appsettings.json index 4c8758024..f792656a8 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/appsettings.json +++ b/aspnet-core/services/LY.MicroService.AuthServer/appsettings.json @@ -11,7 +11,6 @@ "DefaultSalt": "sf&5)s3#" }, "Json": { - "OutputDateTimeFormat": "yyyy-MM-dd HH:mm:ss", "InputDateTimeFormats": [ "yyyy-MM-dd HH:mm:ss", "yyyy-MM-ddTHH:mm:ss" @@ -19,7 +18,7 @@ }, "Serilog": { "MinimumLevel": { - "Default": "Debug", + "Default": "Information", "Override": { "System": "Warning", "Microsoft": "Warning", diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.Configure.cs b/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.Configure.cs index be26d0d63..e8082f4b6 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.Configure.cs @@ -1,4 +1,6 @@ using DotNetCore.CAP; +using LINGYUN.Abp.Account.Web; +using LINGYUN.Abp.Account.Web.IdentityServer; using LINGYUN.Abp.Identity.Session; using LINGYUN.Abp.IdentityServer.IdentityResources; using LINGYUN.Abp.Localization.CultureMap; @@ -20,6 +22,7 @@ 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; @@ -47,6 +50,7 @@ using Volo.Abp.Json.SystemTextJson; using Volo.Abp.Localization; using Volo.Abp.MultiTenancy; using Volo.Abp.Security.Claims; +using Volo.Abp.SettingManagement; using Volo.Abp.Threading; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.VirtualFileSystem; @@ -165,6 +169,14 @@ public partial class IdentityServerModule }); } + private void ConfigureSettingManagement() + { + Configure(options => + { + options.IsDynamicSettingStoreEnabled = true; + }); + } + private void ConfigureJsonSerializer(IConfiguration configuration) { // 统一时间日期格式 @@ -272,12 +284,21 @@ public partial class IdentityServerModule options.IsRemoteRefreshEnabled = false; }); } - private void ConfigureVirtualFileSystem() + private void ConfigureVirtualFileSystem(IWebHostEnvironment hostingEnvironment) { Configure(options => { options.FileSets.AddEmbedded("LY.MicroService.IdentityServer"); }); + + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical(hostingEnvironment.ContentRootPath); + options.FileSets.ReplaceEmbeddedByPhysical(hostingEnvironment.ContentRootPath); + }); + } } private void ConfigureMvcUiTheme() diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.cs b/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.cs index b2bcd80e6..3e67e66ee 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.cs +++ b/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.cs @@ -1,48 +1,41 @@ using LINGYUN.Abp.Account; +using LINGYUN.Abp.Account.Web.IdentityServer; using LINGYUN.Abp.AspNetCore.HttpOverrides; using LINGYUN.Abp.AspNetCore.Mvc.Wrapper; using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.Authentication.QQ; using LINGYUN.Abp.Authentication.WeChat; using LINGYUN.Abp.Data.DbMigrator; +using LINGYUN.Abp.Emailing.Platform; using LINGYUN.Abp.EventBus.CAP; -using LINGYUN.Abp.Http.Client.Wrapper; +using LINGYUN.Abp.Exporter.MiniExcel; +using LINGYUN.Abp.Gdpr; +using LINGYUN.Abp.Gdpr.Web; using LINGYUN.Abp.Identity.AspNetCore.Session; -using LINGYUN.Abp.Identity.EntityFrameworkCore; using LINGYUN.Abp.Identity.OrganizaztionUnits; using LINGYUN.Abp.Identity.Session.AspNetCore; using LINGYUN.Abp.IdentityServer; -using LINGYUN.Abp.IdentityServer.EntityFrameworkCore; using LINGYUN.Abp.IdentityServer.LinkUser; using LINGYUN.Abp.IdentityServer.Portal; using LINGYUN.Abp.IdentityServer.Session; using LINGYUN.Abp.IdentityServer.WeChat.Work; using LINGYUN.Abp.Localization.CultureMap; -using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; -using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; -using LINGYUN.Abp.Sms.Aliyun; -using LINGYUN.Platform.EntityFrameworkCore; +using LINGYUN.Abp.Sms.Platform; using LY.MicroService.IdentityServer.EntityFrameworkCore; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Volo.Abp; -using Volo.Abp.Account.Web; using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.Autofac; using Volo.Abp.Caching.StackExchangeRedis; -using Volo.Abp.FeatureManagement.EntityFrameworkCore; -using Volo.Abp.Identity; -using Volo.Abp.MailKit; using Volo.Abp.Modularity; -using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.PermissionManagement.Identity; -using Volo.Abp.SettingManagement.EntityFrameworkCore; namespace LY.MicroService.IdentityServer; @@ -50,47 +43,36 @@ namespace LY.MicroService.IdentityServer; typeof(AbpSerilogEnrichersApplicationModule), typeof(AbpSerilogEnrichersUniqueIdModule), typeof(AbpAspNetCoreSerilogModule), - typeof(AbpAccountWebIdentityServerModule), typeof(AbpAccountApplicationModule), + typeof(AbpAccountHttpApiModule), + typeof(AbpAccountWebIdentityServerModule), + typeof(AbpGdprApplicationModule), + typeof(AbpGdprHttpApiModule), + typeof(AbpGdprWebModule), typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule), typeof(AbpAutofacModule), typeof(AbpCachingStackExchangeRedisModule), - typeof(AbpIdentityEntityFrameworkCoreModule), - typeof(AbpIdentityApplicationModule), - - // 请勿混淆这两个模块, 他们各自都自己的职能 - // 此模块仅用于认证中心 typeof(AbpIdentityAspNetCoreSessionModule), - // 此模块可用于所有微服务 + typeof(AbpIdentityServerSessionModule), typeof(AbpIdentitySessionAspNetCoreModule), - - typeof(AbpIdentityServerEntityFrameworkCoreModule), - typeof(AbpIdentityServerSmsValidatorModule), + typeof(AbpIdentityServerSmsModule), typeof(AbpIdentityServerLinkUserModule), typeof(AbpIdentityServerPortalModule), typeof(AbpIdentityServerWeChatWorkModule), - typeof(AbpIdentityServerSessionModule), - typeof(AbpAuthenticationWeChatModule), typeof(AbpAuthenticationQQModule), + typeof(AbpAuthenticationWeChatModule), typeof(AbpIdentityOrganizaztionUnitsModule), - typeof(PlatformEntityFrameworkCoreModule), - typeof(AbpLocalizationManagementEntityFrameworkCoreModule), typeof(AbpPermissionManagementDomainIdentityModule), - typeof(AbpPermissionManagementEntityFrameworkCoreModule), - typeof(AbpSettingManagementEntityFrameworkCoreModule), - typeof(AbpFeatureManagementEntityFrameworkCoreModule), - typeof(AbpSaasEntityFrameworkCoreModule), typeof(IdentityServerMigrationsEntityFrameworkCoreModule), typeof(AbpDataDbMigratorModule), - //typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpAuditLoggingElasticsearchModule), // 放在 AbpIdentity 模块之后,避免被覆盖 typeof(AbpLocalizationCultureMapModule), - typeof(AbpCAPEventBusModule), - typeof(AbpMailKitModule), - typeof(AbpHttpClientWrapperModule), typeof(AbpAspNetCoreMvcWrapperModule), typeof(AbpAspNetCoreHttpOverridesModule), - typeof(AbpAliyunSmsModule) + typeof(AbpExporterMiniExcelModule), + typeof(AbpEmailingPlatformModule), + typeof(AbpSmsPlatformModule), + typeof(AbpCAPEventBusModule) )] public partial class IdentityServerModule : AbpModule { @@ -115,8 +97,8 @@ public partial class IdentityServerModule : AbpModule ConfigureCaching(configuration); ConfigureIdentity(configuration); - ConfigureVirtualFileSystem(); ConfigureFeatureManagement(); + ConfigureSettingManagement(); ConfigureLocalization(); ConfigureAuditing(configuration); ConfigureDataSeeder(); diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/LY.MicroService.IdentityServer.csproj b/aspnet-core/services/LY.MicroService.IdentityServer/LY.MicroService.IdentityServer.csproj index 80d242109..6454c49fe 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/LY.MicroService.IdentityServer.csproj +++ b/aspnet-core/services/LY.MicroService.IdentityServer/LY.MicroService.IdentityServer.csproj @@ -1,4 +1,4 @@ - + @@ -41,20 +41,13 @@ - - - - - - - @@ -65,29 +58,31 @@ - + + - - + + + + + - - - - + + diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml deleted file mode 100644 index 7172ddd34..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/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.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js deleted file mode 100644 index 55a88e52e..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/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.IdentityServer/Pages/Account/EmailConfirm.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml deleted file mode 100644 index 783ab7bb1..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/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.IdentityServer.Pages.Account.EmailConfirmModel -@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout -
-
-

@L["EmailConfirm"]

-
- - - @L["Cancel"] - @L["Submit"] - -
-
diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml.cs deleted file mode 100644 index a971f0df8..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/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.IdentityServer.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("EmailConfirmConfirmation", new - { - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash - }); - } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml deleted file mode 100644 index 39b14ef6b..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml +++ /dev/null @@ -1,13 +0,0 @@ -@page -@model LY.MicroService.IdentityServer.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.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs deleted file mode 100644 index 57084736e..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using System; -using System.Threading.Tasks; -using Volo.Abp.Account.Web.Pages.Account; - -namespace LY.MicroService.IdentityServer.Pages.Account; - -[AllowAnonymous] -public class EmailConfirmConfirmationModel : AccountPageModel -{ - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml deleted file mode 100644 index 96de45e7a..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml +++ /dev/null @@ -1,26 +0,0 @@ -@page -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.IdentityServer.Pages.Account.SendCodeModel -@inject IHtmlLocalizer L - -
-
-

@L["TwoFactor"]

-
- - - -
- -
-
- @L["SendVerifyCode"] -
- - @L["Login"] - - -
-
- diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml.cs deleted file mode 100644 index ed8c6efc4..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/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.IdentityServer.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 async virtual 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 async virtual 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.IdentityServer/Pages/Account/SendEmailConfirm.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml deleted file mode 100644 index 7c4e9e79e..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/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.IdentityServer.Pages.Account.SendEmailConfirmModel -@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout -
-
-

@L["EmailConfirm"]

-
- - @L["Cancel"] - - -
-
diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml.cs deleted file mode 100644 index 8db8a73e9..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/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.IdentityServer.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.IdentityServer/Pages/Account/UseRecoveryCode.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml deleted file mode 100644 index 479fd4aa2..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml +++ /dev/null @@ -1,4 +0,0 @@ -@page -@model LY.MicroService.IdentityServer.Pages.Account.UseRecoveryCodeModel -@{ -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml.cs deleted file mode 100644 index 14ab35f03..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.RazorPages; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - public class UseRecoveryCodeModel : PageModel - { - public void OnGet() - { - } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml deleted file mode 100644 index 9a9b65122..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml +++ /dev/null @@ -1,26 +0,0 @@ -@page -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.IdentityServer.Pages.Account.VerifyAuthenticatorCodeModel -@inject IHtmlLocalizer L -
-
-
- - -
- - - -
-
- - -
- @L["VerifyAuthenticatorCode"] - - @L["Login"] - -
-
-
\ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs deleted file mode 100644 index 659d676fd..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/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.IdentityServer.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 async virtual 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.IdentityServer/Pages/Account/VerifyCode.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml deleted file mode 100644 index 3f3d1f91d..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/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.IdentityServer.Pages.Account.VerifyCodeModel -
-
-
- - - - -
- -
- - - - - -
- @L["VerifyAuthenticatorCode"] -
- - @L["ReSendVerifyCode"] - -
-
-
diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml.cs deleted file mode 100644 index f11728bbf..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/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.IdentityServer.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 async virtual 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.IdentityServer/Pages/Index.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Index.cshtml.cs index 63dfb2273..111c7c4c9 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Index.cshtml.cs +++ b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Index.cshtml.cs @@ -1,11 +1,10 @@ using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; -namespace LY.MicroService.IdentityServer.Pages +namespace LY.MicroService.IdentityServer.Pages; + +public class IndexModel : AbpPageModel { - public class IndexModel : AbpPageModel + public void OnGet() { - public void OnGet() - { - } } } \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/_ViewImports.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/_ViewImports.cshtml index 33a021db4..c1da1f5f1 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/_ViewImports.cshtml +++ b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/_ViewImports.cshtml @@ -1,5 +1,4 @@ -@using Microsoft.Extensions.Configuration -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI @addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap @addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.Development.json b/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.Development.json index 4e7fbafda..3233664d0 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.Development.json @@ -6,7 +6,8 @@ "secret": "1q2w3E*", "nodes": "http://127.0.0.1:5000", "name": "AuthServer", - "tag": "AuthServer" + "tag": "AuthServer", + "configCacheEncrypt": true }, "App": { "CorsOrigins": "http://127.0.0.1:3100", @@ -44,16 +45,10 @@ } }, "ConnectionStrings": { - "Default": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AppPlatform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None" + "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "CAP": { "EventBus": { @@ -86,6 +81,12 @@ "Configuration": "127.0.0.1,defaultDatabase=10", "InstanceName": "LINGYUN.Abp.Application" }, + "RemoteServices": { + "Platform": { + "BaseUrl": "http://127.0.0.1:30025", + "UseCurrentAccessToken": false + } + }, "AuthServer": { "Authority": "http://127.0.0.1:44385/", "Audience": "lingyun-abp-application", @@ -132,11 +133,11 @@ }, "Serilog": { "MinimumLevel": { - "Default": "Debug", + "Default": "Information", "Override": { - "System": "Debug", - "Microsoft": "Debug", - "DotNetCore": "Debug" + "System": "Warning", + "Microsoft": "Warning", + "DotNetCore": "Information" } }, "WriteTo": [ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.json b/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.json index 4c8758024..f792656a8 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.json +++ b/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.json @@ -11,7 +11,6 @@ "DefaultSalt": "sf&5)s3#" }, "Json": { - "OutputDateTimeFormat": "yyyy-MM-dd HH:mm:ss", "InputDateTimeFormats": [ "yyyy-MM-dd HH:mm:ss", "yyyy-MM-ddTHH:mm:ss" @@ -19,7 +18,7 @@ }, "Serilog": { "MinimumLevel": { - "Default": "Debug", + "Default": "Information", "Override": { "System": "Warning", "Microsoft": "Warning", diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/gulpfile.js b/aspnet-core/services/LY.MicroService.IdentityServer/gulpfile.js deleted file mode 100644 index 8ff19f245..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/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.IdentityServer/package.json b/aspnet-core/services/LY.MicroService.IdentityServer/package.json index b5eab08c6..0703f2037 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/package.json +++ b/aspnet-core/services/LY.MicroService.IdentityServer/package.json @@ -3,6 +3,7 @@ "name": "my-app-identityserver", "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.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css index 7e4dfe1e8..ffdf0f023 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css +++ b/aspnet-core/services/LY.MicroService.IdentityServer/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.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css index ea60ea4d7..7ed4af7d2 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css +++ b/aspnet-core/services/LY.MicroService.IdentityServer/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.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf index 1fbb1f7c3..0f82a8360 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 index 5d2802169..3c5cf97ec 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf index 549d68dc0..9ee1919dc 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 index 18400d7fa..57d917965 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf index bb2a86956..1c10972ec 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 index 758dd4f60..16721020f 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf index 8c5864c42..3bcb67ffc 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 index f94bec227..fbafb2222 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/abp/core/abp.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/abp/core/abp.js index ad1d23844..021d3a86f 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/abp/core/abp.js +++ b/aspnet-core/services/LY.MicroService.IdentityServer/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); + } } }; diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js new file mode 100644 index 000000000..635baffa8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hi={days:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],daysShort:["सूर्य","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],daysMin:["र","सो","मं","बु","गु","शु","श"],months:["जनवरी","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्टूबर","नवंबर","दिसम्बर"],monthsShort:["जन","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितं","अक्टूबर","नवं","दिसम्बर"],today:"आज",monthsTitle:"महीने",clear:"साफ",weekStart:1,format:"dd / mm / yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js new file mode 100644 index 000000000..8b34bce0f --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js new file mode 100644 index 000000000..f9decf9a2 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hu={days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],daysShort:["vas","hét","ked","sze","csü","pén","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"töröl",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js new file mode 100644 index 000000000..a1cf653d3 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"],daysShort:["Կիր","Երկ","Երե","Չոր","Հին","Ուրբ","Շաբ"],daysMin:["Կի","Եկ","Եք","Չո","Հի","Ու","Շա"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հնվ","Փետ","Մար","Ապր","Մայ","Հուն","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ամիսնէր"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js new file mode 100644 index 000000000..bc9258d65 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],daysShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],daysMin:["Mg","Sn","Sl","Rb","Km","Jm","Sb"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],today:"Hari Ini",monthsTitle:"Bulan",clear:"Kosongkan",weekStart:0,format:"dd-mm-yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js new file mode 100644 index 000000000..f49bd18cc --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js new file mode 100644 index 000000000..7e1adbb95 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js new file mode 100644 index 000000000..cc30766ff --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",monthsTitle:"Mesi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js new file mode 100644 index 000000000..e321f04ff --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"],daysShort:["日","月","火","水","木","金","土"],daysMin:["日","月","火","水","木","金","土"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",titleFormat:"yyyy年mm月",clear:"クリア"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js new file mode 100644 index 000000000..84f14c0e9 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js new file mode 100644 index 000000000..bf2abc5d8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kh={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"},a.fn.datepicker.deprecated('The language code "kh" is deprecated and will be removed in 2.0. For Khmer support use "km" instead.')}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js new file mode 100644 index 000000000..f4e2f3f1a --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kk={days:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],daysShort:["Жек","Дүй","Сей","Сәр","Бей","Жұм","Сен"],daysMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],months:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthsShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],today:"Бүгін",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js new file mode 100644 index 000000000..648d83f84 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.km={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js new file mode 100644 index 000000000..9751ee5c2 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ko={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],today:"오늘",clear:"삭제",format:"yyyy-mm-dd",titleFormat:"yyyy년mm월",weekStart:0}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js new file mode 100644 index 000000000..43393409e --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kr={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},a.fn.datepicker.deprecated('The language code "kr" is deprecated and will be removed in 2.0. For korean support use "ko" instead.')}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js new file mode 100644 index 000000000..da78ea85f --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.lt={days:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"],daysShort:["S","Pr","A","T","K","Pn","Š"],daysMin:["Sk","Pr","An","Tr","Ke","Pn","Št"],months:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthsShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],today:"Šiandien",monthsTitle:"Mėnesiai",clear:"Išvalyti",weekStart:1,format:"yyyy-mm-dd"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js new file mode 100644 index 000000000..89cea00f8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.lv={days:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],daysShort:["Sv","P","O","T","C","Pk","S"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],months:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],monthsTitle:"Mēneši",today:"Šodien",clear:"Nodzēst",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js new file mode 100644 index 000000000..c65a89164 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbriši",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js new file mode 100644 index 000000000..46423f758 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mk={days:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],daysShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],daysMin:["Не","По","Вт","Ср","Че","Пе","Са"],months:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],today:"Денес",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js new file mode 100644 index 000000000..6ebaec9d8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mn={days:["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],daysShort:["Ням","Дав","Мяг","Лха","Пүр","Баа","Бям"],daysMin:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],months:["Хулгана","Үхэр","Бар","Туулай","Луу","Могой","Морь","Хонь","Бич","Тахиа","Нохой","Гахай"],monthsShort:["Хул","Үхэ","Бар","Туу","Луу","Мог","Мор","Хон","Бич","Тах","Нох","Гах"],today:"Өнөөдөр",clear:"Тодорхой",format:"yyyy.mm.dd",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js new file mode 100644 index 000000000..2f25159da --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mar={days:["रविवार","सोमवार","मंगळवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],daysShort:["रवि","सोम","मंगळ","बुध","गुरु","शुक्र","शनि"],daysMin:["र","सो","मं","बु","गु","शु","श"],months:["जानेवारी","फेब्रुवारी","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टेंबर","ऑक्टोबर","नोव्हेंबर","डिसेंबर"],monthsShort:["जाने.","फेब्रु.","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टें.","ऑक्टो.","नोव्हें.","डिसें."],today:"आज",monthsTitle:"महीने",clear:"हटवा",weekStart:1,format:"dd / mm / yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js new file mode 100644 index 000000000..47efafdc2 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini",clear:"Bersihkan"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js new file mode 100644 index 000000000..85d3146df --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js new file mode 100644 index 000000000..af977b71e --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js new file mode 100644 index 000000000..0c5136e44 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.no={days:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],daysShort:["søn","man","tir","ons","tor","fre","lør"],daysMin:["sø","ma","ti","on","to","fr","lø"],months:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthsShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],today:"i dag",monthsTitle:"Måneder",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js new file mode 100644 index 000000000..630fa16b9 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.oc={days:["Dimenge","Diluns","Dimars","Dimècres","Dijòus","Divendres","Dissabte"],daysShort:["Dim","Dil","Dmr","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dr","dc","dj","dv","ds"],months:["Genièr","Febrièr","Març","Abrial","Mai","Junh","Julhet","Agost","Setembre","Octobre","Novembre","Decembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Dec"],today:"Uèi",monthsTitle:"Meses",clear:"Escafar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js new file mode 100644 index 000000000..ffb30ec8b --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.pl={days:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],daysShort:["Niedz.","Pon.","Wt.","Śr.","Czw.","Piąt.","Sob."],daysMin:["Ndz.","Pn.","Wt.","Śr.","Czw.","Pt.","Sob."],months:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthsShort:["Sty.","Lut.","Mar.","Kwi.","Maj","Cze.","Lip.","Sie.","Wrz.","Paź.","Lis.","Gru."],today:"Dzisiaj",weekStart:1,clear:"Wyczyść",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js new file mode 100644 index 000000000..2d3f8afda --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js new file mode 100644 index 000000000..e2b4e64d7 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js new file mode 100644 index 000000000..5fff2986d --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js new file mode 100644 index 000000000..e520c9573 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["rs-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"},a.fn.datepicker.deprecated('This language code "rs-latin" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian latin support use "sr-latin" instead.')}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js new file mode 100644 index 000000000..ba95ae298 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.rs={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"},a.fn.datepicker.deprecated('This language code "rs" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian support use "sr" instead.')}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js new file mode 100644 index 000000000..52bc010b9 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Месяцы"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js new file mode 100644 index 000000000..b9746b8fc --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.si={days:["ඉරිදා","සඳුදා","අඟහරුවාදා","බදාදා","බ්‍රහස්පතින්දා","සිකුරාදා","සෙනසුරාදා"],daysShort:["ඉරි","සඳු","අඟ","බදා","බ්‍රහ","සිකු","සෙන"],daysMin:["ඉ","ස","අ","බ","බ්‍ර","සි","සෙ"],months:["ජනවාරි","පෙබරවාරි","මාර්තු","අප්‍රේල්","මැයි","ජුනි","ජූලි","අගෝස්තු","සැප්තැම්බර්","ඔක්තෝබර්","නොවැම්බර්","දෙසැම්බර්"],monthsShort:["ජන","පෙබ","මාර්","අප්‍රේ","මැයි","ජුනි","ජූලි","අගෝ","සැප්","ඔක්","නොවැ","දෙසැ"],today:"අද",monthsTitle:"මාස",clear:"මකන්න",weekStart:0,format:"yyyy-mm-dd"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js new file mode 100644 index 000000000..79a9267fd --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],daysMin:["Ne","Po","Ut","St","Št","Pia","So"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes",clear:"Vymazať",weekStart:1,format:"d.m.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js new file mode 100644 index 000000000..831cf7390 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],daysShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],daysMin:["Ne","Po","To","Sr","Če","Pe","So"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js new file mode 100644 index 000000000..8c586055a --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sq={days:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"],daysShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],daysMin:["Di","Hë","Ma","Më","En","Pr","Sht"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","Nën","Dhjet"],monthsTitle:"Muaj",today:"Sot",weekStart:1,format:"dd/mm/yyyy",clear:"Pastro"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js new file mode 100644 index 000000000..c6b7001ac --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js new file mode 100644 index 000000000..4e46dbf64 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sr={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js new file mode 100644 index 000000000..7ab6becb9 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sv={days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],daysShort:["sön","mån","tis","ons","tor","fre","lör"],daysMin:["sö","må","ti","on","to","fr","lö"],months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js new file mode 100644 index 000000000..e7909494a --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ta={days:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],daysShort:["ஞாயி","திங்","செவ்","புத","வியா","வெள்","சனி"],daysMin:["ஞா","தி","செ","பு","வி","வெ","ச"],months:["ஜனவரி","பிப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்டு","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்"],monthsShort:["ஜன","பிப்","மார்","ஏப்","மே","ஜூன்","ஜூலை","ஆக","செப்","அக்","நவ","டிச"],today:"இன்று",monthsTitle:"மாதங்கள்",clear:"நீக்கு",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js new file mode 100644 index 000000000..104b6dd95 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tg={days:["Якшанбе","Душанбе","Сешанбе","Чоршанбе","Панҷшанбе","Ҷумъа","Шанбе"],daysShort:["Яшб","Дшб","Сшб","Чшб","Пшб","Ҷум","Шнб"],daysMin:["Яш","Дш","Сш","Чш","Пш","Ҷм","Шб"],months:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Имрӯз",monthsTitle:"Моҳҳо",clear:"Тоза намудан",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js new file mode 100644 index 000000000..1e398ba8b --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.th={days:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"],daysShort:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],daysMin:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],today:"วันนี้"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js new file mode 100644 index 000000000..716edef2e --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tk={days:["Ýekşenbe","Duşenbe","Sişenbe","Çarşenbe","Penşenbe","Anna","Şenbe"],daysShort:["Ýek","Duş","Siş","Çar","Pen","Ann","Şen"],daysMin:["Ýe","Du","Si","Ça","Pe","An","Şe"],months:["Ýanwar","Fewral","Mart","Aprel","Maý","Iýun","Iýul","Awgust","Sentýabr","Oktýabr","Noýabr","Dekabr"],monthsShort:["Ýan","Few","Mar","Apr","Maý","Iýn","Iýl","Awg","Sen","Okt","Noý","Dek"],today:"Bu gün",monthsTitle:"Aýlar",clear:"Aýyr",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js new file mode 100644 index 000000000..7889b1135 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js new file mode 100644 index 000000000..a555be800 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js new file mode 100644 index 000000000..a0a8f213c --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["uz-cyrl"]={days:["Якшанба","Душанба","Сешанба","Чоршанба","Пайшанба","Жума","Шанба"],daysShort:["Якш","Ду","Се","Чор","Пай","Жу","Ша"],daysMin:["Як","Ду","Се","Чо","Па","Жу","Ша"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Бугун",clear:"Ўчириш",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ойлар"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js new file mode 100644 index 000000000..2f58e343e --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["uz-latn"]={days:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"],daysShort:["Yak","Du","Se","Chor","Pay","Ju","Sha"],daysMin:["Ya","Du","Se","Cho","Pa","Ju","Sha"],months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","Iyn","Iyl","Avg","Sen","Okt","Noy","Dek"],today:"Bugun",clear:"O'chirish",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Oylar"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js new file mode 100644 index 000000000..3311d23f8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],daysMin:["CN","T2","T3","T4","T5","T6","T7"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js new file mode 100644 index 000000000..8e6920b0c --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"选择月份",clear:"清除",format:"yyyy-mm-dd",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js new file mode 100644 index 000000000..5d2c0b55a --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["zh-TW"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["週日","週一","週二","週三","週四","週五","週六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"月份",format:"yyyy/mm/dd",weekStart:0,titleFormat:"yyyy年mm月",clear:"清除"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js index a3becee53..a372d5eb5 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js @@ -305,8 +305,8 @@ end = moment(val, this.locale.format); } if (start !== null && end !== null) { - this.setStartDate(start); - this.setEndDate(end); + this.setStartDate(start.startOf('day')); + this.setEndDate(end.startOf('day')); } } } @@ -370,10 +370,6 @@ this.container.find('.calendar-time').hide(); } - //can't be used together for now - if (this.timePicker && this.autoApply) - this.autoApply = false; - if (this.autoApply) { this.container.addClass('auto-apply'); } @@ -386,9 +382,7 @@ this.container.find('.drp-calendar.left').addClass('single'); this.container.find('.drp-calendar.left').show(); this.container.find('.drp-calendar.right').hide(); - if (!this.timePicker && this.autoApply) { - this.container.addClass('auto-apply'); - } + } if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) { @@ -898,6 +892,7 @@ // hours // + html = 's in some browsers, due to the limited stylability of `s in some browsers, due to the limited stylability of `